V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abcbuzhiming
V2EX  ›  前端开发

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

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

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

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

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

    有没有什么办法,能让它们共享代码呢?
    10 条回复    2024-07-26 11:51:10 +08:00
    renmu
        1
    renmu  
       112 天前 via Android
    完全不用,你打包完,electron 加载一下 html 就可以了
    abcbuzhiming
        2
    abcbuzhiming  
    OP
       112 天前
    @renmu 不太理解这是什么操作,electron 可以从本地加载打包后的 web 项目的静态资源吗?还是说你的意思是直接从远程服务器加载?把 electron 直接当浏览器用?
    nieyujiang
        3
    nieyujiang  
       112 天前
    electron 单独抽一个工程出来,然后就在上面放个 webview 之类的,加载一下在线的页面.完事以后基本上不用改,反正所有的逻辑都是页面内部的.
    renmu
        4
    renmu  
       112 天前 via Android
    @abcbuzhiming 可以啊,如果这都不想做,那就直接加载线上页面,不需要额外适配
    maichael
        5
    maichael  
       112 天前
    虽然已经 archived ,https://github.com/nativefier/nativefier 应该能满足你的需求
    不过也可以简单通过 mainWindow.loadURL 之类的方式来实现这个需求,Electron 本质上是个浏览器 + Node.JS runtime ,所以是可以加载 url 的。
    hengcheng
        6
    hengcheng  
       112 天前
    aaniao002
        7
    aaniao002  
       112 天前 via Android
    chrome -app 模式怎么样? 打包一下 chrome 写个启动就行。
    LongMaoz
        8
    LongMaoz  
       112 天前
    没有客户端 API 交互需求的话 直接加载远程 url 不就行了
    musi
        9
    musi  
       112 天前 via iPhone
    1. 可以 loadUrl 加载线上地址
    2. 可以用 monorepo 将 electron 和 web 放到一个存储库编写对应的构建脚本进行构建
    3. 可以用 git submodule 实现两个仓库共用一份 web 代码
    webszy
        10
    webszy  
       111 天前
    不太理解。。。你就新建一个一个 electron 项目,然后写代码的时候可以通过环境变量来控制逻辑,比如 if ( electron ) xxx ,然后两条打包命令分别打包不就行了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5733 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 03:06 · PVG 11:06 · LAX 19:06 · JFK 22:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.