NeutralinoJS成为Electron和Tauri的下一个劲敌?不自量力

前言

几年前,Web 开发人员进入桌面应用程序领域的唯一途径是 Electron 或 NW.js。但是这两者有比较大的问题:比较重、内存占用大,但解决方案对许多人来说很有吸引力。 Microsoft、Slack、Discord 等大公司对其进行了投资,但仍有许多人不想安装 9 个不同版本的 Chromium 来运行 9 个不同的应用程序。

NeutralinoJS的解法比较特殊,与其将整个 Node + Chromium 与每个应用程序打包在一起,为什么不重用每个操作系统附带的已经安装的浏览器? Linux 和 macOS 有 WebKit,而 Microsoft Windows 有 IE、Edge 和现在的 Chromium。 理论上这是一个绝妙的想法,但诸如对系统托盘、通知、文件系统访问、数据存储和安全性的本机支持等复杂性让许多人犹豫是否要将其付诸实践。

1.NeutralinoJS是什么?

Neutralinojs 是一个轻量级、可移植的桌面应用程序开发框架。 它允许您使用 JavaScript、HTML 和 CSS 开发轻量级的跨平台桌面应用程序。 同时,可以使用任何编程语言(通过扩展 IPC)扩展 Neutralinojs,并将 Neutralinojs 用作任何源文件的一部分(通过子进程 IPC)。

NeutralinoJS 由斯里兰卡程序员 Shalitha Suranga 于 2018 年发布,是首批支持 3 种不同桌面平台同时让 Web 开发人员非常容易使用的框架之一。 3 年后,NeutralinoJS 有自己的 Javascript 客户端库、对扩展的支持以及非常小的占用空间(< 3 MB)。

NeutralinoJS是Electron 和 Tauri 的下一个最佳替代品 !

与Tauri 需要安装 Rust 和一大堆其他东西相比,NeutralinoJS 是站在巨人的肩膀上。 它不需要学习一门新语言来利用本地功能。 它虽然缺乏庞大的 npm 生态系统,但支持 Neutralino 命名空间下的各种系统 API。比如:

  • Neutralino.init
  • Neutralino.app
  • Neutralino.computer
  • Neutralino.debug
  • Neutralino.filesystem
  • Neutralino.os
  • Neutralino.storage
  • Neutralino.window
  • Neutralino.events
  • Neutralino.extensions
  • Neutralino.updater

2.为何说Neutralinojs有实力成为Electron的替代品?

在 Electron 和 NWjs 中,必须安装 Node.js 和数百个依赖库。 嵌入式 Chromium 和 Node.js 使简单的应用程序变得臃肿。在大多数情况下,框架比您的应用程序源代码更重。 Neutralinojs 提供了一个轻量级和可移植的 SDK,它是 Electron 和 NW.js 的替代品。

Neutralinojs 不打包 Chromium,而是使用操作系统中现有的 Web 浏览器库(例如:Linux 上的 gtk-webkit2)。 Neutralinojs 为本机操作实施安全的 WebSocket 连接,并嵌入静态 Web 服务器来提供 Web 内容。 此外,它还为开发人员提供了一个内置的 JavaScript 客户端库。

如果可以构建网站,那么就可以构建跨平台桌面应用程序,因为 Neutralinojs 是一个使用 JavaScript、HTML 和 CSS 等 Web 技术创建本机桌面应用程序的框架。 您可以使用您最喜欢的前端框架(Angular、React、Svelte、Vue 等)来构建您的下一个 Neutralinojs 应用程序。

扫描二维码关注公众号,回复: 15054684 查看本文章

3.NeutralinoJS有什么特点?

3.1 Native API

Neutralinojs Javascript API 公开了对操作系统级功能的访问,例如文件操作、执行命令、显示本机对话框等。

3.2 便携和零依赖

运行 Neutralinojs 应用程序不需要额外的依赖项。最大的好处就是可以在一个平台上做所有平台的应用。不需要编译器!

3.3 跨平台支持

Neutralinojs 应用程序可以在 Linux、Windows、macOS、Web 和 Chrome 上运行。可以为所有主流的操作系统和网络浏览器发布单个便携式应用程序。

3.4 轻巧快速

一个简单的未压缩的 Neutralinojs 应用程序只有 ~2MB,而压缩后的应用程序大小约为 0.5MB。 事实上,它不会像任何其他基于 Chromium 的跨平台应用程序开发框架那样消耗物理内存或存储空间。

3.5 简单灵活

Neutralinojs 团队倾向于为程序员提供简单灵活的开发接口。 该框架具有简单的便携式自动更新程序和 CLI。 不用到处使用基于 OOP 的类和耗时的设置来使您的工作复杂化。

3.6 任何后端,任何前端

您可以使用任何具有您喜欢的功能(如 HMR)的前端框架来构建 Neutralinojs 应用程序。 此外,您可以将 Neutralinojs 用作任何带有子进程 IPC 的源文件的一部分,或者使用带有 IPC 扩展名的任何后端语言扩展 Neutralinojs API。

4.Electron vs Neutralionjs

Neutralionjs 与 Electron 的 API 兼容性为 0。 虽然Neutralionjs比electron更快,而且内存占用更低,但是不支持Node,没有 npm 生态系统,也没有庞大的社区支持。 将 Electron 应用程序迁移到 Neutralino 的最佳选择是将后端代码重写为本地编译语言,如 Go 或 Rust,或者将整个 NodeJS 打包为二进制文件。

目前总体来看,与Neutralionjs 相比,Electron 更好更可靠!

5.开始第一个NeutralinoJS项目?

5.1 NeutralinoJS安装

npm install -g @neutralinojs/neu

此时就可以全局使用 neu 命令。

5.2 Hello Neutralino

可以通过下面的命令初始化一个项目:

neu create <project-name>

在应用的代码库中运行上述命令会创建一个具有相同名称的目录。 之后要做的就是编辑 neutralino.config.json 文件。 可以通过编辑 2 个键:url 和 documentRoot 以将它们指向框架的构建目录。 对于 React,它是:

"documentRoot": "./build/",
"url": "/index.html",

可以通过如下命令开启调试:

neu run

此时应用程序应该在本机窗口中打开。

总之,相对于 Tauri,NeutralinoJS 非常易于设置和使用。当然,它几乎没有内置 Tauri 的所有功能,但您可以通过本机扩展轻松添加这些功能。

缺点:没有安装包,可执行文件没有图标等文件信息,纯二进制文件

解决办法(仅适用于windows):

因为没有加壳,使用resource tunner添加版本信息和图标(resource hacker修改失败)

再用innosetup构建安装程序,保证包括了resources.neu(你的代码),WebView2Loader.dll,yourappname-win_x64.exe

参考资料

https://dev.to/byteslash/what-is-neutralinojs-alternative-to-electron-5fjc

https://blog.notesnook.com/neutralinojs-next-best-alternative-to-electron-and-tauri/

https://neutralino.js.org/

https://github.com/neutralinojs/neutralinojs

猜你喜欢

转载自blog.csdn.net/weixin_44786530/article/details/130520554
今日推荐