官网文档,看着有点云里雾里,个人写的文档又五花八门,好吧,我只能自己看遍各种文档,自己总结了。去粗取精的理解。
一、概念,模块化的管理
1、以module ID代替URL地址
2、相对于baseUrl的地址来加载所有代码
3、在<script>标签中有一个特殊属性data-main="",requirejs使用data-main来启动js加载过程,baseUrl一般设置到与该项目属性相一致的目录。
<script tyoe="text/javascript" data-main="script/main.js" src="script/require.js"></script>//官方
(1)、data-main右侧的main文件可以不带有.js后缀,也可以带有.js后缀
a、demo1
文件目录:
![](https://images0.cnblogs.com/blog/749687/201505/030215376939464.png)
html文件:
<!DOCTYPE html>
<html>
<headlang="en">
<metacharset="UTF-8">
<scriptsrc="require.js"data-main="main.js"></script>
<title></title>
</head>
<body>
</body>
</html>
main.js文件:
/**
* Created by s9-1102 on 2015/4/30.
*/
require.config({
paths:{
app:'js/app'
}
})
require([
'app'
])
app.js文件:
define(function(){
alert(123);
})
上述代码中,main.js文件,带与不带.js后缀都是允许结果都是一样的。
官方解释:Require默认假定的所有资源都是js文件,所以是不需要在module ID(data-main)上添加.js后缀。requirejs会在解析到module ID(data-main)内的path(paths)时自动补上后缀。
4、 data-main入口点
(1)、requirejs在加载时会检查data-main属性
(2)、可以在data-main中设置模块加载选项,加载模块。*data-main中的模块都是异步加载的。如果在页面中加载了其他模块,则不能保证页面中加载的js文件,和data-main中模块的依赖性,当然是有依赖的前提。
5、定义模块
(1)、良好的定义了一个作用域来避免全局名称空间污染。
(2)、显式地列出依赖关系
(3)、以函数参数的形式将依赖注入
(4)、允许加载多个模块,加载的顺序是不定的,但是依赖顺序是正确的。