关闭

JS中模块的写法

585人阅读 评论(0) 收藏 举报
分类:

一、原始写法

模块就是实现特定功能的一组方法。
只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。
  function m1(){
    //...
  }
  function m2(){
    //...
  }


 

二、对象写法

为了解决上面的缺点,可以把模块写成一个对象,所有的模块成员都放到这个对象里面。
  var module1 = new Object({
    _count : 0,
    m1 : function (){
      //...
    },
    m2 : function (){
      //...
    }
  });


 

三、立即执行函数写法

使用"立即执行函数"(Immediately-Invoked Function Expression,IIFE),可以达到不暴露私有成员的目的。
  var module1 = (function(){
    var _count = 0;
    var m1 = function(){
      //...
    };
    var m2 = function(){
      //...
    };
    return {
      m1 : m1,
      m2 : m2
    };
  })();


  

四、放大模式

如果一个模块很大,必须分成几个部分,或者一个模块需要继承另一个模块,这时就有必要采用"放大模式"(augmentation)。
  var module1 = (function (mod){
    mod.m3 = function () {
      //...
    };
    return mod;
  })(module1);
  


五、宽放大模式(Loose augmentation)

在浏览器环境中,模块的各个部分通常都是从网上获取的,有时无法知道哪个部分会先加载。如果采用上一节的写法,第一个执行的部分有可能加载一个不存在空对象,这时就要采用"宽放大模式"。
  var module1 = ( function (mod){
    //...
    return mod;
  })(window.module1 || {});
与"放大模式"相比,"宽放大模式"就是"立即执行函数"的参数可以是空对象。


六、输入全局变量

独立性是模块的重要特点,模块内部最好不与程序的其他部分直接交互。
为了在模块内部调用全局变量,必须显式地将其他变量输入模块。
  var module1 = (function ($, YAHOO) {
    //...
  })(jQuery, YAHOO);
上面的module1模块需要使用jQuery库和YUI库,就把这两个库(其实是两个模块)当作参数输入module1。这样做除了保证模块的独立性,还使得模块之间的依赖关系变得明显。
0
0
查看评论

AMD模块写法

AMD模块的写法 require.js加载的模块,采用AMD规范。也就是说,模块必须按照AMD的规定来写。 具体来说,就是模块必须采用特定的define()函数来定义。如果一个模块不依赖其他模块,那么可以直接定义在define()函数之中。 假定现在有一个math.js文件,它定义了一个mat...
  • LONGSHAN123456789
  • LONGSHAN123456789
  • 2016-06-16 15:35
  • 806

JS模块化写法

随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂。 网页越来越像桌面程序,需要一个团队分工协作、进度管理、单元测试等等......开发者不得不使用软件工程的方法,管理网页的业务逻辑。 Javascript模块化编程,已经成为一个迫切的需...
  • lipc_
  • lipc_
  • 2016-07-25 15:51
  • 3432

js 中$.ajax 以及$.post 写法

$.ajax(                              &#...
  • u011558902
  • u011558902
  • 2014-10-09 17:28
  • 1833

一种js构造函数的写法

mootools 1.2b1有了很大的变化,其中,把构造函数简化一下是这么写的:var Native = function(options)...{    var object = options.i...
  • kentchenj
  • kentchenj
  • 2007-11-30 16:34
  • 1299

js中if else写法优劣

在项目的js文件中看到有如下两种写法,如图: 支持第一种写法的理由是:如果以后有多层判断,当条件第一次不满足条件时就直接return false,以后的判断就不需要执行,可以减少不必要的代码校验。 支持第二种写法的理由是:如果以后有多层判断,第一种就会出现多个if else判断,代码...
  • zl544434558
  • zl544434558
  • 2014-12-25 11:55
  • 1792

javascript开发中 if 语句的推荐写法

javascript开发中 if 语句的推荐写法
  • SecondLieutenant
  • SecondLieutenant
  • 2017-06-14 13:53
  • 288

js css 相对路径的写法

在使用相对路径时,我们需要知道如何描述当前文档所在目录以及如何描述当前文档的上一级目录(父目录)通常我们使用“./”或空描述当前文档所在目录, 例如,当前文档为/home/www/a/1.htm,则“./2.htm”和“2.htm”都是一个指向“/home/www/a/2.ht
  • longqianglaoda
  • longqianglaoda
  • 2011-09-30 09:48
  • 1996

js创建数组的写法

1.数组的声明方法  (1): arrayObj = new Array(); //创建一个数组。  复制代码 代码如下: var arr1 = new Array();  (2):arrayObj = new Array([size]) 创建一个数组并指定...
  • qq798833488
  • qq798833488
  • 2014-06-13 16:56
  • 2055

UMD和ECMAScript模块

From:http://snandy.iteye.com/blog/1450665 博客分类: Modular JS 因为 AMD 和CommonJS的糅合,所以先看看 CommonJS 和 AMD 是什么? 模块:简单理解就是JS的对象化,...
  • henrypt
  • henrypt
  • 2016-12-06 09:46
  • 1147

js模块化编程一:模块化函数的介绍

js模块化一:模块化函数的介绍
  • fengchao2016
  • fengchao2016
  • 2017-01-15 17:45
  • 527
    个人资料
    • 访问:987239次
    • 积分:11774
    • 等级:
    • 排名:第1525名
    • 原创:287篇
    • 转载:75篇
    • 译文:2篇
    • 评论:169条
    博客专栏
    最新评论