我正在使用 Symfony 4
构建一个应用程序,我想关注best practices for web assets . 我使用Encore / Webpack for SCSS和JS,它运行良好;生成的JS CSS很好地存储在/ public / build文件夹中 . 我坚持如何存储和使用静态资产,如图像,电影,声音 .
Should images be stored in 'public/images' folder or in 'assets/images'?
还有一些后续问题:
如果图像存储在 public/images
中,如果我用 asset('...')
调用污染模板,我会获得任何好处吗?
如果图像存储在 assets/images
中,则:
-
他们如何通过http进入
public/images
?./bin/console assets:install
什么也没做,说:'[OK] No assets were provided by any bundle.' . -
如何在SCSS中使用它们?通过相对路径?
问候,
2 回答
public/
中的所有内容都可以通过浏览器获得 . 在这里,只应该 生产环境 准备和建造的东西 . 由于您的图像不需要任何处理(我假设),您可以(应该)确实将图像放在那里 .现在,假设您需要进行一些处理(例如丑陋的JPEG压缩),您可以将图像放在
assets/
中,进行一些处理,然后只将处理后的图像放在public/
中 .是的,
asset()
与Encore或资产构建管理没有任何关系 . 它唯一能做的就是修复您的网址 . 这意味着如果您将应用程序移动到服务器上的子目录(example.com/app/
),URL将自动适应 . 在Asset component文档中阅读更多相关信息 .使用Symfony 4中的
asset()
方法引用图像的另一个好方法是在使用Encore构建资源时复制public/build
中的图像 .在Webpack Encore中使用copyFiles()
Webpack Encore提供了一种在公共目录中复制图像的功能,以允许
asset()
访问这些文件:copyFiles() .在你的
webpack.config.js
错误:Encore.copyFiles不是公认的属性或方法 .
请确保您正在使用
symfony/webpack-encore-bundle
而不是here所描述的symfony/webpack-encore-pack
.我的
package.json