gpt4 book ai didi

javascript - 自动列出具有异步加载的 require.js 依赖项以进行 r.js 优化

转载 作者:行者123 更新时间:2023-11-29 15:36:13 24 4
gpt4 key购买 nike

我会尽量简化我的问题。我有一个主应用程序(本质上是单页应用程序)需要基于其自己的配置文件的 javascript 文件。

json 配置文件如下所示(该配置文件与 requirejs 无关,它是应用程序自己的配置文件):

"modules": [
{
"categories": "categories/main"
}
]

主要应用程序基本上是加载其配置 json 文件,并在运行时需要模块,例如:

function loadModule(id, modulePath) {
require([modulePath], function(module) {
// modulePath is categories/main
});
}

我有一个看起来像这样的 AMD 配置:

    require.config({
'paths': {
'categories':'js/app/modules/categories',

模块看起来像这样:

define('categories/main', [
'categories/data/navigation'
], function (
navigation
) {

'use strict';

var CategoriesModule = function() {

};

CategoriesModule.id = 'categories';

return CategoriesModule;
});

所以这对于非缩小版本来说一切正常。

请注意,即使我在我的应用程序中动态加载模块,我仍然希望模块在我的应用程序中仅有的一个缩小文件中被缩小。我不想在运行时发出 http 请求来加载模块。

为此,我在优化构建中包含了该模块:

require.config({
include: [
'app/modules/categories/main'

这也很好用,但这是我正在尝试做的。

如果您回头查看该模块,它需要另一个文件:'categories/data/navigation'

而且这个文件没有缩小,因为显然 r.js 没有办法遵循在运行时加载的文件的依赖关系。

我有点希望 r.js 遵循我在此优化构建配置中“包含”的依赖项。

因此,为了解决这个问题,我需要在我的优化构建配置中执行以下操作:

require.config({
include: [
'app/modules/categories/main',
'app/modules/categories/data/navigation'

换句话说,模块正在使用的文件列表,这是我试图避免的。

我认为 findNestedDependencies 可以解决问题,但事实并非如此。这是我的 r.js 配置信息:

options: {
paths: {
'main': 'js/main'
},
logLevel: 0,
baseUrl: 'public',
mainConfigFile: ['build/optimization/require.config.js', 'public/js/app/config/amd.js'],
generateSourceMaps: false,
preserveLicenseComments: true,
name: 'main',
out: 'public/js/main.min.js',
removeCombined: true,
findNestedDependencies: true,
uglify: {
beautify: false,
mangle: false
}
}

这个应用程序相当大,在创建模块时限制所需的工作对我来说很重要,“即插即用”模块就是我所追求的。

列出模块用于缩小的所有文件是我想找到的解决方案。

有什么提示吗?有什么想法吗?

当我在优化配置中包含模块的主文件时,为什么 r.js 无法遵循我的模块的依赖项?

感谢任何帮助。

干杯。

最佳答案

我会回答我自己的问题。 r.js 无法遵循模块的依赖关系,因为我在构建优化配置中包含了模块的完整路径。使用路径快捷方式,这也是模块的定义名称,r.js 然后能够遵循依赖关系。

我不确定为什么,但我想这可能是有道理的。

而是使用:

require.config({
include: [
'app/modules/categories/main'

包含应该是:

require.config({
include: [
'categories/main'

可能是因为需要配置路径:

require.config({
'paths': {
'categories':'js/app/modules/categories'

希望对遇到同样问题的人有所帮助!

关于javascript - 自动列出具有异步加载的 require.js 依赖项以进行 r.js 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28455310/

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