使用electron打包web项目,变成本地桌面应用。b/s架构转c/s架构,到底有哪些好处,每个人各取所需。之前通过集成CEF构建桌面应用基本实现了b/s与c/s架构混合共存的状态。最直接的好处是前端UI相关的工作从C/S解放出来,论UI效果,没有比前端效果好的。这里的好是指相同工作量、工作复杂度条件下。毕竟我们不能那么肤浅,不能只当一个花瓶,外强中干,只能看不能用。所以这里的应用程序后台,承担更多隐形的工作,比如协议对接、SDK集成、算法实现与优化。

通过CEF和electron综合使用下来,个人感觉前端界面好看,但是速度慢,一些操作总感觉慢半拍,当然使用上也有优势,比较灵活,兼具了node和js的特点,可以扩展的空间很大。

回归正题,electron也是集成了chrome的内核,CEF是在chromium基础上重新封装成了组件,所以他俩同源。还有一个nw.exe其实也差不多。

在electron版本升级到5.0以后,BrowserWindow下的 webPreferences 下的nodeIntegration(是否集成Node)默认为false,以前默认是true。如果用默认设置,electron打包的项目中,不能使用node的模块和API。所以我们需要手动放开,支持node。

electron项目中,main.js

关于node与原生js一起使用的js冲突问题

然后会出现Electron 使用jQuery的时候“jQuery/$ is not defined”的问题。这里对类似问题进行了汇总https://blog.csdn.net/rocarrot/article/details/82014863

原因也说得很清楚,node中的module 导致jquery在局部可见全局不可见,所以才有了上述问题。详细可参考https://stackoverflow.com/questions/32621988/electron-jquery-is-not-defined

关于node与原生js一起使用的js冲突问题

解决办法有很多,这里只是描述我的解决办法。

node安装jquery,js中去掉jquery的文件引用,统一都用node中的jquery,然后赋值给全局的可能使用形式$和jQuery。

<script type="text/javascript" src="../node_modules/jquery/dist/jquery.js"

        οnlοad="window.$=

        window.jQuery= module.exports;"></script>

 

相关文章: