博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于vue-cli的改造的多页面开发脚手架
阅读量:6711 次
发布时间:2019-06-25

本文共 2475 字,大约阅读时间需要 8 分钟。

项目的GitHub地址:

该脚手架同时支持vux,scss,less

目录结构

vue-cli-multipage  |---build  |---config  |---src    |---assets  图片    |---comm  公共的css及js    |---components  组件      |---vux.vue vux的dome页面      |---App.vue    |---pages  html模板文件      |---abc.html      |---main.html    |---abc.js  根据该js进行页面的打包及调试    |---main.js

修改配置文件

构建多页面应用的关键在于向配置对象的plugins子项添加多个HtmlWebpackPlugin。

怎样根据页面的多少动态的添加多个HtmlWebpackPlugin呢,我们需要使用glob插件;

npm install --save-dev glob  安装glob插件

通过glob插件会将特定目录下的文件名存储为一个数组,遍历该数据,生成多个HtmlWebpackPlugin,并插入plugins中;

//webpack.prod.conf.js var fileList = glob.sync('./src/*.js');var fileNameList = [];fileList.forEach(function (item, index) {    var name = item.match(/(\/)(\w+)(\.)/g)[0].substring(1, item.match(/(\/)(\w+)(\.)/g)[0].length - 1);    fileNameList.push(name);})var obj = {};fileList.forEach(function (item, index) {    var filename = fileNameList[index];    configObj.entry[filename] = item;    configObj.plugins.push(new HtmlWebpackPlugin({        template: './src/pages/' +filename + '.html',        filename: filename + '.html',        inject: true,        minify: {            removeComments: true,            collapseWhitespace: true,            removeAttributeQuotes: true        },        chunksSortMode: 'dependency',        chunks: ['manifest', 'vendor', filename]    }))})
//webpack.dev.conf.js var fileList = glob.sync('./src/*.js');  var fileNameList = [];  fileList.forEach(function (item, index) {      var name = item.match(/(\/)(\w+)(\.)/g)[0].substring(1, item.match(/(\/)(\w+)(\.)/g)[0].length - 1);      fileNameList.push(name);  })  var obj = {};  fileList.forEach(function (item, index) {      var filename = fileNameList[index];      configObj.entry[filename] = item;      configObj.plugins.push(new HtmlWebpackPlugin({          template: './src/pages/' + filename + '.html',          filename: filename + '.html',          inject: true,          chunks: [filename]      }))  })

vue-cli问题优化

  1.遇到问题:项目打包后,无法直接在本地直接打开。

    解决办法:在./config/index.js文件中,build下找到assetsPublicPath,将其值改为'./',即打包后,会在相对目录下查找对应的资源;

 

  2.遇到问题:直接打开打包后的文件,报错webpackJsonp is not defined。

     解决办法:在webpack.prod.conf.js文件中,每个遍历生成的HtmlWebpackPlugin,配置选项中,chunks对应的数组添加'manifest','vendor'。添加这两项的目的是将公用的资源进行单独打包,浏览器缓存后,后面打开的页面就可以直接从缓存中读取。

 

  3.遇到问题:多次打包后,未被覆盖的文件会被保留下来。

     解决办法:安装clean-webpack-plugin插件,在webpack.prod.conf.js文件的plugins中添加如下代码

new CleanWebpackPlugin(['dist'], {    root: path.resolve(__dirname, '../'),}),

 

  

 

转载于:https://www.cnblogs.com/hellobajie/p/7911185.html

你可能感兴趣的文章
css3新增属性:多列(column)
查看>>
redis 主从配置和集群配置
查看>>
手机3D游戏开发:自定义Joystick的相关设置和脚本源码
查看>>
java 数组偶数排在奇数前面
查看>>
window.frames["detailFrm"].isSubmitting = true;//?起什么作用
查看>>
ASCII表
查看>>
idea之debug
查看>>
什么是真正的流程管理?流程管理的是与不是。
查看>>
SEO实践:SEO友好的URL结构
查看>>
洛谷P1613 跑路
查看>>
无论所有题,一定要先分析清楚,所有eade case和逻辑都满足后,再动笔
查看>>
softlayer
查看>>
python各种模块,迭代器,生成器
查看>>
CSS颜色
查看>>
Lunar Lander 月球冒险
查看>>
复习日记-xml/tomcat/response/request
查看>>
Java 关键字final的一小结
查看>>
tp5的include 标签 不能用了么
查看>>
php禁止某ip或ip地址段访问的方法(转载)
查看>>
超级菜鸟的Python之路--前传一
查看>>