gpt4 book ai didi

javascript - 是否可以使用 require.js 将非模块 *.js 文件设置为依赖项

转载 作者:行者123 更新时间:2023-12-02 19:11:14 32 4
gpt4 key购买 nike

我们不使用 require.js 来实现 js 源上的模块,但我想用它来测试。还有一个问题:我无法实现原始 *.js 文件作为其他模块的依赖项。可能吗?

我的意思是:加载一些 *.js 文件和模块(以测试它)。

最佳答案

define 的工作原理

我使用 require.js 进行实现和测试。您可以在使用 define 执行模块函数之前将任何 JavaScript 文件加载为依赖项。

define(["test/myTest.js", "test/anotherTest.js"], function(test1, test2) {
// perform your tests
});

如何将 requirejs 与 asyncTests 结合使用

您还可以使用 require 在模块函数内部加载依赖项之后加载代码。我将它与 QUnit 一起使用。这是我的代码中的示例。

首先,确保 QUnit 测试运行程序默认停止(这与其他测试框架类似)。这样,您可以定义测试何时运行(即在加载相关代码之后)。

QUnit.config.autostart = false

其次,将测试定义为模块。该模块加载依赖项,然后定义测试,然后加载要测试的代码。仅当代码自动执行并且无法预先加载时才需要这样做(在这种情况下,您可以直接使用定义并完成它)。这是我使用 Chaplin 库(用 CoffeeScript 编写)的示例。

define(['chaplin'], function(chaplin) {
asyncTest("publish startup complete event", function() {
chaplin.mediator.subscribe("startup~complete", function() {
ok(true, "startup~complete event fired");
});
return requirejs(['modules/startup/startup'], function() {
start();
});
});
});

重要的部分是最后一个 requirejs 调用。它在定义测试后加载要测试的代码。

动态加载依赖项

编辑:回复评论假设存在一个名为 config 的模块,其中包含配置数据。我还假设了某种格式,因此如果您的格式不同,您可以进行一些细微的更改。但这些原则是正确的。

define(["config"], function(config) {
// assuming config.modules is an array of all development modules,
// config.devPath is the base bath to development modules,
requirejs(
config.modules.map(function(module){
return config.devPath + module
})
, function() {
// all modules loaded, now go on
// however, no reference to modules left, so need to work with `arguments` array
});
});

但是,您应该知道您在回调函数中丢失了对模块的引用。

关于javascript - 是否可以使用 require.js 将非模块 *.js 文件设置为依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13679877/

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