根据this文档,public/
目录应包含可以按原样提供的静态资产,而可选的app/assets
目录应包含需要处理的任何资产,例如,在运行过程中minify编译器构建阶段。
如果是SPA(单页应用程序),资产将包括JavaScript,CSS和图像文件...是否就意味着图像文件应存储在public/images
中,而JavaScript和CSS文件应存储在app/assets/
中?
然后,我还需要集成一个第三方模块,该模块包含需要自定义的精简JavaScript库和非精简JavaScript文件。我应如何管理?我应该在public/
中保留已经最小化的标准资产,然后将自定义的JavaScript文件移动到app/assets/javascripts/
吗?
最佳答案
是的,您的描述是正确的。
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
中-它们将被复制而不会更改。但是我发现通过触发重新生成多余的不必要副本,它会使事情变慢,因此将它们放在非托管目录中会更好。
关于playframework - Play Framework :公开/vs应用/ Assets /,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26056335/