一个把网页版 SaaS 变成桌面 App 的应用,你需要什么样的 API?

2020-04-28 11:13:19 +08:00
 lindongwu11

我在参与维护 webcatalog,一个可以把网页版应用变成桌面 APP 的工具。我自己目前用它来加载本地服务器启动的网页版 TiddlyWiki,也就是本来纯网页版的工具,可以用它一键打包成可分发的 APP 。

我用这个而不是自己用 Electron 包装,是因为我不想处理打包、签名、右键菜单等等一大堆琐事。

除了可以打包成桌面 APP 以外,它还可以提供一些自定义的 NodeJS API (通过 PreloadScript),这样可能公司内网自己开发的纯网页 SaaS 也可以通过它来做一些 RPA (按键精灵)的功能了。

我还利用 PreloadScript 在 APP 启动时自动启动 TiddlyWiki 的本地服务器,监听 xxxx 端口,然后这个桌面 APP 打开 xxxx 端口,就能把本来需要通过命令行启动的 web app 打包成了一键启动的、能放到 Dock 里的 APP 了。


那么问题来了,

除了让用户自定义 PreloadScript 以外,我还想加一些预制的 API,来方便有需要的人快速开发有 NodeJS 能力的纯网页版 SaaS,比如把以下这两个功能暴露到 window.webcatalog 上:

我想征集一下大家觉得可以加哪些 API 进去?

4064 次点击
所在节点    分享创造
9 条回复
anUglyDog
2020-04-28 13:30:12 +08:00
其实大家都忽略了可以直接从浏览器把网站设置快捷方式的功能,我用了,挺好用的.设置新窗口打开,用起来就跟 app 一样.
lindongwu11
2020-04-28 15:53:37 +08:00
@anUglyDog 那个我用过,就是缺少了设置开机自启动、绑定为 menubar 快捷方式(类似词典查词)、隐藏导航栏、多 workspace 、自定义右键菜单等等我需要的功能,而且也不方便带配置导出分享给同事。所以我后来就还是找了个工具来做这事。
402645707
2020-04-29 21:29:14 +08:00
被题主的 Tiddlywiki 圈粉了,正在摸索使用其做知识元系统
lindongwu11
2020-05-02 10:19:40 +08:00
@402645707 可惜目前还不能在移动端编辑、查看私有内容,我还在研究怎么写 GithubSyncAdaptor 来解决这个问题。会技术的话可以去逛 https://groups.google.com/forum/#!forum/tiddlywiki 看各种高级的解决方案
charten
2020-05-02 23:47:22 +08:00
把网页当成应用那样添加到桌面?
之前有段时间在研究用 electron 把网页链接生成一个个桌面快捷方式,可以带自己的图标那种。windows 上快捷方式比较好弄,但是 mac 上,要生成一个.app 比较麻烦。electron 好用但是打出来包体积太大,要是一个软件一套 electron 主进程,我们开发会被我司的业务喷死的。所以现在我们是让公司内各种小工具小应用共享同一套主进程,反正都是网页嘛。现在他们业务又吵着要把各个应用添加到桌面。。。。。
Sapp
2020-05-04 11:25:43 +08:00
@charten #5 如果是公司内部,我记得有不带浏览器的 electron 封装,需要你自己电脑装的有 chrome
lindongwu11
2020-05-06 14:48:04 +08:00
@charten webcatalog 就有生成 Chrome 、Firefox 等浏览器快捷方式的功能,其实核心就是生成一个 Shell 脚本,然后带一个壳(这样可以有图标)。
反正我是觉得这样不够用的,我主要还是需要网页里能调用 nodejs API 。
lindongwu11
2020-05-06 14:48:38 +08:00
@charten 你想自己实现的话可以去抄一下 WebCatalog 里 Template 文件夹里的源码,有相关的 shell 脚本。
charten
2020-05-06 21:24:36 +08:00
@lindongwu11 谢谢 dalao,我找到了,是用那个 windows-shortcuts 的库吧?要是早点发现就不用自己傻傻去写了( QAQ )。我那时的设计是把启动参数带在快捷方式上,然后 electron 启动时判断是否带上那个参数,有的话就不进主界面了,直接展示那个快捷方式的界面。至于能不能在渲染进程用 node,我这边的处理是判断该页面的权限是否足够,够的话,创建 BrowserWindow 的时候就支持它使用 node 。
mac 上的话也是想处理成类似的,只不过 mac 只能创建网页快捷方式,带后缀很丑。看了下 chrome pwa 的实现是创建一个.app但.app 没办法直接生成,因为我这边没法生成签名。于是想用 swift 写个小应用,由这个应用唤醒 electron,把参数带过去。只是不知道怎么样把启动参数带进去那个小应用里。

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

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

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

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

© 2021 V2EX