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设置FieldSet展开与收缩
May 15 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
Aug 06 Javascript
js显示时间 js显示最后修改时间
Jan 02 Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
全面了解JS中的匿名函数
Jun 29 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
Feb 22 Javascript
JS实现两周内自动登录功能
Mar 23 Javascript
Vue.js学习笔记之修饰符详解
Jul 25 Javascript
微信小程序解除10个请求并发限制
Dec 18 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
JS+DIV实现拖动效果
Feb 11 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
php中定义网站根目录的常用方法
2010/08/08 PHP
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
通过修改referer下载文件的方法
2008/05/11 Javascript
event.srcElement 用法笔记e.target
2009/12/18 Javascript
Confirmer JQuery确认对话框组件
2010/06/09 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
Python框架Flask的基本数据库操作方法分析
2018/07/13 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
python命令 -u参数用法解析
2019/10/24 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
创卫工作总结2015
2015/04/22 职场文书
主持人开场白台词
2015/05/29 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS