Javascript模块化编程-初识[1]
JS模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心业务逻辑,其他都可以加载别人已经写好的模块。
但是,JS不是一种模块化编程语言,它不支持类,所以没有严格意义上的模块。为了实现模块化,类模块化应运而生。
1、原始写法:
模块就是实现特定功能的一组方法。
只需要把不同的函数简单的放在一起,就是一个模块。
Eg:
function t1(){
//...
}
function t2(){
//...
}
缺点:污染全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系。
2、对象写法:
为了解决原始写法的缺陷,可以把模块写成一个对象,所有模块成员都放在对象里面。
Eg:
var module1=new Object({
num:0,
Fn1:function(){
//...
},
Fn2:function(){
//...
}
});
缺陷:全局变量可以随意被改写。
3、立即执行函数写法
立即执行函数,可以达到不暴露私有成员的目的。
Eg:
var class1=(function(){
var num=0;
var fn1=function(){
//...
};
var fn2=function(){
//...
};
return {
m1:fn1,
m2:fn2,
};
})();
这种写法就是JS模块化的常规写法。
4、放大模式
如果一个模块很大,需要分成多个部分,就必须采用放大模式。
Eg:
var class2=(function(c1){
c1.fn3=function(){
//...
}
})(class1);
5、实现调用外部全局变量,Jquery etc.
独立性是模块化的一个重要特点,模块内部最好不要和其它外部成员直接交互。
为了实现模块化调用外部全局成员,必须显示地将其它变量输入模块。
Eg:
var class1=(function (Jq,ya){
//...
})(jQuery,YAHOO);
上面的模块实现了JQuery和YUI库。这样做的目的,保证了模块的独立性,还使得模块之间的依赖变得明显。
Javascript模块化编程-初识[1]的更多相关文章
- Javascript模块化编程require.js的用法
JS模块化工具requirejs教程(一):初识requirejs http://www.runoob.com/w3cnote/requirejs-tutorial-1.html JS模块化工具req ...
- Javascript模块化编程(三):require.js的用法
Javascript模块化编程(三):require.js的用法 原文地址:http://www.ruanyifeng.com/blog/2012/11/require_js.html 作者: 阮一峰 ...
- Javascript模块化编程(二):AMD规范
Javascript模块化编程(二):AMD规范 作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_d ...
- Javascript模块化编程(一):模块的写法
Javascript模块化编程(一):模块的写法 作者: 阮一峰 原文链接:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html ...
- Javascript模块化编程(二):AMD规范(转)
这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要 ...
- Javascript模块化编程(一):模块的写法(转)
随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者 ...
- Javascript模块化编程(二):AMD规范 作者: 阮一峰
声明:转载自阮一峰的网络日志 这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可 ...
- Javascript模块化编程(一):模块的写法 作者: 阮一峰
声明:转载自阮一峰的网络日志 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理. ...
- Javascript模块化编程之路——(require.js)
转自:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html Javascript模块化编程(一):模块的写法 随着网站逐渐变成&q ...
随机推荐
- 用pid 取主窗口 hwnd
HWND GetHwndByPid(DWORD dwProcessID) { HWND h = GetTopWindow(); HWND retHwnd = NULL; while ( h ) { D ...
- Python: Write UTF-8 characters to csv file
To use codecs, we can write UTF-8 characters into csv file import codecs with open('ExcelUtf8.csv', ...
- “应用程序无法正常启动(oxc000007b)”解决方案
- Iosapp升级版本步骤
1.打开地址https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa,登录进入 2.选择ManageYour App,选中你要升级的那个 ...
- 【spring boot】配置文件 application.properties 属性解析
1.JPA hibernate命名策略 完整命名策略 ,查看:http://www.cnblogs.com/sxdcgaq8080/p/7910474.html 2.hibernate的DDL执行策 ...
- Caught exception while loading file struts-default.xml 的错误
转自刘长炯的博客:http://www.blogjava.net/beansoft/archive/2008/10/13/233962.html MyEclipse 6开发JDK6和Struts 2冲 ...
- EclipseADT(4.2) 安装 STS(spring )
因为ADT 版本是4.2, 网上找了一圈 from: https://spring.io/blog/2012/03/14/early-access-springsource-tool-suite-fo ...
- Tomcat 性能监控及调优
1.性能监控 方式1: /usr/local/tomcat7/conf/tomcat-users.xml 添加如下: <role rolename="manager-gui" ...
- Cocos2d-x学习笔记(四) 布景层的加入移除
布景层类也就是CCLayer类,每一个游戏场景中都能够有非常多层,每一层负责各自的任务.显示地图.显示人物等.同一时候层还是一个容器,能够放入文本.图片和菜单.构成游戏中一个个UI.这次将学习在场景中 ...
- 原生JavaScript技巧大收集100个
原生JavaScript技巧大收集 1.原生JavaScript实现字符串长度截取function cutstr(str, len) { var temp; var icount = 0; var p ...