基于vue-cli搭建多模块且各模块独立打包的项目


Posted in Javascript onJune 12, 2019

如果我们在开发系统A时,能够按模块划分生成多份静态资源包,最终的成果物中,会有多个子目录,每个子目录可独立运行,完成一个业务功能。这样的话,我们有任何系统需要我们开发过的任何模块,都可以直接打包指定的模块,灵活组装。

优点:

1、可与其他系统灵活组装

2、各个模块相互不受影响,所以不受框架和开发模式的制约

 3、不同模块可以分开部署

4、后期维护风险小,可以持续的、稳定的进行维护

 缺点:

1、各个模块有相互独立的资源包,那么如果有相同的资源引用,不能复用

2、模块的组装要依赖iframe,所以要对浏览器安全设置、cookie共享等问题进行单独处理

3、用iframe来包裹组件,组件所能控制到的范围就是其所在的iframe,当涉及到全屏的应用场景时,会比较麻烦

4、不同组件之间的通信比较麻烦 实现目标

vue-cli默认打包方式的成果物:

基于vue-cli搭建多模块且各模块独立打包的项目

修改配置后生成的成果物结构:

基于vue-cli搭建多模块且各模块独立打包的项目 

思路

由于我们现在的项目是多模块的,每个模块都应该有独立的入口,所以我们修改src目录结构如下:

基于vue-cli搭建多模块且各模块独立打包的项目

注意:原来的src下的main.js、index.html和app.vue已经没用了,可以删掉

然后模块内的目录结构如下图所示:

基于vue-cli搭建多模块且各模块独立打包的项目

注意:

这里跟原来的src下的main.js、index.html和app.vue一样的,只不过我们把main.js改成了index.js而已。 至于模块内要使用路由、状态管理都可以根据自己的需求去配置了。

以下是修改webpack配置的详细步骤

第一步:增加build/module-conf.js用来处理获取模块目录等问题

第二步:增加build/build-all.js用来处理循环执行打包命令

第三步:修改build/build.js增加MODULE_ENV参数,用来记录当前打包的模块名称,增加MODE_ENV参数,用来记录当前打包的模式

第四步:修改config/index.js的配置,修改打包时的出口目录配置、html入口模板的配置以及静态资源路径配置

第五步:修改webpack.base.conf.js的入口配置,根据传参,动态配置入口文件

第六步:修改webpack.dev.conf.js的配置,增加多入口时webpackHtmlPlugin插件的配置,增加静态资源服务器的配置

第七步:修改webpack.prod.conf.js的配置,增加对不同打包模式的处理。

第八步:修改package.json,增加npm run build-all指令 构建指令 打包全部模块到一个资源包下面,每个模块的入口是module.html文件,静态资源都在static目录中,这种方式可以复用重复的资源

npm run build

打包指定模块到一个资源包下面,每个模块的入口是module.html文件,静态资源都在static目录中,这种方式可以复用重复的资源

npm run build moduleName1,moduleName2,...

打包所有模块,然后每个模块彼此独立,有几个模块,就产生几个静态资源包,这种方式不会复用重复的资源

npm run build-all

总结

以上所述是小编给大家介绍的基于vue-cli搭建多模块且各模块独立打包的项目,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
限制文本框输入N个字符的js代码
May 13 Javascript
Javascript公共脚本库系列(一): 弹出层脚本
Feb 24 Javascript
javascript高级学习笔记整理
Aug 14 Javascript
JS编程小常识很有用
Nov 26 Javascript
实现动画效果核心方式的js代码
Sep 27 Javascript
javascript中interval与setTimeOut的区别示例介绍
Mar 14 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
Oct 17 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
Feb 05 Javascript
JS中产生标识符方式的演变
Jun 12 Javascript
JavaScript闭包实例详解
Jun 03 Javascript
详解React中setState回调函数
Jun 14 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
Sep 20 Javascript
浅谈webpack 四个核心概念之Entry
Jun 12 #Javascript
vue安装遇到的5个报错及解决方法
Jun 12 #Javascript
深入学习JavaScript 高阶函数
Jun 11 #Javascript
javascript防抖函数debounce详解
Jun 11 #Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
Jun 11 #Javascript
vue实现路由懒加载及组件懒加载的方式
Jun 11 #Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
Jun 11 #Javascript
You might like
PHP的一个基础知识 表单提交
2011/07/04 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
PHP 中常量的知识整理
2017/04/14 PHP
thinkphp分页集成实例
2017/07/24 PHP
js 获取服务器控件值的代码
2010/03/05 Javascript
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
vue项目中实现的微信分享功能示例
2019/01/21 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
2020/08/10 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
python str与repr的区别
2013/03/23 Python
Python中使用PIPE操作Linux管道
2015/02/04 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
css3背景图片透明叠加属性cross-fade简介及用法实例
2013/01/08 HTML / CSS
Turnbull & Asser官网:英国皇室御用的顶级定制衬衫
2019/01/31 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
家长会演讲稿范文
2014/01/10 职场文书
讲座新闻稿
2015/07/18 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL
Python中使用ipython的详细教程
2021/06/22 Python
Redis实战高并发之扣减库存项目
2022/04/14 Redis
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript