用 JS 开发 PC 原生 APP,走 C++的路,让 C++无路可走

2023-06-25 10:43:32 +08:00
 setoutsoft

折腾了半年,开发的用 js 开发原生 APP 的框架已经基本成熟了。 目前用这个框架开发了 5 个项目:一个高仿扫雷,一个聚合直播播放器,还有 3 个小项目。 全部逻辑使用 js 实现,使用 vscode ,还支持 js 代码调试及 api 提示。 所有代码全部开源(注意开源协议) 代码仓库: https://github.com/soui4js/soui4js 官网: https://soui4js.com

2320 次点击
所在节点    程序员
12 条回复
pursuer
2023-06-25 11:35:22 +08:00
很多场合语言已经不重要了,生态很重要,node 凭借先发优势,deno 都望尘莫及,quickjs 也就更加不明朗,也许 txiki.js 对此能有所帮助.
xjqxz2
2023-06-25 14:14:07 +08:00
这是啥原理用的是 native 还是 Electron
setoutsoft
2023-06-25 14:37:33 +08:00
@xjqxz2 native
setoutsoft
2023-06-25 14:44:19 +08:00
原理很简单。首先要有一个客户端框架,这里用的是我自己开发的 soui4, 然后使用一个 js 引擎,这里用的 quickjs 。然后使用 js 提供的机制将 oui4 的接口导出给 js 用就好了。
当然具体实现起来,你首先要知道导出哪些接口对于一个 UI 框架是够的,由于通常一个 UI 框架可能需要很多对象参与才能满足客户端开发的需求,随便导出几个函数到 JS 肯定是不行的;然后通常的 UI 框架可能是由各种 C++类实现的,C++又有各种继承,多态特性,JS 导出函数只能接受 C 函数,怎么样将这些 C++对象方便的导出到 JS 也是一个挑战。
这个项目里实现了一套 qjsbind ,提供了比较方便的导出 C++对象的能力。
archxm
2023-06-25 15:32:25 +08:00
soui ?以前搞 duilib 时,听说过。挺强的
ysc3839
2023-06-25 20:00:21 +08:00
注意:该“开源”代码仅仅是“公开源代码”而不是“开放源代码”,此代码的授权协议包含诸多限制,不是 Open Source Initiative (OSI)认可的“开放源代码协议”。
setoutsoft
2023-06-25 20:08:01 +08:00
@ysc3839 我可没说是免费的。
setoutsoft
2023-06-25 20:08:31 +08:00
开源只是让大家可以放心用。不代码免费商用。
zado
2023-06-26 09:59:05 +08:00
要是 UI 相关的 xml 能用 json 代替,lua 也可以使用 js 代替就更完美了。
setoutsoft
2023-06-26 10:30:42 +08:00
@zado UI 布局为什么要用 json 呢? XML 布局最重要的一个好处在于好阅读,json 阅读比 xml 差太多了了。如果说为了解析的性能,soui4js 里使用的 xml 模块支持 xml 的预编译,也就是将 xml 编译成二进制,加载速度比 json 快不知道多少了。
zado
2023-06-26 12:09:21 +08:00
@setoutsoft #10 我没有仔细了解,还以为是需要用 js 代码操作这些界面元素的。如果是直接编辑的话的确是 XML 更合适。
soui
2023-10-09 18:21:07 +08:00
非常好用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/951371

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX