,本文主要介绍了webpack编译多页面vue项目的配置问题,分享给大家,具体如下:
一般情况下,构建一个vue项目的步骤为:
1,安装nodejs环境
2,安装vue-cli
cnpm安装vue-cli - g
3,构建vue项目
vue init webpack-simple vue-cli-multipage-demo
4,安装项目依赖包
cnpm安装
5,在开发环境下运行该项目:
npm运行dev
通过上面这几步一个简单的vue项目的开发环境基本就搭建起来,接下来的工作就是填代码了。
最近在做一个前端代码重构的时候发现一个问题,使用这个脚手架构建的项目满足不了我的需求,其实这个需求有一点违背我们vue的初衷的,vue开发的是单页面应用(SPA),这里我需要他实现多页面的效果。什么意思呢?举个例子:我们在网页开发的时候,有时候点击一个连接,浏览器会新代开一个标签页来显示我们的内容,这个时候其实就出现多页面的情况了,新开的这个页面其实已经不属于我们之前的那个页面,(SPA)其实是通过路由的方式,让多个页面在主页面中显示。但是这个时候新开的页面已经脱离主页面了。
通过vue-cli脚手架构建的项目的webpack配置文件支持单页面的应用开发,他只有一个入口文件。而且最后只会生产一个页面。如何才能满足我的需求,让webpack同时便于多个页面呢,其实还是比较简单的,只需要将webpack稍微改装一下,就完全可以了。
首先我们需要在构建文件下的跑龙套。js文件家中增加一个获取文件夹中文件路径的方法,这个方法将目标文件解析成对象的形式。
utils.js
var水珠=要求(“水珠”);//分析文件夹中文件路径的第三方模块 出口。getEntry=函数(globPath) { var条目={}, basename tmp,路径名; 如果(typeof (globPath) !=岸韵蟆?{ globPath=[globPath] } globPath.forEach ((itemPath)=比;{ glob.sync (itemPath)。forEach(函数(条目){ basename=路径。:条目,path.extname(条目)); 如果(entry.split (“/?。长度比;4){ tmp=entry.split (“/? .splice (3); 路径名=tmp。拼接(0,1)+ '/' + basename;//正确输出js和html的路径 条目(路径)=条目; 其他}{ 条目[:]=条目; } }); }); 返回条目; } >之前然后修改wenpack.base.conf。js文件,修改入口文件,原来的文件是单文件,现在需要将单文件入口改成多文件入口了。
webpack.dev.conf.js
var路径=要求(“路径”) var配置=要求(. ./配置) var跑龙套=要求(“/跑龙套。”) var projectRoot=路径。解决(__dirname“. ./? var水珠=要求(“水珠”); var=utils.getEntry条目([’。/src/模块/* */* . js '));//获得多页面的入口js文件 var env=process.env.NODE_ENV//各种预处理程序加载器添加到年底vue-loader这个文件 var cssSourceMapDev=(env===⒄埂?,config.dev.cssSourceMap) var cssSourceMapProd=(env===?,config.build.productionSourceMap) var useCssSourceMap=cssSourceMapDev | | cssSourceMapProd 模块。出口={ 条目:条目,//这是通过前面新增的方法获取的文件路径对象 输出:{ 路径:config.build.assetsRoot, publicPath: process.env。NODE_ENV===? # 63;config.build。assetsPublicPath: config.dev.assetsPublicPath, 文件名:“[名字]. js” } … } >之前下面需要修改webpack.dev, conf.js文件了,这里主要是修改原来配置的首页,这里需要配置多个页面
webpack.dev.conf.js
var=路径要求(“路径”); var配置=要求(. ./配置) var webpack=要求(“webpack”) var=需要合并(“webpack-merge”) var跑龙套=要求(“/跑龙套。”) var baseWebpackConfig=要求(“。/webpack.base.conf”) var HtmlWebpackPlugin=要求(“html-webpack-plugin”) 种(baseWebpackConfig.entry)。forEach(函数(名字){ baseWebpackConfig。条目[名字]=['。/构建/dev-client '] .concat (baseWebpackConfig.entry[名字]) }) 模块。出口=合并(baseWebpackConfig, { … });//新增 var=utils.getEntry页面([’。/src/模块/* . html”、”。/src/模块/* */* . html ")); (var路径名的页){//配置生成的html文件,定义路径等 配置={var 文件名:路径名+“html”, 模板:页面(路径),//模板路径 注射:真的,//js插入位置 chunksSortMode:“依赖” }; 如果(module.exports.entry路径名){ conf.chunks=[“清单”,“供应商”,路径名); conf.hash=true; } module.exports.plugins。推动(新HtmlWebpackPlugin(参看)); }详解webpack编译多页面vue项目的配置问题