前些天开发了一个 macOS 应用来解决窗口切换麻烦的问题: t/557042#reply73
第一个版本是用 Electron 实现的(妄图 Javascript 一统天下),但是由于这个软件用到了很多 macOS API 必须通过 Objective-C 去调用,只能通过类似 node-ffi 的方式完成。最后调试起来比较蛋疼,而且打包的体积过大。
第二个版本(也就是上面的链接里看到的版本)是用 MacGap + Vue 实现的,需要写一些 Objective-C 的代码,同时 OC 和 Javascript 的交互也变得更容易了(至少我觉得比 node-ffi 好用)。打包的体积也可以接受,只有 2M 多。然而总有用户反馈有各种奇奇怪怪的 bug 以及卡顿。
这里卡顿其实并非 Javascript 的锅了,虽然 OC 和 JS 的交互理论上会消耗一部分性能,但是更多是因为 Webview 本身渲染就比较低效,窗口切来切去的经常出现残影。
macOS Webview 本身的一些 bug 甚至导致在某些低版本系统上直接 crash,当时用 Vue 画出来的界面长这个样子
最后还是把用 Vue 写的渲染部分用 Objective-C 重构了,顺畅多了。。
所以 Javascript 仍然不太适合写交互比较频繁的应用(就像窗口切换这种),更适合有跨平台需求的或者对交互性能要求不高的界面。
不得不说用 Javascript + Vue 写界面本身是比用 Cocoa + OC 写要舒服的多的。。
![]() | 1 xcodebuild OP 微博图床似乎搞成了 refer 识别同时只对上传者可见? |
![]() | 2 xcodebuild OP 补充一下图。。 ### Vue 写的 https://i.bmp.ovh/imgs/2019/04/6c4d0404068dc696.png ### Cocoa 写的 https://i.bmp.ovh/imgs/2019/04/6c4d0404068dc696.png |
![]() | 3 YOOHUU 2019-04-26 11:12:54 +08:00 图全挂... |
![]() | 4 xcodebuild OP @DAPTX4869 v 站的评论怎么发图来着,我记得是直接贴图片链接就行才对啊- - 超过时间也不让我编辑了 |
![]() | 5 vanishcode 2019-04-26 11:16:32 +08:00 via Android 我还是老老实实用原生开发= =,electron 太大了。之前想开发过一个 menu bar 上的 app,用的 quark shell。结果也是各种不方便=。= |
![]() | 6 xcodebuild OP @vanishcode 是的,我现在发现写 Objective-C 好像也没什么不好的 有跨平台需求再用 Electron 吧 |
![]() | 7 YOOHUU 2019-04-26 11:19:23 +08:00 @codefalling #4 到现在我都不知道评论咋发图...markdown 也不行 |
![]() | 9 xcodebuild OP @binaryify 怪不得我记得以前我发过图片来着。。。微博图床不能用了随便找了个 v 站又不识别 |
![]() | 10 H0H 2019-04-26 12:05:41 +08:00 Javascript 跨平板桌面版肯定不成熟嘛,非马后炮。其实想一想,如果成熟,那主流跨平台方案早是 JS+HTML+CSS 了 |
![]() | 11 xcodebuild OP |
![]() | 12 Pastsong 2019-04-26 12:09:25 +08:00 via Android 不怕踩坑可以用 react-native-{windows,macos} |
![]() | 13 xcodebuild OP @Pastsong 怕了 Cocoa 真香 |
![]() | 14 murmur 2019-04-26 12:15:37 +08:00 @codefalling 迅雷以前不是自研的 directui 么 |
15 walter211 2019-04-26 12:16:46 +08:00 ![]() 坐等 flutter |
![]() | 17 xcodebuild OP @murmur 以前是的,新版似乎已经是 electron 了,挺卡的 |
18 siyushin 2019-04-26 13:08:24 +08:00 ![]() 提个小建议:把快捷键名和 App 名放的近一点,一眼就可以看到,不必再目光水平左移…… |
![]() | 19 frankmdong 2019-04-26 13:13:16 +08:00 |
![]() | 20 xcodebuild OP @siyushin 有道理,感谢反馈 |
![]() | 21 xcodebuild OP @frankmdong 既然已经动手了估计是撑不了多久,故意对上传者可见其他人不可见这个设定有点坑人。。 |
![]() | 22 Sapp 2019-04-26 13:41:55 +08:00 我现在在用 electron 写一个标注软件,到目前为止性能我觉得还行,至少可以让我流畅的在一张图上标注几十个对象,而且开发速度快,可以用的库以及 UI 框架多,开发完自带三端适配,如果不需要和原生大量交互,electron 还是可以的。 |
![]() | 23 xcodebuild OP |
![]() | 24 ryougifujino 2019-04-26 14:05:03 +08:00 我记得 vscode 就是 electron 写的,不也挺好? |
![]() | 25 xcodebuild OP @ryougifujino 嗯只能说微软牛逼 |
26 impl 2019-04-26 18:49:25 +08:00 via Android 用 typescript 试试? |
![]() | 27 flynaj 2019-04-26 19:41:43 +08:00 via Android winxp 就用过 Javascript,后来的系统也没有用了。 |
![]() | 28 jjjjim 2019-04-27 14:40:17 +08:00 |
![]() | 29 Dawnki 2019-05-02 17:49:41 +08:00 electron 做一些小工具打个包至少也要 100M 起步..Orz |