javascript - RequireJS 的例子有缺陷吗?

标签 javascript requirejs

研究 RequireJS,但与 Head.JS 以不确定的顺序下载但以确定的顺序求值不同,RequireJS 似乎有所不同

Normally RequireJS loads and evaluates scripts in an undetermined order.

然后它展示了如何为顺序添加前缀!到脚本名称以进行显式排序等..

然后在示例中:

require(["jquery", "jquery.alpha", "jquery.beta"], function($) {
    //the jquery.alpha.js and jquery.beta.js plugins have been loaded.
    $(function() {
        $('body').alpha().beta();
    });
});

因此,如果 jquery.alpha 在 jquery 之前下载并评估,那么这肯定会导致问题吗?忘记任何客户端代码的使用,例如上面的函数体,如果像大多数插件一样附加到 jQuery.fn,那么在评估阶段,jQuery 在这种情况下将是未定义的。

我在这里缺少什么?

最佳答案

RequireJS 的设计目的不是加载纯 JavaScript,而是加载已定义的模块。模块格式如下所示:

define(['a', 'b'], function(a, b) {
    return { zzz: 123 };
});

需要注意的重要一点是,所有模块代码都位于匿名函数内。因此,如果文件以任意顺序运行,也没关系,因为它所做的只是注册模块。然后,模块代码按依赖顺序运行,返回值成为模块对象,该对象作为参数传递给使用该模块的代码。

如果您尝试加载纯文件,这将无法正常工作。在这种情况下,有 order 插件可以强制加载顺序。

关于javascript - RequireJS 的例子有缺陷吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6000245/

相关文章:

javascript - 在 return 语句中访问 JS 函数

javascript - 如何将 momentjs 添加到缩小的 bundle 文件中?

javascript - 动态加载 <ul> 时以 "this"为目标

php - 从下拉列表中按字母顺序选择 "nearest"选项

javascript - 从 Firebase 数据库加载数据并使用 JavaScript 放置在 map 的标记上

javascript - 使用 AMD 模块作为 Aurelia ViewModel

javascript - 如何使用 mixin 覆盖这个函数?

javascript - 父级关闭后访问同级 Windows

javascript - 空格键的 keydown 事件监听器

javascript - 共享 JavaScript AMD 模块时如何选择依赖项名称?