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 相关文章推荐
二级域名或跨域共享Cookies的实现方法
Aug 07 Javascript
js 处理URL实用技巧
Nov 23 Javascript
前台js改变Session的值(用ajax实现)
Dec 28 Javascript
js 获取元素下面所有li的两种方法
Apr 14 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
Jan 31 Javascript
浅析jQuery Ajax通用js封装
Jun 22 Javascript
jquery validate表单验证插件
Sep 06 Javascript
js HTML5 canvas绘制图片的方法
Sep 08 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
Aug 03 Javascript
Vue源码解析之数据响应系统的使用
Apr 24 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
Aug 26 Javascript
vue子传父关于.sync与$emit的实现
Nov 05 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP实现的简单缓存类
2015/07/29 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
python实现查询IP地址所在地
2015/03/29 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
完美解决python中ndarray 默认用科学计数法显示的问题
2018/07/14 Python
python实现飞机大战游戏
2020/10/26 Python
Python如何实现动态数组
2019/11/02 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
Python字符串及文本模式方法详解
2020/09/10 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
python中yield的用法详解
2021/01/13 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
.NET remoting的两种通道是什么
2016/05/31 面试题
新闻编辑自荐信
2013/11/03 职场文书
函授药学自我鉴定
2014/02/07 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
临床护理求职信
2014/04/26 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
仓管员岗位职责
2015/02/03 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书