学习二十、Nuxt.js

# Nuxt.js

- 基于 Vue.js 生态的第三方开源服务端渲染应用框架

- 它可以帮助我们轻松的使用 Vue.js 技术栈构建同构应用

- 官网:https://zh.nuxtjs.org/

- GitHub 仓库:https://github.com/nuxt/nuxt.js

## 初始化一个 Nuxt

- npm i nuxt

- package.json 中设置 "dev" : "nuxt"

- 创建 pages 文件夹

- 创建 index.vue

## Nuxt.js 路由―路由导航

- a 标签

  - 它会刷新整个页面,会走服务端渲染,不要使用。

- nuxt-link 组件

  - https://routervuejs.org/zh/api/#router-link-props

  - 与 router-link 用法基本相同

- 编程式导航

  - https://router.vuejs.org/zh/guide/essentials/navigation.html

  - @click = onClick

  - this$router.push("/")

## Nuxt.js 动态路由

- 在文件或者文件夹的文件名前加上"_",相当于/:

## Nuxt.js 配置文件

- nuxt.config.js

router:{

  base:'/app'  更改初始路径

  extendRoutes(routes,resolve){  自己配置路径

    routes.push({

      name:'name',

      path:'/name',

      component: resolve(__dirname,'pages/name.vue')

    })

  }

}

## 定制 html 模板

- 创建一个 app.html

<!DOCTYPE html>

<html {
   
   { HTML_ATTRS }}>

  <head {
   
   { HEAD_ATTRS }}>

    {
   
   { HEAD }}

  </head>

  <body {
   
   { BODY_ATTRS }}>

    {
   
   { APP }}    // 渲染的内容会注入到这里

  </body>

</html>

- 创建一个 layouts/default.vue 来扩展应用布局

<template>

  <Nuxt />     一定要记得留下 Nuxt 的页面出口

</template>

- 每个组件下有个 layout 属性,默认值 default

- 想要修改某个页面的 layout ,可以设置一个新的 layout

## Nuxt.js 异步数据 asyncData 方法

- https://zh.nuxtjs.org/guide/async-data

- 基本用法

  - 它会将 asyncData 返回的数据融合组件 data 方法返回数据一并给组件

  - 调用时机:服务端渲染期间和客户端路由更新之前

- 注意事项

  - 只能在页面组件中使用

  - ** 没有 this,因为它是在组件初始化之前被调用的

- Nuxt.js 中的 static 文件夹中可以直接通过地址访问内部文件

  - 使用时不需要加上 static :http://localhost:3000/data.json

- 在组件中使用 asyncData 方法获取数据之后返回一个对象,这个对象会和本来的 data 混入,相当于 data = Object.assign({}, asyncData, data)

- 非页面组件,如公共组建可以使用父组件给子组件传值的方法来使用

- ** 当你想要动态数据有利于 SEO 或者是提升首屏渲染速度的时候,就在 asyncData 中发送请求拿数据

  ** 如果是非异步数据或者普通数据,则正常初始化到 data 中即可

## Nuxt.js 上下文对象

- 由于 asyncData 中没有 this,于是 asyncData(context){console.log(context)};

- 使用传入上下文 context 来代替 this 的作用 : context.route.params 或者 context.params 获取 url 传值


 

猜你喜欢

转载自blog.csdn.net/qq_40289624/article/details/110002553