基于vue-cli的改造的多页面开发脚手架
2018-06-24 00:54:17来源:未知 阅读 ()
项目的GitHub地址:https://github.com/hellobajie/vue-cli-multipage
该脚手架同时支持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, '../'), }),
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:随机生成32位字符串算法
下一篇:ajax的使用
- 基于JQuery的多标签实现代码 2020-03-29
- vue-cli中打包图片路径错误的解决方法 2020-01-17
- 基于 Lerna 管理 packages 的 Monorepo 项目最佳实践 2019-08-14
- vue-cli3构建ts项目 2019-08-14
- JS实现在线ps功能 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash