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  THIS详解 面向对象
Mar 25 Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 Javascript
javascript中的继承实例代码
Apr 27 Javascript
Jquery实现简单的动画效果代码
Mar 18 Javascript
jquery自定义下拉列表示例
Apr 25 Javascript
jQuery 删除或是清空某个HTML元素示例
Aug 04 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
Oct 09 Javascript
JS运动相关知识点小结(附弹性运动示例)
Jan 08 Javascript
第一次接触神奇的Bootstrap导航条
Aug 09 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
May 07 Javascript
微信用户访问小程序的登录过程详解
Sep 20 Javascript
JavaScript事件冒泡机制原理实例解析
Jan 14 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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
php基础知识:类与对象(1)
2006/12/13 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
Jquery 实现Tab效果 思路是js思路
2010/03/02 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
在Python的web框架中编写创建日志的程序的教程
2015/04/30 Python
详解Python中的动态属性和特性
2018/04/07 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
矫正人员思想汇报
2014/01/08 职场文书
食品业务员岗位职责
2014/03/18 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
Python爬取某拍短视频
2021/06/11 Python
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers