gpt4 book ai didi

javascript - 在并行 RequireJS 中下载脚本依赖项

转载 作者:行者123 更新时间:2023-12-03 12:35:05 28 4
gpt4 key购买 nike

已关注 this RequireJS example我试图为所有 vendor js Assets (如 jquery 和 Foundation)创建一个文件,同时在其他模块中加载页面特定代码。

虽然我可以成功构建 js 并将其复制到 build 文件夹中(使用 grunt requirejs 优化器),但 require.config 中的 baseUrl 现在显然是错误的。

baseUrl: 'js' 指向 public/js 而不是 public/build/js,因此所有路径都不正确。

有没有办法在运行优化器时动态更新baseUrl?那么它指向 public/build/js 吗?

这是我的繁重任务:

requirejs: {
dist: {
options: {
baseUrl: '<%=pkg.paths.js%>',
dir:'project/public/build/js',
mainConfigFile: '<%=pkg.paths.js%>main.js',
optimize: 'none',
removeCombined: true,
uglify2: {
no_mangle: true,
compress: {
drop_console: true
}
},
modules: [
{
name: 'vendorCommon'
},
{
name: 'dashboard',
exclude: ['vendorCommon']
}
]
}
}
}

vendor 通用

define(['jquery', 'foundation'],
function () {
//Just an empty function, this is a place holder
//module that will be optimized to include the
//common depenendencies listed in this module's dependency array.
});

需要配置

require.config({

baseUrl: '/js',

priority: ['vendorCommon'],

paths: {
'vendorCommon':'vendor/vendor-common',
'jquery':'../bower_components/jquery/dist/jquery.min',
'foundation':'../bower_components/foundation/js/foundation/foundation',
'dashboard':'views/dashboard'
},

shim: {
'foundation': ['jquery']
}

});

最佳答案

我使用了优化器的 onBuildWrite设置在优化时修改某些模块。如果您的配置包含在优化包中,那么您可以使用 onBuildWrite 对其进行修补:

onBuildWrite: function (moduleName, path, contents) {
if (moduleName === '<%=pkg.paths.js%>main') {
return contents.replace("baseUrl: '/js'", "baseUrl: '/build/js'");
}
return contents;
}

免责声明:这是我凭空写下的。谨防错别字。

另一种可能性是在运行时覆盖baseUrl。 RequireJS 能够将多个配置组合成一个配置。稍后调用中的新值 baseUrl 将覆盖之前的值。因此,如果您有办法设置应用的优化版本(例如,通过服务器提供的不同 HTML)来调用 require.config({baseUrl: '/build/js'}); 您在问题中显示的调用之后之前需要正确baseUrl的任何代码,这也可能是一个选项。 p>

关于javascript - 在并行 RequireJS 中下载脚本依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23772038/

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