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 相关文章推荐
jQuery DIV弹出效果实现代码
Jul 03 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
May 22 Javascript
浅析Prototype的模板类 Template
Dec 07 Javascript
通过location.replace禁止浏览器后退防止重复提交
Sep 04 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
Extjs让combobox写起来简洁又漂亮
Jan 05 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
Apr 13 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
Aug 23 Javascript
深入了解javascript 数组的sort方法
Jun 01 Javascript
了解JavaScript中的选择器
May 24 Javascript
在微信小程序中使用mqtt服务的方法
Dec 13 Javascript
JS性能优化实现方法及优点进行
Aug 30 Javascript
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
PHP自动生成月历代码
2006/10/09 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
python的即时标记项目练习笔记
2014/09/18 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Python 在局部变量域中执行代码
2020/08/07 Python
降低python版本的操作方法
2020/09/11 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
党委领导班子整改方案
2014/09/30 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
爱国主义影片观后感
2015/06/18 职场文书
高一军训口号
2015/12/25 职场文书
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python
sql注入教程之类型以及提交注入
2021/08/02 MySQL
python中的random模块和相关函数详解
2022/04/22 Python