[转] vue&webpack多页面配置
前言
最近由于项目需求,选择使用vue框架,webpack打包直接使用的vue-cli,因为需要多页面而vue-cli只有单页面,所以就决定修改vue-cli的配置文件来满足开发需求。
html-webpack-plugin
实现需求需要用到这个插件, 具体信息请看这里
对于多页面入口我们需要在插件数组中多次声明该插件To generate more than one HTML file, declare the plugin more than once in your plugins array
对于正常的开发需求我们需要配置该插件的信息(这里只介绍一些基本的信息,读者可根据自身情况扩展)
title: 文件标题信息(对于多个文件使用同一个模板文件很有用,在模板文件的title中添加代码
<%= htmlWebpackPlugin.options.title %>
)
template: 模板文件(模板html文件)
filename: 生成的html文件名
chunks: 允许插入的模块名(此处一般添加公共块,以及每个页面独立的块,请注意添加的顺序)
以上这些配置是我举例需要独立控制的配置信息,有关配置的其他信息这里不再多说。
我们需要单独创建一个配置文件来定义我们上边的自定义信息,这里呢在config文件下添加multiple.js
文件
multiple.js
简单粗暴上段代码:
const path = require('path');
module.exports = {
index: 'page1/index.html',
pages: [
{
page: 'page1',
entry: path.resolve(__dirname, '../src/page1/main.js'),
title: '这是页面1',
filename: path.resolve(__dirname, '../dist/page1/index.html'),
template: path.resolve(__dirname, '../index.html')
},
{
page: 'page2',
entry: path.resolve(__dirname, '../src/page2/main.js'),
title: '这是页面2',
filename: path.resolve(__dirname, '../dist/page2/index.html'),
template: path.resolve(__dirname, '../index.html')
},
***
}
其中index
表示开发阶段devServer使用的首页,便于控制(也可以不设置直接在devServer里配置)
正文
哈哈哈,前边都是基础准备工作,
接下来开始正文,我们知道对于多页面配置首先要webpack的entry为多入口,所以在webpack的 base
配置中配置多入口,因为这个入口文件需要我们在multiple.js
中控制,所以首先引入multiple.js
,然后生成entry对象
/* webpack.base.conf.js */
const multiple = require('../config/multiple') // 引入文件
const entry = {};
multiple.pages.forEach((value, index) => {
entry[value.page] = value.entry;
})
// 在webpack配置中配置
const webpackConfig = {
***
entry: entry,
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
***
}
multiple.pages.forEach((value, index) => {
webpackConfig.plugins.push(
new HtmlWebpackPlugin({
title: value.title || '这里是标题',
filename: value.filename,
template: value.template,
inject: true,
hash: true,
chunks: ['manifest', 'vendor', 'app', value.page],
minify: false,
chunksSortMode: 'dependency'
})
)
})
***
注:在vue-cli配置中的webpack.prop.conf.js
有配置HtmlWebpackPlugin,注意将其注释掉
在 webpack.dev.conf.js
中的devServer配置中可以自定义打开首页,这个可以根据需求配置此处不再赘余。
至此所有的配置已完成,可以修改 multiple.js
文件定制自己的多页面开发了
总结一下,我们需要修改的文件
webpack.base.conf.js
修改入口文件,根据我们的配置文件webpack.prop.conf.js
注释掉默认的HtmlWebpackPlugin配置webpack.dev.conf.js
根据需求定制入口页面multiple.js
定制我们自己的多页面信息
另:对于我们的 vendor
文件我们也需要做出相应的修改(主要是应对不同页面引用不同的公共文件,而造成页面加载不必要的文件)(需要的插件 webpack.optimize.CommonsChunkPlugin
),具体的配置修改,将在下次说明。手动[调皮]
[转] vue&webpack多页面配置的更多相关文章
- vue&webpack多页面配置
前言 最近由于项目需求,选择使用vue框架,webpack打包直接使用的vue-cli,因为需要多页面而vue-cli只有单页面,所以就决定修改vue-cli的配置文件来满足开发需求. html-we ...
- vue webpack多页面构建
项目示例地址: https://github.com/ccyinghua/webpack-multipage 项目运行: 下载项目之后 # 下载依赖 npm install # 运行 npm run ...
- webpack多页面配置
const path = require('path'); const CleanWebpackPlugin = require('clean-webpack-plugin'); const Html ...
- Vue+webpack配置实现多页面应用开发
为什么要配置多页面开发? · 由于单页面应用不利于SEO,对于某些资讯类网站不够友好,而多页面则能够更优的解决此问题. · 传统的多页面开发模式(如java的jsp等) 前后端耦合性大,开发效率低,代 ...
- 前端笔记之Vue(一)初识SPA和Vue&webpack配置和vue安装&指令
一.单页面应用(SPA) 1.1 C/S到B/S页面架构的转变 C/S:客户端/服务器(Client/Server)架构的软件. C/S 软件的特点: ① 从window桌面双击打开 ② 更新的时候会 ...
- VUE 多页面配置(二)
1. 概述 1.1 说明 项目开发过程中会遇到需要多个主页展示情况,故在vue单页面的基础上进行配置多页面开发以满足此需求,此记录为统一配置出入口. 2. 实例 2.1 页面配置 使用vue脚手架搭建 ...
- VUE 多页面配置(一)
1. 概述 1.1 说明 项目开发过程中会遇到需要多个主页展示情况,故在vue单页面的基础上进行配置多页面开发以满足此需求. 2. 实例 2.1 页面配置 2.1.1 默认首页 使用vue脚手架搭建后 ...
- Vue + webpack 项目配置化、接口请求统一管理
准备工作 需求由来: 当项目越来越大的时候提高项目运行编译速度.压缩代码体积.项目维护.bug修复......等等成为不得不考虑而且不得不做的问题. 又或者后面其他同事接手你的模块,或者改你的bug ...
- 一字一句的搞懂vue-cli之vue webpack template配置
webpack--神一样的存在.无论写了多少次,再次相见,仍是初见.有的时候开发vue项目,对尤大的vue-cli感激涕零.但是,但是,但是...不是自己的东西,真的很不想折腾.所以,我们就得深入内部 ...
随机推荐
- Nginx 进程间如何共享内存
L:37 Nginx 针对多进程用的是自旋锁(占用共享内存时间比较短的情况下否则可能会影响性能)注:自旋锁是不停的请求共享内存 而原先的信号量是等待占用者释放后通知等待的进程
- Windows + Ubuntu 16.04 双系统安装详细教程
Windows + Ubuntu 16.04 双系统安装详细教程 2018年01月28日 16:43:19 flyyufenfei 阅读数:165619 发现了一篇好教程,果断转载了,以后用得着时 ...
- Luogu5290 十二省联考2019春节十二响(贪心+启发式合并)
考虑链的做法,显然将两部分各自从大到小排序后逐位取max即可,最后将根计入.猜想树上做法相同,即按上述方式逐个合并子树,最后加入根.用multiset启发式合并即可维护.因为每次合并后较小集合会消失, ...
- MySQL——修改数据库远程权限
语句 赋予权限 ON *.*前一个*代表库后一个代表表 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xxxxx' WITH GRA ...
- 【BZOJ5502】[GXOI/GZOI2019]与或和(单调栈)
[BZOJ5502][GXOI/GZOI2019]与或和(单调栈) 题面 BZOJ 洛谷 题解 看到位运算就直接拆位,于是问题变成了求有多少个全\(0\)子矩阵和有多少个全\(1\)子矩阵. 这两个操 ...
- BZOJ 1491: [NOI2007]社交网络(Floyd+暴力乱搞)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=1491 题解: 先看数据范围,n<=100..欸可以乱搞了 首先因为小学学过的乘法原理 ...
- 【GDOI2016模拟3.16】幂(容斥 + 模型复杂转化)
[GDOI2016模拟3.16]幂 \(X\in[1,A],Y\in[1,B]\),问:\(x^y\)的不用取值个数. \(A,B\)都是\(10^9\)级别. 然后我们开搞. 首先,假设一个合法的\ ...
- 20175209 《Java程序设计》第四周学习总结
20175209 2018-2019-2 <Java程序设计>第四周学习总结 教材知识点总结 1.子类和父类: 子类的继承性:子类与父类在同一包中——子类继承父类中不是private的变量 ...
- [报错]java.lang.ClassCastException
Caused by: java.lang.ClassCastException: org.apache.xml.dtm.ref.DTMManagerDefault cannot be cast to ...
- Numpy 系列(七)- 常用函数
在了解了 Numpy 的基本运算操作,下面来看下 Numpy常用的函数. 数学运算函数 add(x1,x2 [,out]) 按元素添加参数,等效于 x1 + x2 subtract(x1,x2 ...