前言

几年前,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 应用程序。

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

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

  1. electron 安装import_Electron: 从零开始写一个记事本app

    Electron介绍 简单来说,Electron就是可以让你用Javascript.HTML.CSS来编写运行于Windows.macOS.Linux系统之上的桌面应用的库.本文的目的是通过使用Ele ...

  2. electron的第一次亲密接触——一个数据提取工具的前世今生(一)

    特别说明,本文并非纯粹的技术贴,所谓的前世今生,文章中讲述了许多这个工具软件的制作背景以及个人的学习过程等内容. 历时一个星期,对electron.js进行了初步的探索,然后又花费了一天的时间来梳理逻 ...

  3. WEB跨平台桌面程序构建工具对比(Electron、Tauri、Wails)

    楔子 WEB 跨平台 桌面应用程序 顾名思义就是用 JavaScript.HTML.CSS 等前端技术构建跨平台的桌面应用,WEB 负责 GUI 渲染并与后端(如 Node.js.Python.Rus ...

  4. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  5. Python 是否是下一个 PHP?为什么?

    前几天和一个看好 Python 的 Rails 开发者聊天,他看好 Python 的原因就是 PHP 统治今天的网络应用开发.而 Python 很像下一个 PHP . 『下一个 PHP』如何定义?是指 ...

  6. 按下回车键指向下一个位置的一个函数

    function  tofocus(itemname)     // 按回车置下一个位置  2         {  3              var  a  4             a = ...

  7. Mybatis 获取当前序列和下一个序列值 以及在一个方法中写多条SQL 语句

    目录 1.Mybatis 获取当前序列和下一个序列值 2.Mybatis 在一个方法中写多条SQL 语句 1.Mybatis 获取当前序列和下一个序列值 #获取当前序列值 select XXX_seq ...

  8. 商品列表选择尺寸和颜色高亮,并且把选择的数据传递到下一个页面

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 需求:商品列表选择属性,给中的属性显示高亮,并且把选择的数据记录下来传递到下一个页面. 项目下载地址:点击去下 ...

  9. 通用权限管理系统组件 (GPM - General Permissions Manager) 权限管理以前我们都是自己开发,可是到下一个系统又不适用,又改,加上人员流动大,管理很混乱...

    为什么80%的码农都做不了架构师?>>>    权限管理以前我们都是自己开发,可是到下一个系统又不适用,又改,加上人员流动大,管理很混乱 Ψ吉日嘎拉 采用通用权限管理系统,这些烦恼就 ...

最新文章

  1. SqlDataSource 執行資料篩選
  2. Nacos更新配置参数不生效
  3. TCp传输粘包问题
  4. 史上最可爱的关系抽取指南?从一条规则到十个开源项目
  5. 关于autotrace和explain plan是否可以反映真实的执行计划
  6. 硬核评测:企业上云的极速存储挑战,华为云全新极速IO云硬盘性能评测
  7. div css网页设计源代码_HTML+CSS网页设计,企业网站资讯文章布局样式
  8. javascript学习----window对象的学习与总结
  9. HDU-4292-Food(最大流匹配问题)
  10. github 如何添加项目代码
  11. 什么是控制台应用程序
  12. UG GC工具箱中的齿轮与弹簧
  13. php自动加载比直接加载慢,php之自动加载(懒加载)
  14. Building a Hypermedia-Driven RESTful Web Service
  15. autojs autoxjs text 选不中 失效 uiselector
  16. maven是干嘛的?
  17. 认识Oracle DBFS文件系统
  18. mini2440 电源插座的问题
  19. 2021年美亚杯个人资格赛(记录第一次的取证之旅)
  20. Linux中ifconfig命令失效

热门文章

  1. 8- OpenCV+TensorFlow 入门人工智能图像处理-浮雕效果油画效果
  2. 安卓源码(一)下载与同步
  3. 听音室-HIFI入门之5000元内高品质桌面箱推荐
  4. 新零售业务中台设计及产品体系解决方案
  5. sql解析json格式字段、sql关联json格式字段,mysql解析json、sql解析json字符串
  6. 数学建模--Excel技巧
  7. 中冠百年|工薪阶层家庭投资理财的禁忌有哪些
  8. 2021年京东Android岗面试必问,高级面试题+解析
  9. RTU和PLC的区别有哪些?
  10. BrainGNN:Interpretable Brain Graph Neural Network for fMRI