Play框架:public/vs app/assets /

j3d*_*j3d 15 playframework

根据这一文件,该public/目录应包含能够原样送达静态资产,而可选app/assets目录应包含需要被处理,例如,通过缩小编译器在编译期的任何资产.

如果是SPA(单页应用程序),资产将包括JavaScript,CSS和图像文件......这是否意味着图像文件应存储在public/imagesJavaScript和CSS文件中app/assets/

然后,我还需要集成第三方模块,该模块由缩小的JavaScript库和需要自定义的非缩小JavaScript文件组成......我该如何管理?我应该保留标准的,已经缩小的资产public/并将自定义的JavaScript文件移动到app/assets/javascripts/

myr*_*sia 4

是的,你的描述是正确的。

Play 在构建过程中将“托管”和“非托管”资产的内容合并到一个文件夹中(如文档https://www.playframework.com/documentation/2.3.x/AssetsCoffeeScript中所述)

但是托管aseets(即app/assets)会被编译 - 例如,运行javascript jshint,然后复制编译后的版本。非托管资产(即public)按“原样”获取,不进行任何处理。

显然,将您自己的 javascript 放入非托管public目录中并没有什么坏处,但是这样您就无法利用 Play 为您提供的编译工具。

对于包含可自定义文件的库,这取决于。我肯定会把缩小的文件放在 中public,因为否则你可能会从 jshint 中得到编译错误。定制文件 - 取决于定制的程度。如果只是小的“设置”类型的自定义,我可能会考虑将它们与其他库文件放在一起,以便清楚起见。但如果它是正在积极开发并涉及编写代码的任何东西,我会用它app/assets来获得 jshint 语法检查的好处。

另外,作为旁注,您可以将图像放入app/assets- 它们将被复制而不进行更改。但我发现它往往会在重建时触发额外的不必要的副本,从而使速度变慢,因此将这些副本放在非托管目录中效果更好。