Playframework 播放框架:公共/vs应用程序/资产/

Playframework 播放框架:公共/vs应用程序/资产/,playframework,Playframework,根据该文件,public/目录应包含可按原样使用的静态资产,而可选的app/assets目录应包含需要处理的任何资产,例如,在构建阶段由minify编译器处理 对于SPA(单页应用程序),资产将包括JavaScript、CSS和图像文件。。。那么这是否意味着图像文件应该存储在public/images中,而JavaScript和CSS文件应该存储在app/assets/中 然后,我还需要集成一个第三方模块,该模块由小型JavaScript库和需要定制的非小型JavaScript文件组成。。。我应

根据该文件,
public/
目录应包含可按原样使用的静态资产,而可选的
app/assets
目录应包含需要处理的任何资产,例如,在构建阶段由minify编译器处理

对于SPA(单页应用程序),资产将包括JavaScript、CSS和图像文件。。。那么这是否意味着图像文件应该存储在
public/images
中,而JavaScript和CSS文件应该存储在
app/assets/


然后,我还需要集成一个第三方模块,该模块由小型JavaScript库和需要定制的非小型JavaScript文件组成。。。我应该如何处理这个问题?我是否应该在
public/
中保留标准的、已经缩小的资产,并将自定义JavaScript文件移动到
app/assets/javascripts/

我将所有内容都存储在公用文件夹中:css、JavaScript、图像,甚至更少的文件(本文档建议将其放在app/asset文件夹中)。它将自动复制到“资产”文件夹中,所有内容均按预期工作

对于您的第三方js库,如果它只是普通js(缩小或不缩小),请将其放在公用文件夹中。 如果有咖啡脚本/更少的文件,请考虑文档并将其全部放入资产文件夹。

如果文件位于公用文件夹中,请在模板中添加以下行:

<link href="@routes.Assets.at("stylesheets/myCss.css")" rel="stylesheet">
<script src="@routes.Assets.at("javascripts/myJs.js")" type="text/javascript" defer="defer" ></script>


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

Play在构建过程中将“托管”和“非托管”资产中的内容合并到单个文件夹中(如文档中所述)

但是托管的ASET(即,
app/assets
)会被编译—例如,javascript通过
jshint
运行,然后复制编译后的版本。非托管资产(即,
public
)按“原样”处理,无需处理

显然,将您自己的javascript放入非托管的
public
目录并没有什么坏处,但这样您就没有利用Play提供的编译功能

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

另外,作为旁注,您可以将图像放置在
app/assets
——它们将被复制而不做任何更改。但我发现,在重建时触发额外的不必要副本,这会使事情变得更慢,因此将这些副本放在非托管目录中效果更好