Skip to content

Latest commit

 

History

History
30 lines (17 loc) · 3.72 KB

readme.md

File metadata and controls

30 lines (17 loc) · 3.72 KB

一个超级简单的(无需额外的 node_modules、编译环境、不限制编辑器)使用前端语言即可快速开发桌面程序,在可以简洁地调用几乎所有系统功能的情况下,程序体积小于 1M。

核心原理

使用 aardio 开发了一个含有 rpc 功能的程序。rpc 用于接收客户端原生代码并将运行结果传回客户端(客户端可以是 webview 或 nodejs 等任意支持 websoket 的程序,由用户自己决定)。

客户端使用 proxy 实现将用户编写的 js 代码转换为原生代码发送到 rpc 运行,通过一系列内部转换和数据交互,近一步实现更多的语法转换,例如除了普通的 json 交互外,还支持以同步异步的形式来实现多线程处理、支持函数、回调、遍历器等基础 rpc 没有的功能,以进一步达到使用 js 即可实现原生代码的能力。

当用户写好 js 代码后,通过手动或命令使用 winrar 或 7z 的自解压功能封装为可执行文件。

扩展功能

  • 智能提示:将原生 api 转换为 dts 文件,在编写 js 时,根据动态类型推导,自动进行属性、参数、使用说明等。
  • 语法高亮:由于变成了是使用 js 语法来写原生代码,所以可获取 js 语法高亮的一流支持。
  • 工程化:将常用的功能、模块、插件等封装为 npm 包,利用好社区生态,像 js 这样一周造出来的语言也能在使用量上久居世界排行前榜。
  • ...

为何本仓库不再继续开发?

一开始开发本程序时,主要想到是利用 js 生态去扩展 aardio 的能力边界。前期进行了大量功能设计和开发、验证、测试。在验证阶段,做了一些程序,这些程序也被 aardio 收录于宣传视频中,在 sys-shim 的宣传文章里有获得不少读者支持,再加上 aardio 使用协议中的:个人或企业可免费使用本软件开发商用、或非商用的应用程序使用 aardio 开发的软件不需要放置鸣谢链接、不需要声明使用 aardio 开发您可以基于任何目的(包括商用、修改及重分发)免费使用本软件开源代码,让我认为 aardio 的开放性(虽然内核不开源),可以继续支持我实现前端开发者可以便捷的开发桌面程序这一目标。

要实现这一目标就要把所有相关的配套都做好,比如命令行工具、模板、文档(可交互编辑运行)、智能提示等。所以花费了大量时间来做相关设计(功能、界面、底层交互逻辑等,因为如果不先考虑好后面改起来会很难受,也会对用户造成各种兼容问题)。

但是随着功能越来越完善,准备发布 1.x 分支,有一件事越来越让我觉得不得不去做,那就是希望得到 aardio 作者的明确许可

所以我向作者发了第一次邮件进行许可咨询,等了两天作者没有回复。然后我付款了 50 元之后,重新发邮件问了一下,得到的回复是这个项目违反了使用协议,主要是因为不可以基于本软件创作与本软件功能类似的软件,若要实现我的目的,请使用其他语言。假设最终解释权归作者所有,我理解的是:作者说了不可以基于本软件创作与本软件功能类似的软件。那么即使是没有分发部分文件、没有修改开发环境,使用的是 winrar 来生成压缩包,但只要有人通过 rpc 实现了一个 sys-shim 程序功能外的新功能,这一行为是不是也能被解释为基于本软件创作与本软件功能类似的软件

当然,理由就像是海绵里的水,只要愿找,总是有的。

所以决定停止发布 1.x 分支,停止更新此仓库,停止这两年来的折腾。