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

用 react 和 yue 编写桌面应用

  •  
  •   oyyd ·
    oyyd · 2018-06-03 17:06:38 +08:00 · 3123 次点击
    这是一个创建于 2147 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Yue@zcbenz编写的,用于编写跨平台桌面应用的 GUI 库。Yue 支持用 Lua 和 Nodejs 进行调用,熟悉 javascript 的开发者可以比较快速地上手,也因此 yue 常被用来与 electron 对比。之前 @zcbenz 也在 V2EX 上推荐过一次

    我自己原本也有编写桌面应用的需求。使用 Electron 可以带来各种各样的好处,但对于一些相对简单的场景而言,electron 需要打包进一个 node 和一个 webkit,最终应用的体积小不下来;并且 web 的 UI 风格总会显得与其他原生的应用有些“与众不同”。虽然 Node 上也有一些库在做同样的事情,但是从文档和实际应用的情况来看,基本上都不太靠谱。虽然 yue 同样也还不是那么成熟,但整体 api 上的设计和文档支持让人满意,zcbenz 老师本身作为作者对我而言也是加分项。

    也正是因为 api 设计上的合理,yue 让我方便的利用react-reconciler实现了react-yue这个代码库,从而可以在 yue 的基础上编写 react 桌面应用。我编写了一个简单的 do space 的client,截图如下:

    对于熟悉 react 开发的同学而言,学习成本和代码的维护成本应该会降低不少。并且我们可以直接利用 react 社区中不涉及到 DOM 的项目,比如 redux。在上面的例子中我就直接用了 redux。

    在这基础之上,也不难做出个 hot-loader,这对于目前 yue 在 view 这一层没有特别好的 debug 工具的情况下,应该会对提高开发效率比较有帮助。

    所以对于在自己的项目中有同样需求的同学,或许你们可以尝试一下 yue 和 react-yue。

    相关项目地址:

    PS: 原生开发者和 py 的用户,我知道你们有更成熟的选择,就不用来争了:)

    6 条回复    2018-06-05 18:52:14 +08:00
    123s
        1
    123s  
       2018-06-04 09:19:00 +08:00
    yue 也是基于 electron 吗?
    123s
        2
    123s  
       2018-06-04 09:19:26 +08:00
    我前几天打包了一个 hello world,50 多 M。然后就没有然后了
    tinytin
        3
    tinytin  
       2018-06-04 14:30:43 +08:00
    @123s 不是,不过是一个作者写的
    oyyd
        4
    oyyd  
    OP
       2018-06-04 17:48:30 +08:00
    @123s 但是 yue 最终打包也需要打包一份 node,文件大小可以参照 https://github.com/yue/wey/releases
    che3vinci
        5
    che3vinci  
       2018-06-05 14:01:18 +08:00
    这不是用 html 和 js、css 来开发程序吧?
    oyyd
        6
    oyyd  
    OP
       2018-06-05 18:52:14 +08:00 via iPhone
    @che3vinci 不是。可以过一下 yue 的文档。但是 yue 可以渲染系统支持的 webview。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2996 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:10 · PVG 19:10 · LAX 04:10 · JFK 07:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.