我是r.js
优化新手,但却是requirejs
建立-config.js
({
appDir: "./src/main/webapp/webresources/javascript/",
baseUrl: "./",
dir: "./target/webresources/js",
optimizeCss: "none",
mainConfigFile: "./src/main/webapp/webresources/javascrip/app.js",
inlineText: true,
removeCombined: true,
modules: [
{
name: "app",
}
]
})
app.js 看起来像
if (typeof _JSHome=== "undefined") {
_JSHome = "/webresources/javascript/edulastic";
}
if (typeof EditorValue === "undefined") {
EditorValue = "";
}
require.config({
baseUrl: '/webresources/javascript',
waitSeconds: 180,
paths: {
tpl : _JSHome+'/js/tpl',
underscore : 'underscore-min',
backbone : 'backbone-min',
text : 'text/text',
jquery : 'jquery',
jqueryuitouchpunch : "jquery.ui.touch-punch",
modernizr : 'modernizr',
hammer : 'hammer.min',
detectizr : 'detectizr',
bootstrap : _edulasticJSHome+'/bootstrap/js/bootstrap.min',
fastClick : "mobileutils/fastclick/fastclick.min",
asMetaData : _JSHome+'/js/app/metaData',
highCharts : '/webresources/javascript/highcharts/highcharts-min',
},
});
我跑的时候
我的项目根目录中的r.js -o build-config.js
,我收到以下错误:
仅尝试使用也是有效JSON的配置,或者不使用mainConfigFile,而是将所需的配置值复制到为优化器提供的构建文件或命令行参数中。
解析时出现源错误:e:/mongrel_mpq/src/main/webapp/webresources/javascript/app.js:> ReferenceError:_JSHome未定义
重复但没有解决方案 - Require.js optimizer and variables in paths
答案 0 :(得分:1)
app.js
中的配置是计算配置。例如,您将_JSHome
设置为值,然后在配置中使用它。在运行时,这没有问题。但是,r.js
并非旨在执行您传递给mainConfigFile
的内容。它的作用是查找传递给require.config
(或requirejs.config
)并使用JSON对象的JSON对象。好像r.js
进入app.js
文件并复制require.config(...)
内的所有文本,然后将其粘贴到自己的执行上下文中。当它尝试使用从app.js
文件中捕获的内容时,您会收到_JSHome
未定义的错误,因为在r.js
解释您的配置的上下文中 ,_JSHome
未定义。
简单的解决方案是拥有一个未计算的配置。但是,如果您需要计算配置,然后让r.js
使用它,则需要在r.js
看到它之前计算它。这可以作为构建系统的一部分完成(使用Grunt,Gulp,make
等)。