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 SELECT单选模拟jQuery.select.js
Nov 12 Javascript
js 屏蔽鼠标右键脚本附破解方法
Dec 03 Javascript
js 距离某一时间点时间是多少实现代码
Oct 14 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
Feb 19 Javascript
Javascript中Array.prototype.map()详解
Oct 22 Javascript
2014年最火的Node.JS后端框架推荐
Oct 27 Javascript
Angular 常用指令实例总结整理
Dec 13 Javascript
JS实现Ajax的方法分析
Dec 20 Javascript
微信小程序搜索组件wxSearch实例详解
Jun 08 Javascript
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 Javascript
taro小程序添加骨架屏的实现代码
Nov 15 Javascript
Vue.js中使用Vuex实现组件数据共享案例
Jul 31 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模拟QQ登录的方法
2015/07/29 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
php将html转为图片的实现方法
2017/05/19 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
javascript数组快速打乱重排的方法
2014/01/02 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
python求众数问题实例
2014/09/26 Python
python解析xml文件实例分析
2015/05/27 Python
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
Python3.7中安装openCV库的方法
2018/07/11 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
利用python实现逐步回归
2020/02/24 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
Why do we need Unit test
2013/01/03 面试题
拓展培训心得体会
2014/01/04 职场文书
预备党员入党思想汇报
2014/01/04 职场文书
社区工作者先进事迹
2014/01/18 职场文书
迟到检讨书5000字
2014/01/31 职场文书
小学敬老月活动方案
2014/02/11 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
基于Python实现西西成语接龙小助手
2022/08/05 Golang