electron-vue利用webpack打包实现多页面的入口文件问题


Posted in Javascript onMay 12, 2019

项目需要在electron的项目中新打开一个窗口,利用webpack作为静态资源打包器,发现在webpack中可以设置多页面的入口,今天来讲一下我在electron中利用webpack建立多页面入口的踩坑经验。

1、webpack的核心概念

•Entry:入口,Webpack执行构建的第一步从Entry开始;
•Module:模块,在Webpack里一切皆模块,一个模块对应着一个文件。Webpack会从配置的Entry开始递归找出所有依赖的模块。
•Chunk:代码块,一个Chunk由多个模块组合而成,用于代码合并与分割。
•Loader:模块转换器,用于把模块原内容按照需求转换成新内容。
•Plugin:扩展插件,在Webpack构建流程中的特定时机注入扩展逻辑来改变构建结果或做你想要的事情。
•Output:输出结果,在Webpack经过一系列处理并得出最终想要的代码后输出结果。

2、配置多页面的入口文件

electron构建后的项目目录如下:

•创建新的页面

vue-cli生成的项目中只有一个main.js主入口的js文件来处理所有的vue页面,我们创建多个页面需要生成一个这个页面相对应的js文件,保存该页面中包含的内容。

•配置多页面的入口文件

electron-vue创建的项目中有三个webpack的配置,我主要是在webpack.renderer.config中配置多个入口,生成多页面的入口文件,代码如下:

webpack中的HtmlWebpackPlugin插件是用来简单创建HTML文件,用于服务器访问。必须在新建HtmlWebpackPlugin中写chunks,不然无法识别,页面加载不出来

•electron中新建窗口,访问新生成的页面

electron中src的main文件中的index.js为主进程,在该页面中新建窗口,调用新生成的HTML文件,代码如下:

const dialpadUrl = process.env.NODE_ENV === 'development'
 ? `http://localhost:9080/dialpad.html`
 : `file://${__dirname}/dialpad.html`

创建新窗口打开页面的地址。electron的win.loadURL(url[, options])中的加载的文件方式包含:

•httpReferrer:一个HTTP Referrer url
•userAgent 发起请求的 userAgent
•extraHeaders:用”\n“分割的额外标题
•baseURLForDataURL:要加载的数据文件的根URL(带有路径分隔符),只有当指定的url是一个数据url并需要加载其他文件时,才需要这样做

其实我也没太懂这些都是什么,反正据我理解,url加载的只能是远程地址(如:http://)或是本地的HTML文件路径(file://)

参考文章: segmentfault.com/a/119000001…

•打包报错

上述就是我在electron-vue中利用webpack实现多页面入口的全过程,不过最后打包时出现了错误,错误代码如下:

上网搜了一下,说是node内存溢出的问题,在package.json中手动设置node的内存大小就可以啦

"scripts": {
  "buildAll": "node --max-old-space-size=4096 .electron-vue/build.js && electron-builder",
  "build": "node --max-old-space-size=4096 .electron-vue/build.js && electron-builder --win --  ia32 --publish always",
  "build:dir": "node --max-old-space-size=4096 .electron-vue/build.js && electron-builder -- win --ia32 --dir",
  "build:clean": "cross-env BUILD_TARGET=clean node .electron-vue/build.js",
  "build:web": "cross-env BUILD_TARGET=web node .electron-vue/build.js",
  "dev": "node --max-old-space-size=4096 .electron-vue/dev-runner.js",
  "lint": "eslint --ext .js,.vue -f ./node_modules/eslint-friendly-formatter src",
  "lint:fix": "eslint --ext .js,.vue -f ./node_modules/eslint-friendly-formatter --fix src",
  "pack": "npm run pack:main && npm run pack:renderer",
  "pack:main": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-  vue/webpack.main.config.js",
  "pack:renderer": "cross-env NODE_ENV=production webpack --progress --colors --config      .electron-vue/webpack.renderer.config.js"
},

总结

以上所述是小编给大家介绍的electron-vue利用webpack打包实现多页面的入口文件问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
Feb 09 Javascript
javascript移出节点removeChild()使用介绍
Apr 03 Javascript
JavaScript中的return语句简单介绍
Dec 07 Javascript
浅谈sass在vue注意的地方
Aug 10 Javascript
JS设计模式之惰性模式(二)
Sep 29 Javascript
基于jquery的on和click的区别详解
Jan 15 jQuery
vue中使用cropperjs的方法
Mar 01 Javascript
简述JS浏览器的三种弹窗
Jul 15 Javascript
浅谈Vue.use的使用
Aug 29 Javascript
vue-router命名视图的使用讲解
Jan 19 Javascript
jQuery实现颜色打字机的完整代码
Mar 19 jQuery
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
Jun 02 jQuery
vue中axios实现数据交互与跨域问题
May 12 #Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
May 12 #jQuery
JS块级作用域和私有变量实例分析
May 11 #Javascript
微信小程序封装的HTTP请求示例【附升级版】
May 11 #Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 #Javascript
jQuery实现动态生成年月日级联下拉列表示例
May 11 #jQuery
JS实现获取当前所在周的周六、周日示例分析
May 11 #Javascript
You might like
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
多个$(document).ready()的执行顺序实例分析
2014/07/26 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
vue+iview实现分页及查询功能
2020/11/17 Vue.js
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
贝佳斯官方网站:Borghese
2020/05/08 全球购物
优秀教师先进事迹
2014/01/22 职场文书
国庆节文艺活动方案
2014/02/03 职场文书
关于雷锋的演讲稿
2014/05/10 职场文书
个人授权委托书样本
2014/09/13 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android
Python安装及建立虚拟环境的完整步骤
2022/06/25 Servers