ECMAScript英特尔:浏览器中的模块规范

 

英特尔设计出一个精简的写模块API:

 

前面论及,为贯彻与Node.js相同格局的模块写法,大牛们做了诸多尽力。

但浏览器环境差距于服务器端,它的模块有一个HTTP请求过程(而Node.js的模块文件就在本地),那一个请求进程多数利用script
tag,script 默许的异步性导致很难落成与Node.js一模一样的模块格式。

 

 

4,具有名的模特块

Modules/Wrappings 使得完成成为现实。就算和Node.js的模块写法不完全一致,但也有为数不少相似之处,使得熟识Node.js的程序员有局地亲切感。

 

  • id: 模块标识,可以简简单单。
  • dependencies: 所信赖的模块,可以概括。
  • factory: 模块的贯彻,或者一个JavaScript对象。

 

 

 

define('index', ['data','base'], function(data, base) {
    // todo
});

 

define({
    users: [],
    members: []
});

 

其中:

上述并且演示了define的三种用法

目前,实现AMD的库有RequireJS 、curl 、Dojo 、bdLoadJSLocalnet 、Nodules 等。

5,包装模块

AMD No Longer A CommonJS
Specification

 

不考虑多了一层函数外,格式和Node.js是均等的:使用require获取重视模块,使用exports导出API。

 

page.js

 

以下是运用英特尔形式开发的大概三层构造(基础库/UI层/应用层):

 

 

define(id?, dependencies?, factory);

define(['base'], function(base) {
    return {
        show: function() {
            // todo with module base
        }
    }
});

也有广大库支持AMD规范,即将自己看做一个模块存在,如MooTools 、jQuery 、qwery 、bonzo  甚至还有 firebug 。

但Node.js终究是劳动器端的JavaScript,没有要求把那个规则放到浏览器JavaScript环境中。

 

仔细的会发觉,还有一种没有现身,即具名模块

UMD和ECMAScript模块

签字模块多数时候是不推荐的,一般由打包工具合并两个模块到一个js文件中时采纳。

data.js

id遵循CommonJS Module
Identifiers
 。dependencies元素的依次和factory参数一一对应。

define(function() {
    return {
        mix: function(source, target) {
        }
    };
});

 

  1. 概念无依靠的模块(base.js)
  2. 概念有依靠的模块(ui.js,page.js)
  3. 定义数据对象模块(data.js)

base.js

define(['data', 'ui'], function(data, ui) {
    // init here
});

 

这时AMD 诞生了,它的全称为异步模块定义。从名称上看便知它是切合script
tag的。也得以说AMD是特意为浏览器中JavaScript环境设计的正规化。它吸取了CommonJS的片段优点,但又不照搬它的格式。开端AMD作为CommonJS的transport
format
 存在,因无法与CommonJS开发者已毕一致而独立出来。它有温馨的wiki 和讨论组 。

 

ui.js

 

define(function(require, exports, module) {
    var base = require('base');
    exports.show = function() {
        // todo with module base
    } 
});

除了define外,英特尔还保留一个关键字require。require 作为正式保留的大局标识符,可以兑现为 module
loader,也得以不兑现。

前方提到dependencies元素的各类和factory一一对应,其实不太严厉。英特尔起头为摆脱CommonJS的牢笼,开创性的指出了自己的模块风格。但新兴又做了息争,包容了
CommonJS Modules/Wrappings 。即又有什么不可如此写

 

相关: