javascript模块化是什么及其优缺点介绍


Posted in Javascript onSeptember 02, 2013

如今backbone、emberjs、spinejs、batmanjs 等MVC框架侵袭而来。CommonJS、AMD、NodeJS、RequireJS、SeaJS、curljs等模块化的JavaScript扑面而来。web前端已经演变成大前端,web前端的发展速度之快。

1)我们来看看什么是模块化?
模块化是一种将系统分离成独立功能部分的方法,可将系统分割成独立的功能部分,严格定义模块接口、模块间具有透明性。javascript中的模块在一些C、PHP、java中比较常见:

c中使用include 包含.h文件;php中使用require_once包含.php文件
java使用import导入包
此中都有模块化的思想。

2)模块化的优缺点:

a>优点:
可维护性
1.灵活架构,焦点分离
2.方便模块间组合、分解
3.方便单个模块功能调试、升级
4.多人协作互不干扰
可测试性
1.可分单元测试

b>缺点:
性能损耗
1.系统分层,调用链会很长
2.模块间通信,模块间发送消息会很耗性能

3)最近的项目中也有用到模块化,使用的是seajs,但是当引用到jquery,jquery easyui/或者jquery UI组件时,有可能会用到很多jquery插件,那这样要是实现一个很复杂的交互时,模块间的依赖会很多,使用define()方法引入模块会很多,不知有么有什么好的方法?

4)附:
内聚度
内聚度指模块内部实现,它是信息隐藏和局部化概念的自然扩展,它标志着一个模块内部各成分彼此结合的紧密程度。好处也很明显,当把相关的任务分组后去阅读就容易多了。 设计时应该尽可能的提高模块内聚度,从而获得较高的模块独立性。

耦合度
耦合度则是指模块之间的关联程度的度量。耦合度取决于模块之间接口的复杂性,进入或调用模块的位置等。与内聚度相反,在设计时应尽量追求松散耦合的系统。

Javascript 相关文章推荐
用js实现随机返回数组的一个元素
Aug 13 Javascript
基于Jquery的动态创建DOM元素的代码
Dec 28 Javascript
三种方式获取XMLHttpRequest对象
Apr 21 Javascript
jQuery简单实现网页选项卡特效
Nov 24 Javascript
js模仿java的Map集合详解
Jan 06 Javascript
JavaScript兼容浏览器FF/IE技巧
Aug 14 Javascript
详解JS几种变量交换方式以及性能分析对比
Nov 25 Javascript
Bootstrap实现各种进度条样式详解
Apr 13 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
vue.js使用3DES加密的方法示例
May 18 Javascript
vue项目中全局引入1个.scss文件的问题解决
Aug 01 Javascript
火狐下table中创建form导致两个table之间出现空白
Sep 02 #Javascript
js的alert弹出框出现乱码解决方案
Sep 02 #Javascript
javascript中的window.location.search方法简介
Sep 02 #Javascript
js Math 对象的方法
Sep 01 #Javascript
javascript ready和load事件的区别示例介绍
Aug 30 #Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
Aug 30 #Javascript
JS下拉缓冲菜单示例代码
Aug 30 #Javascript
You might like
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
js+css在交互上的应用
2010/07/18 Javascript
学习JavaScript的最佳方法分享
2011/10/21 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python append、extend与insert的区别
2016/10/13 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
Python如何使用ConfigParser读取配置文件
2020/11/12 Python
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
运动会广播稿300字
2014/01/10 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
2014财务年终工作总结
2014/12/08 职场文书