全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

前言

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

经过一段时间的调研选择了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
  )
  } 
 }),

总结

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


# vue  # cli脚手架  # vuecli脚手架  # vue.js  # cli  # vue.js的手脚架vue-cli项目搭建的步骤  # 详解如何使用vue-cli脚手架搭建Vue.js项目  # vue.js之vue-cli脚手架的搭建详解  # vue-cli入门之项目结构分析  # Vue学习笔记进阶篇之vue-cli安装及介绍  # 深入理解Vue-cli搭建项目后的目录结构探秘  # 详解vue-cli本地环境API代理设置和解决跨域  # 详解vue-cli快速构建项目以及引入bootstrap、jq  # 使用 vue.js 构建大型单页应用  # 的是  # 多个  # 这篇文章  # 会有  # 有个  # 我觉得  # 第一个  # 上了  # 如有  # 很多人  # 不是很  # 只会  # 人了  # 来做  # 其中一个  # 谢谢大家  # 要了  # 需要注意  # 写过  # 其上 


相关文章: 建站主机CVM配置优化、SEO策略与性能提升指南  学校免费自助建站系统:智能生成+拖拽设计+多端适配  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  小型网站制作HTML,*游戏网站怎么搭建?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  广德云建站网站建设方案与建站流程优化指南  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  建站主机类型有哪些?如何正确选型  西安大型网站制作公司,西安招聘网站最好的是哪个?  建站之星收费标准详解:套餐费用及年费价格表一览    如何在企业微信快速生成手机电脑官网?  详解jQuery停止动画——stop()方法的使用  建站之星安装步骤有哪些常见问题?  如何基于云服务器快速搭建网站及云盘系统?  如何选择域名并搭建高效网站?  建站之星如何修改网站生成路径?  建站之星会员如何解锁更多建站功能?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  高防服务器如何保障网站安全无虞?  如何在七牛云存储上搭建网站并设置自定义域名?  C++时间戳转换成日期时间的步骤和示例代码  盐城做公司网站,江苏电子版退休证办理流程?  如何用狗爹虚拟主机快速搭建网站?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  如何用PHP快速搭建CMS系统?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  ppt制作免费网站有哪些,ppt模板免费下载网站?  建站之星备案流程有哪些注意事项?  制作网站外包平台,自动化接单网站有哪些?  如何选择高效便捷的WAP商城建站系统?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  如何在服务器上三步完成建站并提升流量?  Swift中循环语句中的转移语句 break 和 continue  微课制作网站有哪些,微课网怎么进?  建站主机与虚拟主机有何区别?如何选择最优方案?  如何在阿里云ECS服务器部署织梦CMS网站?  javascript中的try catch异常捕获机制用法分析  创业网站制作流程,创业网站可靠吗?  如何在万网自助建站平台快速创建网站?  做企业网站制作流程,企业网站制作基本流程有哪些?  Python文件管理规范_工程实践说明【指导】  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  建站之星导航配置指南:自助建站与SEO优化全解析  模具网站制作流程,如何找模具客户?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  建站之星如何快速生成多端适配网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。