play框架和requirejs开发javascript代码
我正在使用requirejs在Play2.2框架上构建前端。play为这种情况提供了巨大的开发/阶段代码差异。在devel模式下,我使用基于浏览器的requirejs,在阶段中,我使用预编译的r.js版本的项目。但有一个功能失败了——是否可以在javascript方面区分它是否为开发模式,并在编译过程中删除部分代码或类似的内容:play框架和requirejs开发javascript代码,javascript,scala,requirejs,playframework-2.2,Javascript,Scala,Requirejs,Playframework 2.2,我正在使用requirejs在Play2.2框架上构建前端。play为这种情况提供了巨大的开发/阶段代码差异。在devel模式下,我使用基于浏览器的requirejs,在阶段中,我使用预编译的r.js版本的项目。但有一个功能失败了——是否可以在javascript方面区分它是否为开发模式,并在编译过程中删除部分代码或类似的内容: #ifdef DEVELOPMENT code in Development only #endif 默认情况下,r.js使用UglifyJS优化您的模块。在r.js
#ifdef DEVELOPMENT
code in Development only
#endif
默认情况下,
r.js
使用UglifyJS优化您的模块。在r.js
”配置中,您可以使用uglify
选项将配置选项发送到UglifyJS。比如说,
uglify: {
defines: {
DEV: ['name', 'false']
}
},
这将告诉uglifyjs
用名称false
替换符号DEV
的每个实例。然后,像这样的部分:
if (DEV) {
// ....
}
将被uglifyjs
自动删除为无法访问
有关如何工作的详细信息,请参阅
您可能还想看看,因为它可能不仅仅是丑陋的JS。您可以通过将
optimize
选项设置为uglify2
,告诉r.js
使用它,并使用uglify2
选项控制它的功能。sbt rjs 1.0.7中的UglifyJS2已经有一些其他有用的选项:
它将从缩小的脚本中删除所有console.log消息。javascript代码不会在服务器端运行。。。根据开发模式的不同,您可以在页面生成过程中包含不同版本的脚本,因为workaround.r.js编译器在stageing过程中在服务器端运行并生成一个javascript文件
uglify: {
drop_console: true
}
uglify2: {
compress: { drop_console: true }
}