requirejs的局部require的疑问
define(function(require){
if(false){
var $ = require("jquery");
}
});
我发现,即使require("jquery")这个语句没有执行,可jQuery仍然被加载了,这是咋回事。难道requirejs中的局部require仅仅是为了写代码方便,本质上与写在define里没区别?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,请看这里: http://requirejs.org/docs/api... (从 or better yet开始)
requirejs的CMD只是一个语法糖,本质仍是AMD
这里涉及到脚本加载顺序问题:
首先,js文件加载顺序。如果说 jquery 比 requirejs 先加载的话,那么
$
就是一个全局性的(即 window.$);在哪都可以直接使用。其次,如果 requirejs 比 jquery 优先加载,那么当在加载 jquery 时,会发现,咦,原来允许CommonJS规范定义,那么就不会把 $ 挂到
window
下面,你只能通过require('jquery')
之类来调用。这个requirejs源码是去吧模块代码转化为字符串,然后去正则匹配require标记。这样其实不是你动态运行的值,所以你即使没有执行require语句,但是requirejs在扫描js代码时发现了requrire,还是会加载对应js