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]的更多相关文章

  1. Javascript模块化编程require.js的用法

    JS模块化工具requirejs教程(一):初识requirejs http://www.runoob.com/w3cnote/requirejs-tutorial-1.html JS模块化工具req ...

  2. Javascript模块化编程(三):require.js的用法

    Javascript模块化编程(三):require.js的用法 原文地址:http://www.ruanyifeng.com/blog/2012/11/require_js.html 作者: 阮一峰 ...

  3. Javascript模块化编程(二):AMD规范

    Javascript模块化编程(二):AMD规范   作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_d ...

  4. Javascript模块化编程(一):模块的写法

    Javascript模块化编程(一):模块的写法 作者: 阮一峰 原文链接:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html ...

  5. Javascript模块化编程(二):AMD规范(转)

    这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要 ...

  6. Javascript模块化编程(一):模块的写法(转)

    随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者 ...

  7. Javascript模块化编程(二):AMD规范 作者: 阮一峰

    声明:转载自阮一峰的网络日志 这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可 ...

  8. Javascript模块化编程(一):模块的写法 作者: 阮一峰

    声明:转载自阮一峰的网络日志 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理. ...

  9. Javascript模块化编程之路——(require.js)

    转自:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html Javascript模块化编程(一):模块的写法 随着网站逐渐变成&q ...

随机推荐

  1. 用pid 取主窗口 hwnd

    HWND GetHwndByPid(DWORD dwProcessID) { HWND h = GetTopWindow(); HWND retHwnd = NULL; while ( h ) { D ...

  2. 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', ...

  3. “应用程序无法正常启动(oxc000007b)”解决方案

  4. Iosapp升级版本步骤

    1.打开地址https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa,登录进入 2.选择ManageYour App,选中你要升级的那个 ...

  5. 【spring boot】配置文件 application.properties 属性解析

    1.JPA  hibernate命名策略 完整命名策略 ,查看:http://www.cnblogs.com/sxdcgaq8080/p/7910474.html 2.hibernate的DDL执行策 ...

  6. Caught exception while loading file struts-default.xml 的错误

    转自刘长炯的博客:http://www.blogjava.net/beansoft/archive/2008/10/13/233962.html MyEclipse 6开发JDK6和Struts 2冲 ...

  7. EclipseADT(4.2) 安装 STS(spring )

    因为ADT 版本是4.2, 网上找了一圈 from: https://spring.io/blog/2012/03/14/early-access-springsource-tool-suite-fo ...

  8. Tomcat 性能监控及调优

    1.性能监控 方式1: /usr/local/tomcat7/conf/tomcat-users.xml 添加如下: <role rolename="manager-gui" ...

  9. Cocos2d-x学习笔记(四) 布景层的加入移除

    布景层类也就是CCLayer类,每一个游戏场景中都能够有非常多层,每一层负责各自的任务.显示地图.显示人物等.同一时候层还是一个容器,能够放入文本.图片和菜单.构成游戏中一个个UI.这次将学习在场景中 ...

  10. 原生JavaScript技巧大收集100个

    原生JavaScript技巧大收集 1.原生JavaScript实现字符串长度截取function cutstr(str, len) { var temp; var icount = 0; var p ...