requirejs的局部require的疑问

发布于 2022-09-04 14:51:13 字数 221 浏览 15 评论 0

define(function(require){
    if(false){
        var $ = require("jquery");
    }
});

我发现,即使require("jquery")这个语句没有执行,可jQuery仍然被加载了,这是咋回事。难道requirejs中的局部require仅仅是为了写代码方便,本质上与写在define里没区别?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最单纯的乌龟 2022-09-11 14:51:13

是的,请看这里: http://requirejs.org/docs/api... (从 or better yet开始)

requirejs的CMD只是一个语法糖,本质仍是AMD

兮子 2022-09-11 14:51:13

这里涉及到脚本加载顺序问题:

首先,js文件加载顺序。如果说 jquery 比 requirejs 先加载的话,那么 $ 就是一个全局性的(即 window.$);在哪都可以直接使用。

其次,如果 requirejs 比 jquery 优先加载,那么当在加载 jquery 时,会发现,咦,原来允许CommonJS规范定义,那么就不会把 $ 挂到 window 下面,你只能通过 require('jquery') 之类来调用。

独守阴晴ぅ圆缺 2022-09-11 14:51:13

这个requirejs源码是去吧模块代码转化为字符串,然后去正则匹配require标记。这样其实不是你动态运行的值,所以你即使没有执行require语句,但是requirejs在扫描js代码时发现了requrire,还是会加载对应js

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文