详解webpack编译多页面vue项目的配置问题

  

,本文主要介绍了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项目的配置问题