javascript - play框架和requirejs开发javascript代码

标签 javascript scala requirejs playframework-2.2

我正在使用 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/

相关文章:

javascript - 更简洁地编写 Google Apps 脚本声明

scala - Scala 中的 `null == last` 和 `null eq last` 之间有什么区别?

scala - Apache Spark 内连接 2 个数据帧出现 TreeNodeException

kendo-ui - Durandal Weyland/Requirejs 优化器与 kendo ui dataviz

javascript - 使用node.js和backbone.js将单页面应用程序转换为多页面网站

javascript - 如何使用 requirejs 使 jQuery 插件可加载

javascript - 使用 useEffect 和 useLocation

javascript - 将参数从 Ajax ActionLink MVC 3.0 传递给 Javascript 方法

javascript - typescript 对象 : How do I restrict the keys to specific strings?

algorithm - Scala/functional/without libs - 检查其他字符串排列是否