// RequireJS有两个主要方法(method): define()和require()。
// define()的回调函数需要有一个返回值作为这个模块定义。
// 这些类似被定义的模块叫作AMD (异步模块定义)
// 原理:data-main属性加载入口文件,在底层动态创建script标签,用正则表达式匹配加载的入口文件名,动态的创建标签,动态的加载。
// 底层是动态创建script标签来加载js文件,异步加载,使用的是async(异步的)。底层通过正则解析字符串,找require。
// 动态加载js的原理:
// var document.createElement(oScript);
// oScript.src=index;
// Document.body.appendChild();
// 动态创建script标签来加载js文件
// 异步:不用等待。在script里面加上async
<script src="require.js" data-main="xxx.js"></script>
// xxx.js是入口文件,页面级的JS,比如index.js,可以不写.js,直接写index
require(['a'],function(add2){
alert(add2(4+5));
});
define(function(){
function add(a,b){
return a + b;
}
return add
});
// 模块与函数的区别:模块是粒度更大的代码的抽象和封装?
// AMD依赖前置require.js AMD 是提前执行 AMD 推崇依赖前置 AMD 推崇复用接口 异步模块定义
// CMD 依赖就近sea.js CMD 是延迟执行 CMD 推崇依赖就近 CMD 推崇单用接口 通用模块定义