美文网首页Nuxt.js
Nuxt.js 教程(三)

Nuxt.js 教程(三)

作者: 其其小宝 | 来源:发表于2021-04-22 14:38 被阅读0次

第三章 布局与错误

默认页面布局

  1. 服务运行之后在会生成一个默认的 html 模板页面 .nuxt/views/app.template.html 内容如下:
<!DOCTYPE html>
<html {{ HTML_ATTRS }}>
  <head {{ HEAD_ATTRS }}>
    {{ HEAD }}
  </head>
  <body {{ BODY_ATTRS }}>
    {{ APP }}
  </body>
</html>

{{ APP }} 渲染的是主体内容
  1. 页面中的表达式引用的是 nuxt.config.js 文件中 head 属性值:
head: {
    title: 'nuxt-app',
    htmlAttrs: {  // 对应 {{ HTML_ATTRS }} ,html标签属性
      lang: 'en',
    },
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: '' },
    ],
    link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }],
},

自定义页面布局

我们也可以定制化模板页面,只需要在应用根目录下创建一个 app.html 的文件,就可以覆盖 Nuxt.js 默认模板。

<!DOCTYPE html>
<html {{ HTML_ATTRS }}>
  <head {{ HEAD_ATTRS }}>
    {{ HEAD }}
  </head>
  <body {{ BODY_ATTRS }}>
     <h2>这是导航栏</h2>
    {{ APP }}
  </body>
</html>

重启服务,重新访问右上角多有文字出来。

组件布局

默认组件布局

Nuxt.js 可通过添加 layouts/default.vue 文件来扩展应用的默认布局。
nuxt 官方提供的默认布局源码如下:

<template>
  <div>
    <Nuxt />
  </div>
</template>

<Nuxt /> 组件用于显示页面的主体内容。

自定义布局组件

在 layout 目录中的创建 .vue 文件来自定义布局, 然后通过页面组件(pages目录下的文件)中的 layout
属性来引用自定义布局。
示例:

  1. 下面我们创建 layouts/blog.vue 文件,在其中定义一个博客上下结构的布局文,如下:
<template>
  <div>
    <!-- 头部导航 -->
    <div>
      <h1>博客导航栏</h1>
    </div>
    <!-- 主体内容 -->
    <nuxt />
  </div>
</template>
  1. 在 pages 目录下面的页面组件通过 layout 属性引用自定义组件布局,
    layout 默认值是 default
<template>
  <div>
    <h3>这是主体内容-文章列表</h3>
  </div>
</template>
<script>
export default {
  // 引用的是 /layouts/blog.vue 布局
  // layout: 'blog',
  // 或者
  layout(context) {
    console.log('context', context)
    return 'blog'
  },
}
</script>

  1. 重启服务,访问、airtcle


    image.png
  2. 注意:如果是 layouts/blog 目录下放了 index.vue ,直接通过 layout: 'blog' 是找不到这个页面的,需
    要指定文件名 index 才找得到,即 layout: 'blog/index'

定制错误页面

  1. 通过编辑 layouts/error.vue 文件来定制化错误页面(404,500等)。
    警告: 虽然此文件放在 layouts 文件夹中, 但应该将它看作是一个页面(page) ,而不是布局使用。
<template>
  <div>
    <h1 v-if="error.statusCode === 404">
      您访问的页面不存在:{{ error.message }}
    </h1>
    <h1 v-else>请求接口失败或超时!请刷新重试</h1>
  </div>
</template>
<script>
export default {
  props: ['error'], // 直接引用Error错误对象
  // 可只为 blog 布局定制的错误页面, 默认 default 所有布局的错误页
  // layout: 'blog'
}
</script>

  1. 发送一个错误的请求:http://localhost:8000/test 响应401
    image.png

设置当前页面头部标签

使用 head 方法设置当前页面的头部标签。
在 head 方法里可通过 this 关键字来获取组件的数据,你可以利用页面组件的数据来设置个性化的 meta 标
签。

  1. 修改首页组件 page/index.vue
<script>
export default {
  data() {
    return {
      title: '博客首页',
    }
  },
  // 使用 head 方法设置当前页面的头部标签。
  // 在 head 方法里可通过 this 关键字来获取组件的数据,你可以利用页面组件的数据来设置个性化的 meta 标签
  head() {
    return {
      bodyAttrs: {
        style: 'background:red',
      },
      title: this.title,
      meta: [
        { hid: 'description', name: 'description', content: 'nuxt.js技术栈' },
      ],
    }
  },
}
</script>

相关文章

  • Nuxt.js教程(初识篇)

    目录一、定义二、安装三、项目结构四、配置文件 系列教程Nuxt.js教程(入门篇) 一、定义 1、Nuxt.js是...

  • Nuxt.js教程(入门篇)

    目录一、路由二、视图三、异步数据四、插件 系列教程Nuxt.js教程(初识篇) 一、路由 1、基础路由 2、动态路...

  • Nuxt.js 教程(三)

    第三章 布局与错误 默认页面布局 服务运行之后在会生成一个默认的 html 模板页面 .nuxt/views/ap...

  • 从壹开始前后端分离 40 || 完美基于AOP的接口性能分析

    旁白音:本文是不定时更新的.net core,当前主线任务的Nuxt+VueAdmin教程的 nuxt.js 之 ...

  • Nuxt.js上手教程

    对于React,Vue构建的单页面应用老说,SEO是一个众所周知的问题。服务端渲染(SSR-server Side...

  • Nuxt.js 教程(五)

    第五章 异步加载数据 asyncData Nuxt.js 扩展了 Vue.js,增加了一个 asyncData 的...

  • Nuxt.js 教程(一)

    第一章 Nuxt.js 简介 官网:https://zh.nuxtjs.org/[https://zh.nuxtj...

  • Nuxt.js 教程(二)

    第二章 搭建 Nuxt 环境和创建项目 开发环境 安装 node.js & npmhttps://nodejs.o...

  • Nuxt.js 教程(四)

    第四章 插件 Plugin Nuxt.js允许您在运行Vue.js应用程序之前执行js插件。这在您需要使用自己的库...

  • 关于nuxt.js

    Nuxt.js官网 什么是Nuxt.js? nuxt.js是一个基于Vue.js的服务端渲染应用框架, 同于基于r...

网友评论

    本文标题:Nuxt.js 教程(三)

    本文链接:https://www.haomeiwen.com/subject/kjjxrltx.html