requirejs 如何实现seajs的require.async
if (!'webkitFilter' in document.createElement('div').style ) {
require.async('test',function(test){
console.log(test.fuck);
})
}
如上面这样,判断成立后才下载js再回调
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
昨天犹豫了很久还是想等大大们更规范严谨的阐述,结果居然今天还没人来回答……
那么我试着解释下看。(申明我没用过RequireJS!关于RequireJS的一切都是脑补!)
RequireJS 执行的是AMD规范,而seajs则执行CMD规范。这两者的区别主要在于对依赖模块的理解和处理方法。
与本题相关的一些差异主要在于:对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。
具体地说,AMD规范建议的是将依赖前置,即在代码执行前完成所有依赖,待依赖全部完成后再去执行代码。
以上不是题主问题的答案,算是背景知识。
我想表达的是,既然使用了RequireJS,就不能用类似seajs的CMD方式去思考代码的组织。require.async属于seajs“延迟加载”概念的一种具体实现,本身和RequireJS的设计理念就是背离的。
实际上,RequireJS在代码里实现了部分CMD的兼容,但其处理方式还是有一定的问题的,属于“强行把CMD模块转换为AMD模块”的行为,导致即使载入的是CMD模块,也是按照AMD的提前执行方式去运行。
所以个人并不“看好”用RequireJS实现require.async功能的可能性。
不过,据说,RequireJS 从 2.0 开始,也改成可以延迟执行。但查了半天我只看到这么一句话,没有任何样例,官网翻了好久也发现啥有用的东西。
于是一定要实现的话,其实我也不知道该怎么弄,也许直接试试这个?虽然我感觉RequireJS可能还是用AMD理念去套。
最后,因为很重要所以要说两次:申明我没用过RequireJS!关于RequireJS的一切都是脑补!
楼主,我有个疑问,seajs本身不就是异步加载模块的吗?它这个异步体现在哪里?是加载时不阻塞后面的程序执行吗?另外既然sea.js本身都异步加载了那require.async这个异步加载是什么意思,用处我知道,但是我不理解它内部怎么处理的