require.js
前面我们已经初步认识了模块化,今天就更深入的了解一下模块化!下面是我今天所学到的,虽然还有不懂的,后面我会弄懂的,下面是我分享的今天的收获!
模块化的规范:我们必须要用同样的方法来写,如果不是这样,我们各自写各自的,那样就乱了!Javascript模块规范共有两种:CommonJS
和AMD!
在CommonJS
中,有一个全局性方法require(),
require()
用于加载模块
比如:
var math = require('math');
math.add(2,3); // 5
AMD是”Asynchronous Module Definition”,是异步模块化定义。
AMD也采用require()语句加载模块,require有两个参数,是用异步方法加载模块,模块的加载不会影响后面的代码运行,但是只要依赖这个模块的语句都会定义在一个回调函数中,等加载完成后,回调函数才会运行!写法如下:
require([module], callback);(第一个参数[module],是一个数组,里面的成员就是要加载的模块;第二个参数callback,则是加载成功之后的回调函数)
代码:
require(['math'], function (math) {
math.add(2, 3);
});
require.js加载的模块是按照AMD的规范写的!
比如:
假如现在有一个math.js文件,它定义了一个math模块。那么,math.js就要像这样写:
// math.js define(function (){
var add = function (x,y){ return x+y;
};
return { add: add };
});
加载方法如下:
// main.js
require(['math'], function (math){
alert(math.add(1,1));
});
模块必须采用特定的define()
函数来定义。如果一个模块不依赖其他模块,那么可以直接定义在define()函数之中!
如果这个模块还依赖其他模块,那么define()函数的第一个参数,必须是一个数组,指明该模块的依赖性
例如:
define(['myLib'], function(myLib){
function foo(){ myLib.doSomething();
} return {
foo : foo };
});