[展示介绍] Neutralinojs: 小众的HTA继承者
Neutralinojs
如果你觉得微软的HTA非常小巧、简单、便捷是一个有一定价值的技术,又为它的古老的IE内核、不跨平台、闭源等问题发愁,那Neutralinojs绝对是一个好方案。它支持64位Windows,Linux,macOS,并且直接调用系统Webview,在Windows上是Edge Webview2,几乎完全支持HTML5。同时又像HTA那样可以在JS代码中直接访问系统资源,堪称HTA设计思想的完美继承者。
很多人将Neutralinojs和Electron对比,但两者解决的不是一类问题。Neutralinojs的目标是用Web技术开发小型应用,比如只有几MB的小工具。在这个领域上,Neutralinojs非常值得一试。
Neutralinojs的结构
根据官网教程很容易将Neutralinojs想象成一个复杂的JS工具。但事实上它的设计十分简单,和HTA相似。
一个Neutralinojs程序包含两部分
- Neutralinojs可执行文件
- HTML,CSS,JS文件包
Neutralinojs可执行文件是Neutralinojs预编译的,完全不需要修改它,就和HTA宿主程序一样,我们只要编写HTML,CSS,JS文件即可
(图源: https://neutralino.js.org/docs/contributing/architecture)
Neutralinojs也支持用别的语言拓展后端,既可以用传统的HTTP Request,也可以用内置的Web Socket拓展,但是这是个一般不用不能没有的功能: 轻量级的软件如果加上一个Java写的服务器就会变得臃肿,用C++就难以跨平台,只有lua这种非常轻量的解释型语言适合做Neutralinojs的后端。
寻找合适的后端语言
Neutralinojs没有指定的后端语言,你可以用任何语言写一个Web后端。但是要充分发挥Neutralinojs"小巧"的优势,必然要选一个同样小巧的后端。具体来说,要做到:
- 体积小,后端最好应当小于5MB
- 具有易用的轻量级Web框架
- 具有不依赖系统的、丰富的标准库和第三方库
可选的几个方案:
方案 | 优点 | 缺点 |
---|---|---|
Lua/MoonScript | 体积非常小,只需700KB | 第三方库不算多(有lapis这样的网络框架) |
Python | 有成熟的Web框架(flask)和丰富的第三方库 | 体积稍大,需8MB+ |
GraalVM | 成熟的Java标准库,不错的性能 | GraalVM编译出的镜像文件不一定小,而且很多库无法用GraalVM |
Go,Dart | 体积小、库多 | 语法乐色 |