vue.js学习之vue-cli定制脚手架详解


Posted in Javascript onJuly 02, 2017

前言

年初的时候公司的老后台系统实在难以维护和继续在其上开发了,因为这个系统被很多人写过页面,有前端有后端,编写前端代码时都非常随意,加之没有模块化,复用性和可维护性都极低,便下定决定,重新搞一套。

经过一段时间的调研选择了vue全家桶+elementUI来开发后台系统,让交互体验更好,让开发体验更好,让生产效率提高。

从零搭建其实考虑的事情还挺多的,比如:

  • 如何管理代码仓库
  • 开发环境,测试环境搭建
  • 如何接入公司的打包上线流程
  • 如何目录划分
  • 如何划分模块
  • 登录和权限如何做

这篇文章来记录下和脚手架相关的改造,首先其实就是上了vue-cli来做,可是呢?由于预计项目会有很多页面,这些页面其实是分模块的,不同模块的页面之前其实关系不大。所以我觉得一个用户其实大部分时候只会用到其中一个模块的页面,如果把所有页面做成一个单页应用很多资源加载就不是很必要了,所以第一个改造就是:做成多入口打包,也就是做成多个单页应用,每个模块一个入口。

/build/utils

exports.getEntries = function (globPath) { 
 var entries = {}
 glob.sync(globPath).forEach(function (entry) {
 var basename = path.basename(entry, path.extname(entry))
 entries[basename] = entry
 })
 return entries
}

/build/webpack.base.conf

module.exports = { 
 entry: utils.getEntries('./src/modules/*/*.js'),

/build/webpack.dev.conf

/build/weback.prod.conf

var modules = utils.getEntries('./src/modules/*/*.html') 
Object.keys(modules).forEach(function (moduleName) { 
 var config = {
 filename: moduleName + '/index.html',
 template: modules[moduleName],
 inject: true,
 excludeChunks: Object.keys(modules).filter(function (name) {
  return name != moduleName
 })
 }
 module.exports.plugins.push(new HtmlWebpackPlugin(config))
})

这样就完成了多页面的入口配置,其核心就是两点:1. 入口配置成数组。2. plugins里面添加多个HtmlWebpackPlugin分别对应每一个页面,完成js打包后路径的自动注入功能。

这里还有个地方需要注意,就是抽取公用的js和css代码出来,这里做了一下改造,就是echarts指定提取出来,而不是按引用次数那种自动提取, 这里还踩了个坑,详细见注释。

在webpack.prod.conf的plugins里面加入:

entry: { 
 vendor: ['vue', 'vue-router', 'vuex', 'element-ui'],
 echarts: ['vue-echarts']
 },

// 这个地方天坑啊~~~死人了。。。:(
 // vendor是echarts的父模块,顺序不能反:https://github.com/webpack/webpack/issues/1943
 // 包括声明CommonsChunkPlugin的顺序也是有关系的,不是随意的,后声明的是顶级模块,先声明的是依赖顶级模块的模块
 // HtmlWebpackPlugin注入模块链接的时候的顺序也是由此保证的
 new webpack.optimize.CommonsChunkPlugin({
  names: ['echarts', 'vendor'],
  minChunks: function (module, count) { // 抽取公用vendor.css
  // console.log(module.resource)
  return (
   module.resource &&
   /\.css$/.test(module.resource) &&
   module.resource.indexOf(
   path.join(__dirname, '../node_modules')
   ) === 0
  )
  } 
 }),

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
Feb 05 Javascript
JQuery结合CSS操作打印样式的方法
Dec 24 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
Jun 01 Javascript
js实现的Easy Tabs选项卡用法实例
Sep 06 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
Apr 25 Javascript
jQuery UI插件实现百度提词器效果
Nov 21 Javascript
详解微信小程序 页面跳转 传递参数
Dec 08 Javascript
websocket+node.js实现实时聊天系统问题咨询
May 17 Javascript
详解使用React进行组件库开发
Feb 06 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
Mar 20 Javascript
Element Cascader 级联选择器的使用示例
Jul 27 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
Jul 02 #Javascript
关于使用axios的一些心得技巧分享
Jul 02 #Javascript
React服务端渲染(总结)
Jul 01 #Javascript
Express + Node.js实现登录拦截器的实例代码
Jul 01 #Javascript
详解node-ccap模块生成captcha验证码
Jul 01 #Javascript
vue元素实现动画过渡效果
Jul 01 #Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
Jun 30 #Javascript
You might like
php 归并排序 数组交集
2011/05/10 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
2014/03/12 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
15分钟深入了解JS继承分类、原理与用法
2019/01/19 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
python发送伪造的arp请求
2014/01/09 Python
Python学习笔记_数据排序方法
2014/05/22 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
大学学年自我鉴定
2013/10/28 职场文书
演讲比赛获奖感言
2014/02/02 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
大学毕业感言200字
2014/03/09 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
感恩教师节主题班会
2015/08/12 职场文书
观看安全警示教育片心得体会
2016/01/15 职场文书