前言

最近由于项目需求,选择使用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 ),具体的配置修改,将在下次说明。手动[调皮]

原文地址

转载于:https://www.cnblogs.com/chris-oil/p/10017219.html

[转] vuewebpack多页面配置相关推荐

  1. webpack预览页面配置

    应用场景:当我们配置了webpack自动打包工具后,通过 http://localhost:8080/ 访问到的是文件夹根目录,而没有直接打开html页面,如果要打开html页面需要在界面中点击指定的 ...

  2. 37、Django实战第37天:404以及500页面配置

    1.把404.html,500.html复制到templates下,替换静态文件路径 2.编辑users.views.py定义404,505函数 from django.shortcuts impor ...

  3. java页面可配置化_web.xml页面配置

    web.xml页面配置参数详解 加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listen ...

  4. linux调整大页内存,Linux 系统如何进行大页面配置

    Linux 系统如何进行大页面配置 3/31/2018 本文内容 在 Linux 中,物理内存是以页为单位来管理的.页的大小为 4096 字节. 1MB 的内存能划分为 256 页: 1GB 则等同于 ...

  5. Struts2结果页面配置(Result)

    1.全局页面配置 全局结果页面:针对一个包下的所有Action的页面跳转都可生效 <global-results><result name="xxx">/x ...

  6. 第三百九十一节,Django+Xadmin打造上线标准的在线教育平台—404,403,500页面配置...

    第三百九十一节,Django+Xadmin打造上线标准的在线教育平台-404,403,500页面配置 路由映射 在全局也就是根目录里的urls.py里配置404路由映射 注意:不是写在urlpatte ...

  7. CDH页面配置HA(高可用)

    CDH页面配置HA(高可用) 集群的配置简单介绍: (1) NameNode机器: 运行 Active NameNode和 Standby NameNode 的机器配置应保持一样. (2) 当 Act ...

  8. 微信小程序基础学习(2)- 模板与配置:WXML 模板语法、WXSS 模板样式、全局配置、页面配置、网络数据请求

    1. WXML 模板语法 1.1 数据绑定 (1) 数据绑定的基本原则 ① 在 data 中定义数据 ② 在 WXML 中使用数据 (2)在 data 中定义页面的数据 在页面对应的 .js 文件中, ...

  9. Ice飞冰页面配置菜单配置日志打印环境配置《六》

    页面配置 框架为页面级组件提供了一些特殊的配置项,让页面级组件可以快速拥有一些能力. 页面滚动# scrollToTop:用于渲染页面前是否需要将当前页面滚动至顶部,这个配置用于嵌套路由的应用场景. ...

最新文章

  1. 【Android 逆向】Android 中常用的 so 动态库 ( libdvm.so | libart.so | libandroid_runtime.so | libandroidfw.so )
  2. 【Arduino】HX711 拉力计称重模块 两个模块同时使用
  3. 2021暑假每日一题 【week6 完结】
  4. linux怎么永久保存,Linux系统中,让alias命令永久保存的方法!
  5. python必须使用try except而不是if else的场合
  6. 操作系统提供什么服务、如何服务?
  7. AngularJs -- 模 块
  8. hduoj 6000 2016CCPC-final B. Wash(贪心)
  9. 图像处理八:前向映射和后向映射
  10. gomod下导入模块的方法
  11. 上古卷轴5python_python 基础(五)协程 —— 微线程 greenlet gevent
  12. vbs脚本的基本使用
  13. LayaBox---TypeScript---基础数据类型
  14. PTB-XL大型的心电图数据集
  15. 北京 | 微信小程序及小游戏开发者线下交流会
  16. 关于SpringOpenSessionInViewFilter的配置及处理方案
  17. 使用Qt开发的优秀软件汇总
  18. 12.23网络嗅探实验记录
  19. #pragma用法详解
  20. librosa | 系统实战(一 ~ 四)

热门文章

  1. 【Qt】菜单栏、工具栏、状态栏、右键菜单的实现
  2. linux驱动:音频驱动(七)交叉编译alsa库及工具集alsa-utils
  3. mysql 执行计划extra_MySQL执行计划extra中的using index 和 using where using index 的区别...
  4. 怎么让修改的html持久化_一文让你明白Redis持久化
  5. vba 编辑combobox内容_初识Visual Basic编辑器并建立一段简单的代码
  6. Fastadmin管理Mysql_FastAdmin-CMS模版制作(6)-正式部署
  7. 河科大c语言上机实验答案,2016年河南科技学院信息工程学院C语言上机编程考研复试题库...
  8. antd自定义分页器_自定义分页器
  9. 【spring】使用spring的环境配置及从官网获得配置文件所用代码的方法
  10. 【java】实现数据在页面之间传输