我正在使用 requirejs 在 play 2.2 框架上构建前端。 play 为这种情况提供了巨大的开发/阶段代码差异。在开发模式下,我正在使用基于浏览器的 requirejs,在阶段中,我正在使用预编译的 r.js 版本的项目。但有一个功能失败了 - 是否可以在 javascript 方面区分它是否是开发模式,并在编译期间删除部分代码或类似的操作:
#ifdef DEVELOPMENT
code in Development only
#endif
最佳答案
默认情况下,r.js
使用 UglifyJS 来优化您的模块。在 r.js 配置中,您可以使用 uglify 选项将配置选项发送到 UglifyJS。例如,
uglify: {
defines: {
DEV: ['name', 'false']
}
},
这会告诉 uglifyjs
将符号 DEV
的每个实例替换为名称 false
。然后,像这样的部分:
if (DEV) {
// ....
}
将被 uglifyjs
自动删除,因为无法访问。
参见uglifyjs
' documentation了解其工作原理的详细信息。
您可能还想查看UglifyJS2 ,因为它可能比 UglifyJS 做得更多。您可以通过将 optimize
选项设置为 uglify2
来告诉 r.js
使用它,并使用 uglify2
选项来控制它的行为。
关于javascript - play框架和requirejs开发javascript代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25476630/