作家
登录

RequireJS模块化编程详解

作者: 来源: 2017-05-18 12:06:31 阅读 我要评论

RequireJS模块化编程详解

1.模块的写法

模块化编程一般都有这么几个过度过程,如下描述。

原始办法

  1. function m1(){ 
  2. //... 
  3. function m2(){ 
  4. //... 
  5.  

膳绫擎的函数m1()和m2(),构成一个模块。应用的时刻,直接调用就行了。

这种做法的缺点很明显:"污染"了全局变量,无法包管不与其他模块产生变量名冲突,并且模块成员之间看不出直接关系。

对象写法

为懂得决膳绫擎的缺点,可以把模块写成一个对象,所有的模块成员都放到这个对象琅绫擎。

  1. var module1 = new Object({ 
  2. _count : 0, 
  3. m1 : function (){ 
  4. //... 
  5. }, 
  6. m2 : function (){ 
  7. //... 
  8. });  

膳绫擎的函数m1()和m2(),都封装在module1对象里。应用的时刻,就是调用这个对象的属性。

  1. console.info(module1._count); //undefined 
  1. module1.m1(); 

然则,如许的写法会裸露所有模块成员,内部状况可以被外部改写。比如,外部代码可以直接改变内部计数器的值。

  1. module1._count = 5; 

应用膳绫擎的写法,外部代码无法攫取内部的_count变量。

module1就是Javascript模块的根本写法。下面,再对这种写法进行加工。

放大年夜模式

如不雅一个模块很大年夜,必须分成就个部分,或者一个模块须要持续另一个模块,这时就有须要采取"放大年夜模式"(augmentation)。

  1. var module1 = (function (mod){ 
  2. mod.m3 = function () { 
  3. //... 
  4. }; 
  5. return mod; 
  6. })(module1);  

膳绫擎的代码为module1模块添加了一个新办法m3(),然后返回新的module1模块。

宽放大年夜模式(Loose augmentation)

在浏览器情况中,模块的各个部分平日都是大年夜网上获取的,有时无法知道哪个部分会先加载。如不雅采取上一节的写法,第一个履行的部分有可能加载一个不存在空对象,这时就要采取"宽放大年夜模式"。

  1. var module1 = ( function (mod){ 
  2.  
  3. //... 
  4.  
  5. return mod; 
  6.  
  7. })(window.module1 || {});  

与"放大年夜模式"比拟,"宽放大年夜模式"就是"急速履行函数"的参数可所以空对象。

输入全局变量

自力性是模块的重要特点,模块内部最好不与法度榜样的其他部分直接交互。

为了在模块内部调用全局变量,必须显式地将其他变量输入模块。

  1. var module1 = (function ($, YAHOO) { 
  2. //... 
  3. })(jQuery, YAHOO);  

膳绫擎的module1模块须要应用jQuery库和YUI库,就把这两个库(其实是两个模块)算作参数输入module1。如许做除了包管模块的自力性,还使得模块之间的依附关系变得明显。

2.AMD规范

这标记"Javascript模块化编程"正式出生。因为诚实说,在浏览器情况下,没有模块也不是特别大年夜的问题,毕竟网页法度榜样的复杂性有限;然则在办事器端,必定要有模块,与操作体系和其他应用法度榜样互动,不然根本没法编程。

node.js的模块体系,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性办法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面如许加载。

 1/4    1 2 3 4 下一页 尾页

  推荐阅读

  如何安装pandom : 一个针对Linux的真随机数生成器

本教程只针对 amd64/x86_64 架构 Linux 内核版本大年夜于等于 2.6.9 的体系。本文将解释若何安装 pandom,这是一个由 ncomputers.org 保护的准时颤抖真随机数生成器。我们老是建议在应用>>>详细阅读


本文标题:RequireJS模块化编程详解

地址:http://www.17bianji.com/lsqh/35293.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)