根据this文档,public/
目录应包含可按原样提供的静态资产,而可选的app/assets
目录应包含任何需要处理的资产,例如,在构建阶段通过minify编译器。
如果是SPA(单页应用程序),资产将包括JavaScript,CSS和图像文件......这也意味着图像文件应存储在public/images
中,而JavaScript和CSS文件应存储在app/assets/
中{1}}?
然后,我还需要集成第三方模块,该模块由缩小的JavaScript库和需要自定义的非缩小JavaScript文件组成......我该如何管理?我应该在public/
中保留标准的,已经缩小的资产,并将自定义的JavaScript文件移至app/assets/javascripts/
吗?
答案 0 :(得分:4)
是的,你所描述的是正确的。
播放结合来自"托管"的内容和#34;非管理"在构建过程中将资产放入单个文件夹(如文档https://www.playframework.com/documentation/2.3.x/AssetsCoffeeScript中所述)
但是管理的aseets(即$data=json_decode(json_encode((array)simplexml_load_string($lottery)),1);
)被编译 - 例如,javascript通过app/assets
运行,然后复制编译的版本。非托管资产(即jshint
)采用"原样#34;没有处理。
显然,将自己的javascript放入非托管public
目录是没有害处的,但是你没有利用Play给你的编译工具。
对于包含可自定义文件的库,它取决于。我肯定会将缩小的文件放在public
中,否则你可能会从jshint中获得编译错误。自定义文件 - 取决于自定义的范围。如果它只是很小的设置"为了清晰起见,我可以考虑将它们与其他库文件放在一起。但是,如果它处于活跃开发状态并涉及编写代码,那么我会将其public
用于获得jshint语法检查的好处。
另外,作为附注,您可以将图像放在app/assets
中 - 只需复制它们即可。但我发现通过在重建时触发额外的不必要副本会使事情变得更慢,因此在非托管目录中使用这些副本会更好。
答案 1 :(得分:1)
我将所有内容存储在公共文件夹中:css,javascript,images甚至更少的文件(本文档建议将其放在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>