布局

未匹配的标注

Edge 中的布局允许你定义页面的主要布局,然后根据需要覆盖特定部分。

基本示例

让我们使用布局创建一个标准网页。

1. 创建如下文件结构

.
├── views
│   ├── layouts
│   │   └── main.edge
│   └── home.edge

2. 将以下标记粘贴到布局文件中。

// title: resources/views/layouts/main.edge
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{ title }}</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css">
  </head>
  <body>
    <nav class="navbar is-dark" role="navigation" aria-label="main navigation">
    </nav>

    @!section('body')

    <footer class="footer">
    </footer>
  </body>
</html>

3. 将以下标记粘贴到resources/views/home.edge文件。

// title: resources/views/home.edge
@layout('layouts/main')
@set('title', 'Home page')

@section('body')
  <section class="hero is-warning">
    <div class="hero-body">
      <p class="title">
        Title
      </p>
      <p class="subtitle">
        Subtitle
      </p>
    </div>
  </section>
@end

4. 渲染视图,你会得到以下结果

layout标签

布局标签用于定义给定模板的布局。

  • 它必须出现在模板的第一行。否则,它将被忽略。
  • 每个模板只能使用一种布局
  • 布局名称必须是静态的,不能使用运行时变量定义。

section 标签

section 标签是一个布局暴露的占位符,用于注入内容。布局可以根据需要定义任意数量的部分,并且父模板可以在必要时覆盖它们。

在以下示例中,布局渲染 scripts 部分内的脚本标签,这允许所有页面使用这些脚本或通过使用不同的脚本标签重新定义相同的部分来覆盖。

布局

@section('scripts')
  <script src="./vendor.js"></script>
  <script src="./app.js"></script>
@end

父模板最高覆盖优先级

@section('scripts')
  <script src="./vendor.js"></script>
  <script src="./admin.js"></script>
@end

附加到现有脚本的父模板

@section('scripts')
  @super {{-- Super means inherit --}}
  <script src="./autocomplete.js"></script>
@end
  • 所有节 (section) 标签的名称必须是唯一的。
  • 节名称必须是静态的,并且不能使用运行时变量来定义。
  • 你不能有嵌套的节。
  • 所有节都必须位于顶层,此约束类似于 JavaScript 中的 ESM 导出,其中每个 export 语句都顶级 (top-level) 唯一

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/adonisjs/5.x/vi...

译文地址:https://learnku.com/docs/adonisjs/5.x/vi...

上一篇 下一篇
贡献者:2
讨论数量: 0
发起讨论 查看所有版本


暂无话题~