RequireJS:是一个基于原生js实现的模块化解决方案
-
随着功能的增加,暴露的全局变量也会越来越多(requireJS几乎没有全局变量)
-
不能很好的解决模块依赖的问题
使用require的好处
-
-
减少全局变量污染
seaJS-->CMD规范-->Common Module Define-->同步模块加载规范 :玉伯
如何使用require呢?
方法很简单,首先:
1.引包:
<script src="你的require的路径" data-main=“main.js></script>
ps:data-main是入口js的路径.在使用require时可能会引用很多的模块,这些模块的引入如果直接放入index中会看着十分混乱,
所以我们一般会常见一个main.js专门来解决这些引用问题。
这样使用的话我们整个index。HTML页面就只需要引入<script src="你的require的路径" data-main=“main.js></script>即可。
2.定义模块。
模块的定义:
创建一个main.js文件。
定义模块。每个js文件只能定义一个模块
define([],function(){
//逻辑代码
console.log("成功");
})
3.使用:
require(["main"],function(main){
//[]数组中传入要注入的依赖文件的名称;functionz()中是接受的接受的接收的参数,
//参数和注入依赖名要一一对应;如果依赖文件没有返回值()中中的参数可以省略 ,故无返回值的依赖要最后引入 ;
});
//[]数组中传入要注入的依赖文件的名称;functionz()中是接受的接受的接收的参数,
//参数和注入依赖名要一一对应;如果依赖文件没有返回值()中中的参数可以省略 ,故无返回值的依赖要最后引入 ;
});
最终执行index文件的结果会输出到控制台:成功。
出现模块依赖其他模块的解决方法
定义一个write模块和定义一个出书模块。
出书模块要依赖write模块。
创建write.js
代码:
define([],function(){
//console.log("我负责写书");
})
创建product.js
代码:
eg:
define(['write'],function(write){//"write",是注入依赖文件的名称,write是形参,用于接受返回值。
write();//调用注入的依赖文件。
当模块之间有相互依赖时
,直接在模块的定义参数数组中添加要注入依赖的名字(字符串)。
})
使用方法和上面一样。