我一直在使用 Play v2.2.1 开始一个新的 Play 项目,但很难让 Google Closure 编译器正确处理 goog.provide 和 goog.require 语句。我的所有 Javascript 文件都位于 app/assets 文件夹中,并且正在使用 Play 的反向路由正确提供。但是,每当我尝试使用 goog.require(_namespace_)
时,都会收到编译错误“尚未提供所需的命名空间命名空间”。无论我仅链接到具有 require 的文件还是同时链接到 View 模板中的 require 和提供 .js 文件,都会发生这种情况。但是,如果我链接到所需文件的缩小版本,则不会发生这种情况。
在大多数情况下,闭包编译器似乎正在工作;例如, .min.js 文件确实存在(即使它们实际上似乎没有被缩小,但这可能是一个单独的问题)。我没有更改 Play 项目中的任何build设置。
Play documentation on using the Google Closure compiler Play 2.2.x 不会直接引用 goog.require()
和 goog.provide()
的 Javascript 依赖项。不过,它确实提供了使用 RequireJS 完成这项工作的链接。没有办法利用闭包编译器的 require 系统吗?
作为免责声明,我对 Closure 编译器不是很有经验。我在工作中使用过它,我们将所有 Javascript 压缩到一个文件中,所以我所知道的基本上就是我期望看到的结果。我希望 Play 能够解决大部分让一切“正常工作”的肮脏工作,但它似乎并不像我希望的那么简单,几个小时后我还没有成功解决问题搜索网络。
最佳答案
Benn McCann 根据我很久以前在 play 邮件列表上发布的一些内容制作了一个 plovr 插件,据我所知,该插件是由于这个确切的问题而创建的,也许您可以使用它:https://github.com/benmccann/play-plovr-plugin
关于javascript - Play 2.2.1 中需要 Google Closure : goog.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20735950/