基于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 相关文章推荐
删除Javascript Object中间的key
Nov 18 Javascript
基于豆瓣API+Angular开发的web App
Jan 02 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
Sep 14 Javascript
jQuery validate验证插件使用详解
May 11 Javascript
javascript RegExp 使用说明
May 21 Javascript
jqGrid用法汇总(全经典)
Jun 28 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
JS原型与继承操作示例
May 09 Javascript
Element Tooltip 文字提示的使用示例
Jul 26 Javascript
uin-app+mockjs实现本地数据模拟
Aug 26 Javascript
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
浅谈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自定义函数返回多个值
2006/11/26 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
JS location几个方法小姐
2008/07/09 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
Django中cookie的基本使用方法示例
2018/02/03 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
python的sorted用法详解
2019/06/25 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
Python类的动态绑定实现原理
2020/03/21 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
CSS3 display知识详解
2015/11/25 HTML / CSS
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
安全生产月标语
2014/10/07 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
爱心捐款活动总结
2015/05/09 职场文书
初中同学会致辞
2015/08/01 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript
教你部署vue项目到docker
2022/04/05 Vue.js
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers