gpt4 book ai didi

javascript - requirejs 定义 : nested dependency

转载 作者:行者123 更新时间:2023-11-30 08:38:20 25 4
gpt4 key购买 nike

我想定义 A,但 A 应该需要 B,B 需要 C(为了 r.js)

这两个是正确的吗?

define([
'module'
], function(module) {
require(['C'], function() {
require(['B'], function() {

var A;

return A;
});
});
});


require(['C'], function() {
require(['B'], function() {
define([
'module'
], function(module) {
var A;

return A;
});
});
});

最佳答案

您的选择都不正确。

您的第一个选择是尝试使用 return 从异步回调中返回一个值。通常是不可能的,RequireJS 也不异常(exception)。参见 this question及其原因的答案。

您的第二个选择是将 define 放在传递给 require 的回调中。这可能适用于某些玩具箱,但一般情况下这是行不通的。 (“玩具箱”是指所有条件都受到严格控制的概念验证。这种情况不能反射(reflect)实际应用的现实情况。)

Linh Pham's suggestion真的是你的选择:

define(["module", "B", "C"], function(module){
var A;

return A;
});

如果 B 依赖于 C 并且不是 AMD 库,则为它添加一个 shim。在评论中,您反对说,如果您这样做,您将不得不拥有“数百个”垫片。您有几个选项可以避免这些垫片:

  1. 不要使用 RequireJS 加载 C。在页面上加载 RequireJS 之前,使用 script 元素加载它。

  2. 将您的应用程序设计为仅使用一个模块启动,并要求您的应用程序首先通过加载 C 启动:

    require(['C'], function () {
    require(['main']);
    });

    main 将是启动您的应用程序的模块。这种方法的缺点是,如果您像我一样,最终您会忘记在需要 main 之前需要 C

关于javascript - requirejs 定义 : nested dependency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com