requirejs
是js的一个文件和模块加载器
兼容IE6+和标准浏览器
模块化开发:可以重复调用,相对独立
动态加载js文件
主文件
<script src="" data-main=""></script>
//data-main 入口文件
入口文件
require([],function(){})
//[] 依赖的js文件
模块[]
define([],function(){
......
return ...;
})
//[] 依赖的js文件
AMD/CMD
AMD | CMD |
---|---|
源于requirejs | 源于seajs |
异步模块定义(asynchronization module define) | 通用模块定义(common module define) |
对于依赖模块,提前执行 | 对于依赖模块,延迟执行 |
推崇依赖前置 | 推崇依赖就近 |
注:在requirejs从2.0开始,也改成延迟执行(根据写法不同,处理方式不同)
js文件的加载顺序
正常加载:解析HTML文件——>下载js文件——>执行js文件——>接着执行HTML文件
问题:若js文件过大,下载过程过长,则HTML文件会卡在那里
async:一边渲染HTML文件,一边下载js文件——>执行js文件——>接着执行HTML文件
问题:若多个js文件,不能确保js文件的执行顺序
defer:一边渲染HTML文件,一边下载js文件,等到HTML都执行完——>执行js文件
注:async和defer都是解决js的异步加载问题;async是W3C在HTML5中提出的;defer是早期IE提出的;都不能用document.write
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。