Web 前端项目如何和 Electron 项目共享代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abcbuzhiming
V2EX    前端开发

Web 前端项目如何和 Electron 项目共享代码?

  •  
  •   abcbuzhiming 2024-07-25 17:43:50 +08:00 1556 次点击
    这是一个创建于 448 天前的主题,其中的信息可能已经有所发展或是发生改变。
    已有基于 Web 的客户端项目正在运行。是功能比较复杂的 UI 类型程序,而不是一般的那种偏展示的 web 页面。

    现在老板要求必须打包一个客户端出来,说浏览器逼格不够,要 App 才好让他出去宣(骗)传(投资),使用体验和 web 完全相同,那只能用 Electron 了。

    但是这个 UI 程序确实写的比较复杂,页面,布局,交互的代码都挺多的。当然它没有什么原生 api 负担,因为基本都是在和后台服务器交互,不需要依赖本地操作系统 API 。
    我看了一下 lectron 的开发流程,我感觉这东西的脚手架和 Web 端还是有那么点不一样。我原本想的好事是一份代码,想打包成 web 端可以,想打包成 Electron 也可以。但是实际上似乎没法这么干。能查到的办法都是必须建立 Electron 的脚手架,然后把 web 那些的代码拷一份过来,然后再调整调整。

    我现在的主要担心是,如果复制成两份代码,很可能后面迭代几个版本就走样了,毕竟这程序功能挺多挺杂的,web 端和 Electron 端程序的功能很直接就分裂了。并且很不好弥合。

    有没有什么办法,能让它们共享代码呢?
    10 条回复    2024-07-26 11:51:10 +08:00
    renmu
        1
    renmu  
       2024-07-25 17:45:55 +08:00 via Android
    完全不用,你打包完,electron 加载一下 html 就可以了
    abcbuzhiming
        2
    abcbuzhiming  
    OP
       2024-07-25 17:49:22 +08:00
    @renmu 不太理解这是什么操作,electron 可以从本地加载打包后的 web 项目的静态资源吗?还是说你的意思是直接从远程服务器加载?把 electron 直接当浏览器用?
    ZeoKarl
        3
    ZeoKarl  
       2024-07-25 17:51:54 +08:00
    electron 单独抽一个工程出来,然后就在上面放个 webview 之类的,加载一下在线的页面.完事以后基本上不用改,反正所有的逻辑都是页面内部的.
    renmu
        4
    renmu  
       2024-07-25 18:02:32 +08:00 via Android
    @abcbuzhiming 可以啊,如果这都不想做,那就直接加载线上页面,不需要额外适配
    maichael
        5
    maichael  
       2024-07-25 18:02:32 +08:00
    虽然已经 archived ,https://github.com/nativefier/nativefier 应该能满足你的需求
    不过也可以简单通过 mainWindow.loadURL 之类的方式来实现这个需求,Electron 本质上是个浏览器 + Node.JS runtime ,所以是可以加载 url 的。
    hengcheng
        6
    hengcheng  
       2024-07-25 18:18:19 +08:00
    aaniao002
        7
    aaniao002  
       2024-07-25 18:22:08 +08:00 via Android
    chrome -app 模式怎么样? 打包一下 chrome 写个启动就行。
    LongMaoz
        8
    LongMaoz  
       2024-07-25 18:25:04 +08:00
    没有客户端 API 交互需求的话 直接加载远程 url 不就行了
    musi
        9
    musi  
       2024-07-26 06:03:01 +08:00 via iPhone
    1. 可以 loadUrl 加载线上地址
    2. 可以用 monorepo 将 electron 和 web 放到一个存储库编写对应的构建脚本进行构建
    3. 可以用 git submodule 实现两个仓库共用一份 web 代码
    webszy
        10
    webszy  
       2024-07-26 11:51:10 +08:00
    不太理解。。。你就新建一个一个 electron 项目,然后写代码的时候可以通过环境变量来控制逻辑,比如 if ( electron ) xxx ,然后两条打包命令分别打包不就行了。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1485 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 16:41 PVG 00:41 LAX 09:41 JFK 12:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86