基于vue-cli的改造的多页面开发脚手架
项目的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, '../'),
}),
基于vue-cli的改造的多页面开发脚手架的更多相关文章
- atitit.基于 Commons CLI 的命令行原理与 开发
atitit.基于 Commons CLI 的命令行原理与 开发 1. 命令行支持的格式有以下几种: 1 2. json化,map化的命令行参数内部表示 1 3. Ati cli 2 4. CLI库 ...
- 基于Vue、web3的以太坊项目开发及交易内幕初探 错误解决总结
基于Vue.web3的以太坊项目开发及交易内幕初探 本文通过宏观和微观两个层面窥探以太坊底层执行逻辑. 宏观层面描述创建并运行一个小型带钱包的发币APP的过程,微观层面是顺藤摸瓜从http api深入 ...
- 基于@vue/cli 的构建项目(3.0)
1.检测node的版本号 注意:1.Vue CLI需要Node.js的版本 8.9+(推荐8.11.0+) 所以在安装Vue CLI之前先看下node的版本 node -v 2.安装@vue/cli ...
- 基于vue cli 3.0创建前端项目并安装cube-ui
前提条件: 安装node.js. 国内的开发者最好先配置淘宝镜像. 之后用cnpm来代替npm命令. 项目创建过程: 打开cmd,输入命令进入目标工作空间,以本机项目为例: cd /d d: cd D ...
- 基于Vue cli生成的Vue项目的webpack4升级
前面的话 本文将详细介绍从webpack3到webpack4的升级过程 概述 相比于webpack3,webpack4可以零配置运行,打包速度比之前提高了90%,可以直接到ES6的代码进行无用代码剔除 ...
- 使用基于Vue.js和Hbuilder的混合模式移动开发打造属于自己的移动app
近几年,混合模式移动应用的概念甚嚣尘上,受到了一些中小型企业的青睐,究其原因,混合模式开发可以比传统移动开发节约大量的开发成本和人力成本. Hybrid App(混合模式移动应用)是指介于web-ap ...
- 基于 vue+vue-router+vuex+axios+koa+koa-router 本地开发全栈项目
因为毕业设计要做基于Node服务器的项目,所以我就想着用刚学的vue作为前端开发框架,vue作为Vue.js应用程序的状态管理模式+库,axios基于promise用于浏览器和node.js的http ...
- 基于vue现有项目的服务器端渲染SSR改造
前面的话 不论是官网教程,还是官方DEMO,都是从0开始的服务端渲染配置.对于现有项目的服务器端渲染SSR改造,特别是基于vue cli生成的项目,没有特别提及.本文就小火柴的前端小站这个前台项目进行 ...
- 基于laravel5.4 vue 和vue-element搭建的单页面后台CMS
介绍 该项目后台是基于vue和laravel搭建的单页面CMS系统,包含了文章管理,权限管理,用户管理等基本模块. 前台使用了传统web技术,laravel渲染搭建了个博客系统 github地址:ht ...
随机推荐
- react 动态获取数据
如果reander()里面的dom元素是动态获取的,就要将函数放到setSTATE()里面执行
- weex 开发踩坑日记--环境配置、安卓运行、adb、开发
环境配置方面 1.需要安装java和android环境,java的话一定要下载jdk而不是jre. 在"系统变量"新建一个变量名为JAVA_HOME的变量,变量值为你本地java的 ...
- Online Resource Mapping for SDN Network Hypervisors using Machine Learning
发表时间:2016 一些定义: self-configuring networks: FlowVisor: FlowVisor是建立在OpenFlow之上的网络虚拟化工具,它可以将物理网络划分成多个逻 ...
- java.lang.Exception: No tests found matching Method tes(com.bw.test.Testrefiect) from org.junit.vintage.engine.descriptor.RunnerRequest@3bfdc050 at org.junit.internal.requests.FilterRequest.getRunner
junit 方法 没有加上注解 @Test java.lang.Exception: No tests found matching Method tes(com.bw.test.Testre ...
- Jfrog Maven jenkins pipeline 流水线 培训 简单实验
1. 公司购买了一套jfrog artifactory ,然后厂商组织了一次培训 本次简单记录一下 jenkins和jfrog 二进制仓库的简单连接使用 2. 前期环境准备. scp jdk的tar包 ...
- SQLSERVER 备份数据库的注意事项
1. SQLSERVER 有一个压缩备份集的功能,能够实现大概15%的压缩比(跟数据类型不同而不同) 之前竟然没发现...浪费了好多磁盘资源.. 多学习多思考..
- WebService相关
1.WebService 之 WSDL文件 讲解 2.WSDL样式详解 3.IntelliJ IDEA 开发 WebService 4.浅谈WebService的调用 5.用IDEA8快速开发WebS ...
- jmeter创建基本的FTP测试计划
这个测试计划中创建4个用户从FTP站点请求2个文件,也可以让用户重复发送2次请求,这样总请求次数=4*2*2=16 使用以下元素:thread group / FTP Request /FTP Req ...
- python之itemgetter函数:对字典列表进行多键排序
itemgetter函数:对字典列表进行多键排序 from operator import itemgetter list_people = [ {'name': 'Mike', 'age': 22, ...
- java 使用 WebUploader
参考: http://blog.csdn.net/finalAmativeness/article/details/54668090 最近项目需要多文件上传. 所以使用了 baidu的 webuplo ...