【Nuxt】Layout 布局和渲染模式

NuxtLayout

app.vue

vue 复制代码
  <NuxtLayout>
    <NuxtPage/>
  </NuxtLayout>

然后默认的布局 需要 写在 ~/layouts/default.vue 下面,其他自定义的布局也在写在 layouts 目录下。

default.vue

vue 复制代码
<template>
  <div class="app-container">
    <div class="header">Header</div>
    <slot></slot>
    <div class="footer">Footer</div>
  </div>
</template>
<script setup>

</script>
<style scoped>
.header {
  background-color: #6dedc4;
  padding: 10px;
  text-align: center;
}
.footer {
  background-color: #55abd2;
  padding: 10px;
  text-align: center;
}
</style>

这样所有页面都使用了 默认布局,slot 插槽里面内容是路由变化带来的。

如果不希望所有页面都使用默认布局,还可以用 自定义布局:

login.vue

vue 复制代码
<script setup lang="ts">
definePageMeta({
  layout: 'custom'
})
</script>

<template>
<div>login</div>
</template>

<style scoped>

</style>

custom.vue

vue 复制代码
<script setup lang="ts">

</script>

<template>
  <div>
    <p>自定义布局</p>
    <slot />
  </div>
</template>

<style scoped>

</style>

此外 NuxtLayout 还有一个属性 name, 可以指定某个样式作为内部 NuxtPage 的布局,但是它的优先级要高于 definePageMeta.layout 。

所以如果给上述加上 name,则 login 页面的自定义布局失效。

渲染模式

ts 复制代码
    // ssr: false,
    // Experimental API
    routeRules: {
        '/': {ssr: true},
        '/about': {ssr: false},
        '/cart': {static: true}, // 只会在构建时生成一次静态页面
        '/checkout': {swr: true}, // 只会生成多次静态页面 自动重新验证页面的时候需要重新生成
    }
相关推荐
杰克尼10 分钟前
vue_day04
前端·javascript·vue.js
我命由我1234513 分钟前
Java 并发编程 - Delay(Delayed 概述、Delayed 实现、Delayed 使用、Delay 缓存实现、Delayed 延迟获取数据实现)
java·开发语言·后端·缓存·java-ee·intellij-idea·intellij idea
HLJ洛神千羽14 分钟前
C++程序设计实验(黑龙江大学)
开发语言·c++·软件工程
kyle~19 分钟前
算法数学---差分数组(Difference Array)
java·开发语言·算法
曹牧19 分钟前
C#:三元运算符
开发语言·c#
Jonathan Star38 分钟前
MediaPipe 在Python中实现人体运动识别,最常用且高效的方案是结合**姿态估计**(提取人体关键点)和**动作分类**(识别具体运动)
开发语言·python·分类
滨HI01 小时前
C++ opencv拟合直线
开发语言·c++·opencv
沐浴露z1 小时前
详解JDK21新特性【虚拟线程】
java·开发语言·jvm
艾莉丝努力练剑1 小时前
【C++:红黑树】深入理解红黑树的平衡之道:从原理、变色、旋转到完整实现代码
大数据·开发语言·c++·人工智能·红黑树
小皮虾1 小时前
小程序云开发有类似 uniCloud 云对象的方案吗?有的兄弟,有的!
前端·javascript·小程序·云开发