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文件

image

注:async和defer都是解决js的异步加载问题;async是W3C在HTML5中提出的;defer是早期IE提出的;都不能用document.write


Johanna
8 声望0 粉丝