基于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 相关文章推荐
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
Sep 01 Javascript
基于jquery实现复选框全选,反选,全不选等功能
Oct 16 Javascript
基于jQuery实现复选框是否选中进行答题提示
Dec 10 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
Sep 21 Javascript
深入理解Javascript中的作用域链和闭包
Apr 25 Javascript
JavaScript制作简单的框选图表
May 15 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
Jul 30 Javascript
浅谈基于Vue.js的移动组件库cube-ui
Dec 20 Javascript
javascript实现遮罩层动态效果实例
May 14 Javascript
JavaScript实现PC端四格密码输入框功能
Feb 19 Javascript
微信小程序自定义联系人弹窗
May 26 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
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
Python实现的knn算法示例
2018/06/14 Python
python进行文件对比的方法
2018/12/24 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
墨西哥购物网站:Elektra
2020/01/21 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
网上开店必备创业计划书
2014/01/26 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
教师党员自我评价范文
2015/03/04 职场文书
销售督导岗位职责
2015/04/10 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫