前言

最近由于项目需求,选择使用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多页面配置的更多相关文章

  1. [转] vue&webpack多页面配置

    前言 最近由于项目需求,选择使用vue框架,webpack打包直接使用的vue-cli,因为需要多页面而vue-cli只有单页面,所以就决定修改vue-cli的配置文件来满足开发需求. html-we ...

  2. vue webpack多页面构建

    项目示例地址: https://github.com/ccyinghua/webpack-multipage 项目运行: 下载项目之后 # 下载依赖 npm install # 运行 npm run ...

  3. webpack多页面配置

    const path = require('path'); const CleanWebpackPlugin = require('clean-webpack-plugin'); const Html ...

  4. Vue+webpack配置实现多页面应用开发

    为什么要配置多页面开发? · 由于单页面应用不利于SEO,对于某些资讯类网站不够友好,而多页面则能够更优的解决此问题. · 传统的多页面开发模式(如java的jsp等) 前后端耦合性大,开发效率低,代 ...

  5. 前端笔记之Vue(一)初识SPA和Vue&webpack配置和vue安装&指令

    一.单页面应用(SPA) 1.1 C/S到B/S页面架构的转变 C/S:客户端/服务器(Client/Server)架构的软件. C/S 软件的特点: ① 从window桌面双击打开 ② 更新的时候会 ...

  6. VUE 多页面配置(二)

    1. 概述 1.1 说明 项目开发过程中会遇到需要多个主页展示情况,故在vue单页面的基础上进行配置多页面开发以满足此需求,此记录为统一配置出入口. 2. 实例 2.1 页面配置 使用vue脚手架搭建 ...

  7. VUE 多页面配置(一)

    1. 概述 1.1 说明 项目开发过程中会遇到需要多个主页展示情况,故在vue单页面的基础上进行配置多页面开发以满足此需求. 2. 实例 2.1 页面配置 2.1.1 默认首页 使用vue脚手架搭建后 ...

  8. Vue + webpack 项目配置化、接口请求统一管理

    准备工作 需求由来: 当项目越来越大的时候提高项目运行编译速度.压缩代码体积.项目维护.bug修复......等等成为不得不考虑而且不得不做的问题.  又或者后面其他同事接手你的模块,或者改你的bug ...

  9. 一字一句的搞懂vue-cli之vue webpack template配置

    webpack--神一样的存在.无论写了多少次,再次相见,仍是初见.有的时候开发vue项目,对尤大的vue-cli感激涕零.但是,但是,但是...不是自己的东西,真的很不想折腾.所以,我们就得深入内部 ...

随机推荐

  1. 如何查看linux命令行操作的历史记录-linux

    前言 由于刚开始学习linux,对命令行不熟悉,可以查看使用过的命令行历史记录,熟悉命令行并熟练操作,对命令行进行深入地理解. 系统环境 OS:ubuntu16.04. 操作过程 在主文件夹目录即ho ...

  2. 查看图片插件--Viewer(类似于qq和微信聊天 的查看图片)

    Viewer的github地址:https://github.com/fengyuanchen/viewer  下载该插件(在文件夹dist里面) 具有参考价值的几个网站:http://www.dow ...

  3. Java-JDK & Android SDK下载安装及配置教程

    转自:http://blog.csdn.net/dr_neo/article/details/49870587 第一步.安装JDK: 第二步.安装Eclipse: 第三步.下载并安装AndroidSD ...

  4. python lambda匿名函数

    Python的一个很重要的方面就是:函数式编程(functional programming),即可以再原本传递参数和值的地方传递函数. lambda x: x%3 == 0 和以下等价: def b ...

  5. shrink_to_fit

    // string::shrink_to_fit#include <iostream>#include <string> int main (){ std::string st ...

  6. STORJ 有实际应用

    STORJ 有实际应用,Filezilla 支持 STORJ 的分布式协议.

  7. window.open 和 location.href 区别

    window.open():可以在一个网站上打开另外的一个网站的地址 window.location():只能在一个网站中打开本网站的网页

  8. Navicat导出opencart2.3数据字典

    步骤请参考:http://blog.csdn.net/maquealone/article/details/60764420 运行SQL:   备注:opcml是数据库名称. select TABLE ...

  9. C语言实现<读取>和<写入> *.ini文件(转)

    原地址:https://blog.csdn.net/niha1993825jian/article/details/41086403 #include <stdio.h> #include ...

  10. Maven 生成项目站点

    Maven 不仅仅时一个自动化构建工具和一个依赖管理工具,他还能够帮助聚合项目信息,促进团队间的交流,POM 可以包含各种项目信息,如项目描述.版本控制系统地址.缺陷跟踪系统地址.许可证信息.开发者信 ...