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 相关文章推荐
枚举JavaScript对象的函数
Dec 22 Javascript
js实现iframe动态调整高度的代码
Jan 06 Javascript
页面回到顶部的三种实现(锚标记,js)
Oct 01 Javascript
json原理分析及实例介绍
Nov 29 Javascript
详解JavaScript中数组的相关知识
Jul 29 Javascript
深入理解JavaScript程序中内存泄漏
Mar 17 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
Jun 12 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
Nov 03 Javascript
详解vue项目的构建,打包,发布全过程
Nov 23 Javascript
jQuery pjax 应用简单示例
Sep 20 jQuery
JS监听事件的叠加和移除功能
Nov 19 Javascript
详解如何在vue项目中使用layui框架及采坑
May 05 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 spl_autoload_register实现自动加载研究
2011/12/06 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
PHP实现的简单mock json脚本分享
2015/02/10 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
python实现同时给多个变量赋值的方法
2015/04/30 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
电子技术专业中专生的自我评价
2013/12/17 职场文书
2014年师德承诺书
2014/05/23 职场文书
学校志愿者活动总结
2014/06/27 职场文书
活动总结格式
2014/08/30 职场文书
迎新生标语大全
2014/10/06 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
Python Matplotlib绘制动画的代码详解
2022/05/30 Python
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL