JavaScript模块化

2017-07-25  本文已影响10人  losspm

为什么要使用模块化


所谓的模块化,就是将网页的功能打包成单独的模块来使用,一个模块就是实现特定功能的文件,有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。
使用模块化的主要目的

CMD,AMD,commonJS


CMD

所谓的CMD是common module definition的缩写,CMD规范是国内发展出来的,就类似AMD有个requireJS,CMD有SeaJS一样,requireJS和SeaJS所要解决的问题一样,只是在解决问题的手段上存在着一些差异

语法
SeaJS遵从一个模块一个文件的写法,因此就常用文件名作为模块ID。
CMD推崇依赖就近,所以一般不在define的参数中写依赖,在factory中写。

factory有三个参数

factory(require, exports, module)

require
require是factory中的第一个参数

require(id)

require是一个方法,接受 模块标识 为唯一参数,用来获取其他模块的提供的接口。


exports
exports是一个对象,用来对外界提供模块接口


module
module 是一个对象,上面存储了与当前模块相关联的一些属性和方法


demo

// 定义模块  myModule.js
define(function(require, exports, module) {
  var $ = require('jquery.js')
  $('div').addClass('active');
});

// 加载模块
seajs.use(['myModule.js'], function(my){

});

AMD

AMD指的是Asynchronous Module Definition,由于不是原生JS支持,使用AMD所对应的函数库也就是requireJS,实际上AMD 是 RequireJS 在推广过程中对模块定义的规范化的产出。

AMD主要解决两个问题

语法
require定义了一个函数define,它是全局变量,用来定义模块

define(id?, dependencies?, factory);

在页面上使用require函数加载模块

require([dependencies], function(){})

require()函数接受两个参数,分别为

require()函数在加载依赖的函数的时候是异步加载的,这样浏览器不会失去响应,它指定的回调函数,只有前面的模块都加载成功后,才会运行,解决了依赖性的问题。


commonJS

CommonJS是服务器端模块的规范,Node.js采用了这个规范。Node.JS首先采用了js模块化的概念。

上一篇下一篇

猜你喜欢

热点阅读