gpt4 book ai didi

javascript - 定义模块并立即使用 RequireJS

转载 作者:数据小太阳 更新时间:2023-10-29 03:57:29 24 4
gpt4 key购买 nike

我正在为使用 RequireJS 的应用程序编写一些测试。由于应用程序的工作方式,它希望通过调用 require 获取一些类。因此,为了测试,我有一些虚拟类,但我不想为了这个测试而将它们放入单独的文件中。我更喜欢像这样在我的测试文件中手动define()它们:

define('test/foo', function () {
return "foo";
});

define('test/bar', function () {
return "bar";
});

test("...", function () {
MyApp.load("test/foo"); // <-- internally, it calls require('test/foo')
});

这里的问题是这些模块的评估会延迟到触发脚本 onload 事件。

From require.js around line 1600:

//Always save off evaluating the def call until the script onload handler.
//This allows multiple modules to be in a file without prematurely
//tracing dependencies, and allows for anonymous module support,
//where the module name is not known until the script onload event
//occurs. If no context, use the global queue, and get it processed
//in the onscript load callback.
(context ? context.defQueue : globalDefQueue).push([name, deps, callback]);

有什么方法可以手动触发要评估的队列?

最佳答案

到目前为止我发现的最好的方法是异步请求模块:

define("test/foo", function () { ... });
define("test/bar", function () { ... });

require(["test/foo"], function () {
var foo = require('test/foo'),
bar = require('test/bar');
// continue with the tests..
});

关于javascript - 定义模块并立即使用 RequireJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8880913/

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