Symfony AssetMapper 教程
最后修改时间:2025年3月3日
Symfony AssetMapper 教程演示了如何在 Symfony 7.2 中使用 AssetMapper 管理前端资源。AssetMapper 通过利用 ES modules 等原生浏览器功能来简化资源管理。
Symfony
Symfony 是一套可重用的 PHP 组件,也是一个用于 Web 项目的 PHP 框架。Symfony 于 2005 年发布为自由软件。Fabien Potencier 是 Symfony 的最初作者。Symfony 在很大程度上受到了 Spring 框架的启发。
AssetMapper
AssetMapper 是一个 Symfony 组件,可简化前端资源管理。它通过使用 ES modules 等原生浏览器功能,无需 Webpack 等构建工具。
设置项目
我们首先创建一个新的 Symfony 项目并安装必要的依赖项。
$ composer create-project symfony/skeleton symfony-assetmapper "^7.2" $ cd symfony-assetmapper
我们创建一个新的 Symfony 7.2 项目并导航到项目目录。
$ composer require symfony/asset-mapper
我们安装 AssetMapper 组件。
配置 AssetMapper
AssetMapper 在 config/packages/asset_mapper.yaml
文件中进行配置。默认情况下,它会在 assets/
目录中查找资源。
framework: asset_mapper: paths: - assets/
此配置告诉 AssetMapper 在 assets/
目录中查找资源。
添加资源
我们在 assets/
目录中创建了一个简单的 CSS 文件和一个 JavaScript 文件。
body { font-family: Arial, sans-serif; background-color: #f0f0f0; } h1 { color: #333; }
这是一个用于样式化应用程序的简单 CSS 文件。
console.log('Hello from AssetMapper!');
这是一个将消息记录到控制台的简单 JavaScript 文件。
在 Twig 中使用资源
我们创建了一个 Twig 模板来包含 CSS 和 JavaScript 文件。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{% block title %}Welcome!{% endblock %}</title> <link rel="stylesheet" href="{{ asset('styles/app.css') }}"> </head> <body> {% block body %}{% endblock %} <script type="module" src="{{ asset('app.js') }}"></script> </body> </html>
asset()
函数用于包含 CSS 和 JavaScript 文件。将 type="module"
属性添加到 script 标签以启用 ES modules。
创建控制器
我们创建一个控制器来渲染 Twig 模板。
$ php bin/console make:controller HomeController
我们生成一个 HomeController
。
<?php declare(strict_types=1); namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class HomeController extends AbstractController { #[Route('/', name: 'app_home')] public function index(): Response { return $this->render('home/index.html.twig'); } }
HomeController
渲染 home/index.html.twig
模板。
{% extends 'base.html.twig' %} {% block title %}Home{% endblock %} {% block body %} <h1>Welcome to Symfony AssetMapper!</h1> {% endblock %}
index.html.twig
模板继承自基础模板并显示欢迎消息。
运行应用程序
我们启动 Symfony 开发服务器并测试应用程序。
$ php bin/console server:start
我们启动开发服务器。
$ curl localhost:8000
我们在浏览器中访问主页。CSS 样式已应用,并且 JavaScript 消息已记录到控制台。
添加图片
我们将图片添加到 assets/images/
目录中,并在 Twig 模板中包含它。
(Place your logo.png file here)
这是一个示例 logo 图片。
{% extends 'base.html.twig' %} {% block title %}Home{% endblock %} {% block body %} <h1>Welcome to Symfony AssetMapper!</h1> <img src="{{ asset('images/logo.png') }}" alt="Logo"> {% endblock %}
asset()
函数用于包含图片。
高级配置
AssetMapper 支持高级配置,例如:- 对资源进行版本控制以实现缓存失效。- 使用 npm 或 CDN 导入第三方库。- 使用 Sass 或 TypeScript 等预处理器。
framework: asset_mapper: paths: - assets/ versioning: true
此配置启用了资源的缓存失效。
在本教程中,我们使用了 Symfony AssetMapper 在 Symfony 7.2 中管理前端资源。我们配置了 AssetMapper,添加了 CSS、JavaScript 和图片,并在 Twig 模板中使用了它们。
列出 所有 Symfony 教程。