gpt4 book ai didi

javascript - 同构 JavaScript 与 RequireJS

转载 作者:行者123 更新时间:2023-12-02 16:06:00 26 4
gpt4 key购买 nike

我有一些同构的 JavaScript。我在客户端使用 RequireJS。

(function() {
'use strict';

function wrapper(require) {
var MyDep = require('my-dependency');

return function MyExportedFunction() {
// ...
};
}

if ((typeof exports === 'object') && module) {
module.exports = wrapper(require); // CommonJS
} else if ((typeof define === 'function') && define.amd) {
define(function(require) {
/**
* I need to `require` dependencies
* in here for them to be available inside
* the wrapper function :(
*/
require('my-dependency');
return wrapper(require);
}); // AMD
}
}());

有没有办法避免必须将 require 语句放置在 wrapper 函数调用之前?

如果我省略 require 语句,RequireJS 会提示尚未为上下文加载依赖项。

我认为这是 RequireJS 提前解析和识别所需依赖项的能力的一个无法克服的限制。

最佳答案

是的,RequireJS 只能处理 CommonJS 形式的 require,前提是它立即出现在传递给 define 的工厂函数中。如果它出现在从工厂函数调用但在函数外部定义的函数中,则它将不起作用。在内部,RequireJS 在工厂函数的源代码上运行正则表达式。

话虽如此,在我看来,您应该能够将当前对 define 的调用替换为:

define(wrapper)

这将调用 wrapper 并引用 RequireJS 的 require 函数并且 RequireJS 应该能够分析 wrapper 的源代码 提取 CommonJS 调用。

关于javascript - 同构 JavaScript 与 RequireJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30734541/

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