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 相关文章推荐
看了就知道什么是JSON
Dec 09 Javascript
IE本地存储userdata的一个bug说明
Jul 01 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
jQuery延迟执行的实现方法
Dec 21 Javascript
js获取json中key所对应的value值的简单方法
Jun 17 Javascript
Vuex之理解Mutations的用法实例
Apr 19 Javascript
ES6学习教程之对象的扩展详解
May 02 Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 Javascript
微信小程序实现点赞、取消点赞功能
Nov 02 Javascript
vue 实现购物车总价计算
Nov 06 Javascript
Vue时间轴 vue-light-timeline的用法说明
Oct 29 Javascript
javascript实现固定侧边栏
Feb 09 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 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(基于jquery)
2015/11/18 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
浅析JS获取url中的参数实例代码
2016/06/14 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
python输出指定月份日历的方法
2015/04/23 Python
python编写爬虫小程序
2015/05/14 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
sklearn+python:线性回归案例
2020/02/24 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
基于python实现删除指定文件类型
2020/07/21 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
导航工程专业自荐信
2014/09/02 职场文书
银行工作心得体会范文
2016/01/23 职场文书