electron闭坑指南

463 阅读5分钟

electron闭坑指南

近日,应公司需求,开发了一个基于electron框架的桌面应用,将移动端进行套壳,变成桌面应用

  • 为什么写的,因为这几天,真的被网上的文档给快折磨死了,各种无厘头,版本不对,年代久远,莫名其妙报错,等等,所以准备写一篇完整的文章,供大家参考,也供自己复习,好了,废话不多说,开始我们的学习

首先我们理一下思路,如何从零开始完成一个app的套壳桌面端:

  • 首先,我们要搭建electron环境,这里面的坑很多,之后慢慢讲
  • 其次,搭建electron项目,这里推荐使用electron-vue,但是使用前先看好electron文档,不然一脸懵逼
  • 然后进行页面开发,做出达到效果的,这里面涉及到很多electron特定的属性(正常学习即可)
  • 然后下载打包工具,运行打包,第一次运行一定要用cnpm,不然你会无限失败(这一步,我花了一下午)
  • 然后nsis进行二次打包,编写自定义安装程序(根据文章一步一步来不难),
  • 然后用electron-update进行升级功能的编写(坑超级无敌多)
  • 最后配置服务器文件,基础功能完成,开始优化

第一步:安装Node,VUE脚手架,创建electron-vue

//先去网上下载10.0.0以上的node版本,然后安装vue脚手架
install @vue/cli -g
//然后用vue创建electron项目,
vue init simulatedgreg/electron-vue electron-vue-start(你所创建的文件名)
//关键!!!!!!!!!!!!!!!!!!!!!!!!
//先去page.json里面修改electron版本!!不能默认的^2.xx,一定要调到^4.xx,不然后续更新会把你坑死,
//然后yarn安装依赖,推荐用yarn,npm容易卡,cnpm容易错误
//然后启动,此时会报错,提示
1608441471653
1608441471653

解决办法如下: 修改 .electron-vue/webpack.renderer.config.js 和 webpack.web.config.js如下:

//webpack.web.config.js:
 new HtmlWebpackPlugin({
      filename'index.html',
      template: path.resolve(__dirname, '../src/index.ejs'),
      templateParameters(compilation, assets, options) {
        return {
          compilation: compilation,
          webpack: compilation.getStats().toJson(),
          webpackConfig: compilation.options,
          htmlWebpackPlugin: {
            files: assets,
            options: options
          },
          process,
        };
      },
      minify: {
        collapseWhitespacetrue,
        removeAttributeQuotestrue,
        removeCommentstrue
      },
      nodeModulesfalse
 })
//webpack.render.config.js
new HtmlWebpackPlugin({
      filename'index.html',
      template: path.resolve(__dirname, '../src/index.ejs'),
      minify: {
        collapseWhitespacetrue,
        removeAttributeQuotestrue,
        removeCommentstrue
      },
      templateParameters(compilation, assets, options) {
        return {
          compilation: compilation,
          webpack: compilation.getStats().toJson(),
          webpackConfig: compilation.options,
          htmlWebpackPlugin: {
            files: assets,
            options: options
          },
          process,
        };
      },
      nodeModules: process.env.NODE_ENV !== 'production'
        ? path.resolve(__dirname, '../node_modules')
        false
    }),

然后你再跑,就能运行成功了,指令是npm run dev

第二步:编写electron程序,

  • 首先进入package.json,找到自己项目的入口文件,在这编写项目的主进程,子进程要使用主进程中的属性一定要用remote,这里面都是基础语法,没啥坑,我们进入下一步

第三步:打包!

  • 这里一定要说!!!!第一次打包一定要运行cnpm或者yarn,因为他要装好几个依赖,而且奇慢无比,淘宝镜像不管用,npm不知道死多少次了,
  • 打包配置:

123 1774100-20190828094050947-1132351071

  • 打包成功以后,在自己项目里的build文件夹内可以看到如下,exe是安装程序,打包完成的,win-ia32里面exe是还未打包的程序,如果要进行安装配置,自定义安装程序,需要用里面的来二次打包
222
222

第四步:跟新

  • 首先需要安装electron-updater依赖:npm install electron-updater --save
  • 然后再package.json中的build配置public,这样执行npm run build时候,会在build目录中生成latest.yml文件,这个用来验证应用是否被攥改,和应用版本的,然后根据网上的安装文档,就可以实现了,这里最坑的,就是版本问题了,你的electron版本呢一定要4.0.1以上,不然一定失败!!!!

总结:还有很多小问题,没有一一指出,如果有需要可以留言,看到会一一解答,有什么需要改进的方向,也欢迎大家指出,一同进步