在多页面项目下使用 Webpack + Vue
前言
这篇是 webpack 1.x 的多页面配置,4.x 的版本在这里。
但是多页面配置的思路是一样的,变的是配置,所以可以先看这篇配置,实际使用 4.x 版本的配置
webpack + vue 能很好的完成单页面应用的开发,官方也提供了很多例子和教程。但使用 webpack 能不能用到多页面项目中,同时又能使用 vue 进行模块组件化开发呢?
这里将结合具体的项目,说明一下我是如何配置的。我们希望能在项目里做到
- 在每个业务模块下会有很多页面,每个页面都是一个文件夹,所需的资源文件也都放在这个文件夹下
- 采用 vue + es6 的方式进行组件模块化开发
- 生成自动引用 webpack 打包好的 js 文件到项目需要的目录
- 具有良好的开发支持,拥有如 sourseMap,vue 组件的热替换
下面 DEMO 的代码地址: https://github.com/cnu4/Webpack-Vue-MultiplePage
下面是我们项目的目录结构
项目目录结构
1 | ├─Application (thinkphp 配置下的结构,可以结合自己项目做修改) |
页面文件
每个页面都是一个文件夹,所需的资源文件也都放在这个文件夹下,不需要这个页面时,也只需要删除这个文件夹。
下面是 index 模块下的 index 页面
1 |
|
上面是 index 页面的 html 模板,我们无需引入任何 css 和 js ,webpack 会自动帮我打包引入。
其中的 app 标签是我们的 vue 组件,webpac k的加载器会帮我们处理 js 文件中引入的 vue 组件,这样就能正确处理这个标签。
下面 index 页面对应的 js 入口文件
1 | import Vue from 'vue' |
Webpack 配置文件
用法
先说下 demo 的运行命令
1 | # 首先安装依赖 |
配置
下面是 webpack 的配置文件 webpack.config.js,其中用注释指出了关键配置。
1 | var path = require('path'); |
开发模式
运行 npm run dev
开发模式运行 demo
根据 webpack 配置文件中 output 的 publicPath 配置项和 HtmlWebpackPlugin 插件的 filename 配置项
demo 中 dev 环境下中分别是 /View 和pathname + ‘.html’
所以 demo 中通过 http://localhost:8080/View/another/index.html
可以访问到 another 模块下的 index 页面
打包
运行 npm run build
打包,可以看到 Application/Home/View 目录下成功生成了按模块分组的 html 文件,这正是项目需要的。
如 Application/Home/View/index 下的 index.html 文件
1 |
|
venders.css 和 venders.js 文件是 webpack 插件帮我们自动生成的公共样式模块和公共 js 模块。打开页面,还能看到其他资源文件也都被正确处理了。
总结
总结一下 webpack 帮我们做了下面几件事
- 使用 vue-loader 使我们能进行组件化开发。
- 根据项目需求自动生成按模块分组的 html 文件。
- 自动提取样式文件,并和打包后的 js 文件加入到自动生成的 html 文件。
- 将 js 打包为不同的入口文件,并使用插件抽取公用模块。
- 为开发调试提供需要的环境,包括热替换,sourceMap。