跳至主要內容

sys-shim

wll8大约 3 分钟

sys-shim

sys-shim 是什么?

sys-shim 目前是一个基于 windows 平台的轻量桌面应用开发框架,支持 win7 以上 windows 系统。它可以前端开发人员无需任何 js 以外的语言,不需要安装其他语言环境,即可开发桌面程序。

无需改造现有 web 系统的架构,通过 js 即可调用系统的 api,例如使用以下语句打开计算器:

await native.process.execute("calc")

为什么开发 sys-shim?

当我想开发一个简单的桌面程序,可是我只熟悉前端语言,由于精力有限暂时只考虑在用户较多的 windows 投入使用,我希望开发体验像在浏览器中一样,然后程序的使用体验像本地应用一样,调用本地文件、系统命令、后台运行、托盘菜单这些都没有问题。

以前使用过 electron ,由于它默认跨平台,所以开发时要求系统安装完整的编译环境,例如 pythonVisual Studio Build Tools,既占空间,网络环境特殊安装过程缓慢又容易出错,实现一点简单的功能,打包体积动辄上百兆,总觉得得不偿失。

我调研了一些常见的方案,经过对比,发现他们都不适合我,所以我开发了 sys-shim 。

为什么选择 sys-shim?

在 Electron 和 NWjs 中,就算是写一个简单的应用,您需要安装 Node.js 和数百个依赖库。内置的 Chromium 和 Node 使得简单的应用变得臃肿。sys-shim 提供了一个轻量级 SDK,它替代了 Electron 中与操作系统交互的部分。sys-shim 不打包 Chromium,而是使用操作系统中现有的网页浏览器(例如 webview)作为界面展示。这使得通过 sys-shim 开发过程相当简单,并且产生的体积很小,通常小于 2M。

对比

名称前端后端体积/内存 MB放弃原因备注
nodeguiopen in new windowchromiumnodejs100/100体积大
miniblink49open in new windowChromiumnodejs?/?体积大仅支持 window
NWjsopen in new windowChromiumnodejs100/100体积大
electronopen in new windowChromiumnodejs100/100体积大大项目推荐
Wailsopen in new windowwebviewgo8/?需使用其他语言有 go 经验推荐
Tauriopen in new windowwebviewrust1/?需使用其他语言有 rust 经验推荐
wpfopen in new window可选C#?/?需使用其他语言仅支持 window
Muonopen in new windowChromiumgo42/26需使用其他语言
Sciteropen in new windowSciterQuickJS5/?与普通浏览器和 nodejs 可能有差异停止维护
gluonopen in new window浏览器nodejs1/80生态小,例如没有找到托盘图标实现方式停止维护
neutralinoopen in new window浏览器API2/60生态小,示例少,没有 nodejs 生态可持续关注

体积/内存 MB 为个人评估值,不建议作为参考依据。

关于跨平台

目前 sys-shim 的 core 层不支持跨平台,不过不用担心,sys-shim 会封装一套 electron/neutralino 这些跨平台框架的 api ,当你有跨平台的需求时,可以方便进行框架切换。

即使没有跨端兼容层,至少界面和交互也是可以跨平台的,只需做极少适配即可。

上次编辑于:
贡献者: wll8