V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lindongwu11
V2EX  ›  分享创造

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

  •  
  •   lindongwu11 · 2020-04-28 11:13:19 +08:00 · 4311 次点击
    这是一个创建于 1668 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    webcatalog

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

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


    那么问题来了,

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

    • 添加自定义右键菜单项
    • 控制鼠标移动、键盘输入

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

    9 条回复    2020-05-06 21:24:36 +08:00
    anUglyDog
        1
    anUglyDog  
       2020-04-28 13:30:12 +08:00
    其实大家都忽略了可以直接从浏览器把网站设置快捷方式的功能,我用了,挺好用的.设置新窗口打开,用起来就跟 app 一样.
    lindongwu11
        2
    lindongwu11  
    OP
       2020-04-28 15:53:37 +08:00
    @anUglyDog 那个我用过,就是缺少了设置开机自启动、绑定为 menubar 快捷方式(类似词典查词)、隐藏导航栏、多 workspace 、自定义右键菜单等等我需要的功能,而且也不方便带配置导出分享给同事。所以我后来就还是找了个工具来做这事。
    402645707
        3
    402645707  
       2020-04-29 21:29:14 +08:00
    被题主的 Tiddlywiki 圈粉了,正在摸索使用其做知识元系统
    lindongwu11
        4
    lindongwu11  
    OP
       2020-05-02 10:19:40 +08:00
    @402645707 可惜目前还不能在移动端编辑、查看私有内容,我还在研究怎么写 GithubSyncAdaptor 来解决这个问题。会技术的话可以去逛 https://groups.google.com/forum/#!forum/tiddlywiki 看各种高级的解决方案
    charten
        5
    charten  
       2020-05-02 23:47:22 +08:00
    把网页当成应用那样添加到桌面?
    之前有段时间在研究用 electron 把网页链接生成一个个桌面快捷方式,可以带自己的图标那种。windows 上快捷方式比较好弄,但是 mac 上,要生成一个.app 比较麻烦。electron 好用但是打出来包体积太大,要是一个软件一套 electron 主进程,我们开发会被我司的业务喷死的。所以现在我们是让公司内各种小工具小应用共享同一套主进程,反正都是网页嘛。现在他们业务又吵着要把各个应用添加到桌面。。。。。
    Sapp
        6
    Sapp  
       2020-05-04 11:25:43 +08:00
    @charten #5 如果是公司内部,我记得有不带浏览器的 electron 封装,需要你自己电脑装的有 chrome
    lindongwu11
        7
    lindongwu11  
    OP
       2020-05-06 14:48:04 +08:00
    @charten webcatalog 就有生成 Chrome 、Firefox 等浏览器快捷方式的功能,其实核心就是生成一个 Shell 脚本,然后带一个壳(这样可以有图标)。
    反正我是觉得这样不够用的,我主要还是需要网页里能调用 nodejs API 。
    lindongwu11
        8
    lindongwu11  
    OP
       2020-05-06 14:48:38 +08:00   ❤️ 1
    @charten 你想自己实现的话可以去抄一下 WebCatalog 里 Template 文件夹里的源码,有相关的 shell 脚本。
    charten
        9
    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,把参数带过去。只是不知道怎么样把启动参数带进去那个小应用里。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   998 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:52 · PVG 03:52 · LAX 11:52 · JFK 14:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.