gpt4 book ai didi

javascript - 使用 RequireJS 优化后需要优化的模块

转载 作者:行者123 更新时间:2023-11-28 05:56:30 25 4
gpt4 key购买 nike

启动服务器后,我尝试利用 RequireJS 优化器将所有 RequireJS 模块合并到一个文件中。优化器完成后,我尝试使用这些模块,但它似乎不起作用。

var path = require('path');
var fs = require('fs');

var requirejs = require('requirejs');

requirejs.config({
baseUrl: __dirname,
nodeRequire: require
});

requirejs.optimize({
baseUrl: path.join(__dirname, 'foo'),
dir: 'build',
modules: [{
name: 'main',
include: [ 'src/bar' ]
}]
}, function (data) {
console.log(fs.readFileSync(path.join(__dirname, 'build', 'main.js'), 'utf-8'));
var main = requirejs('/build/main.js'));
var bar = requirejs('src/bar');
}, function (error) {
console.log(error);
});

console.log 的输出是按预期连接的文件,但 bar 未定义。

如果我在上一个脚本之后运行以下脚本,则会定义 bar。

var requirejs = require('requirejs');

requirejs.config({
baseUrl: __dirname,
nodeRequire: require
});

var main = requirejs('/build/main.js'));
var bar = requirejs('src/bar');
console.log(bar);

任何人都可以深入了解可能阻止第一个脚本工作的原因吗?

谢谢, jack

最佳答案

您在 requirejs.configbaseUrl 的路径错误。我还在优化器配置中添加了 removeCombined,以防止加载已组合到 main 中的文件。

但是,这并不是所需要的全部。您会看到,我还将 requirejs.config 中的值保存在 r 中,然后使用此 r 加载模块。如果您使用 RequireJS contexts,这与您要做的事情是一样的。 :您可以保存每个上下文的 requirejs.config 调用的值,以便您可以使用一个函数从一个上下文加载内容,而另一个函数从另一个上下文加载内容。我必须承认我不知道为什么这会使代码工作。对我来说,它闻起来像 bug 。

我发现的另一件事是 requirejs.optimize 吞咽了其完成回调中抛出的任何异常。这绝对是一个错误。如果它没有吞掉异常,您就会更好地了解发生了什么。

这是代码:

var path = require('path');
var fs = require('fs');

var requirejs = require('requirejs');

var r = requirejs.config({
baseUrl: path.join(__dirname, 'build'),
nodeRequire: require
});

requirejs.optimize({
baseUrl: path.join(__dirname, 'foo'),
dir: 'build',
// You should do this to make sure that you are not accidentally loading
// files that have *not* been combined.
removeCombined: true,
modules: [{
name: 'main',
include: [ 'src/bar' ]
}]
}, function (data) {
// console.log(fs.readFileSync(path.join(__dirname, 'build', 'main.js'), 'utf-8'));
var main = r('main');
console.log(main);
var bar = r('src/bar');
console.log(bar);
}, function (error) {
console.log(error);
});

关于javascript - 使用 RequireJS 优化后需要优化的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37621471/

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