gpt4 book ai didi

requirejs - 使用 requirejs 是否可以在不尝试加载的情况下检查模块是否已定义?

转载 作者:行者123 更新时间:2023-12-01 09:07:02 25 4
gpt4 key购买 nike

我希望能够有选择地定义一个模块,然后在我的代码中使用或不使用它。我正在考虑的特殊情况是在调试/测试环境中加载模拟/ stub 模块,但不是在我上线时加载。这是示例:

在 html 文件中,可以选择加载 js 文件(伪代码):

//index.cshtml
...
<script src="/Scripts/lib/require.js"></script>
<script src="/Scripts/app/service_user.js"></script>
<script src="/Scripts/app/real_service.js"></script>
#if DEBUG
<script src="/Scripts/app/mock_service.js"></script>
#endif

在上面,real_service 和 mock_service 都必须在调试版本中加载。

每个模块都将使用 requirejs 定义,例如:
//mock_service.js
define('mock_service', [],
function () {
...
});

//real_service.js
define('real_service', [],
function () {
...
});

然后在使用该服务时,我想检查 mock_service 是否已定义:
//service_user.js
define(['require', 'real_service'],
function (require, real_service) {
if (require.isDefined('mock_service')) { // 'isDefined' is what I wish was available
var mock = require('mock_service');
mock.init(real_service);
}

...
});

所以我名义上的“isDefined”函数只会检查具有给定名称(或名称?)的模块是否已定义。然后在我的代码中,如果它被定义,我可以要求它并使用它。如果没有,那也很好。

对我来说重要的是没有尝试加载可选模块。我可以尝试/捕获 require 语句,但这会导致尝试从服务器加载它,我不希望这样。

另一种选择是定义我总是加载的 stub ,因此总是需要一个模拟,然后我可以询问它是否是真实的,但这似乎也很浪费。

有没有人深入到 require.js 发现他们需要这个功能并制定了实现策略?

提前谢谢你,罗布

最佳答案

我自己只是在寻找这个,require global 上有一个“已定义”方法,它采用模块名称并返回 true 或 false。

// returns true
require.defined("my/awesome/defined/module");

// returns false
require.defined("not/yet/loaded");

关于requirejs - 使用 requirejs 是否可以在不尝试加载的情况下检查模块是否已定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14851541/

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