Nuxt.js

124 阅读1分钟

一、安装和目录结构

image.png

image.png

二、生命周期

(一) 服务端生命周期(重点)
1.nuxtServerInit

nuxtServerInit(store, context) {}

参数1: vuex 上下文

参数2:nuxt 上下文

image.png

2.middleware({store, route, redirect, params, query, req, res}) {}

功能:类似于vue中的导航守卫

(1) 全局

nuxt.config.js进行配置

router: { middleware: 'auth' }

新建 middleware 目录 ==> auth.js image.png

(2) 局部

<script> export default { name: 'AaPage', middleware: 'auth' } </script>

新建 middleware 目录 ==> auth.js

image.png

3.validate({params, query}) {}

功能:校验 url 参数

  validate({params, query}) {
    console.log(query.id,'validate')
    return /^\d+$/.test(query.id)
  }
4.asyncData({store, params}) {}

功能:pages中页面来请求数据

5.fetch({app, store, params}) {}
(二) 服务端和客服端 共有的 生命周期

beforeCreate

created

(三) 客服端 生命周期

beforeMount

mounted

beforeUpdate

updated

beforeDestroy

destroyed

三、路由

1. 路由跳转

第一种:页面标签跳转

<nuxt-link to="/abc">bbbbb</nuxt-link>

第二种:js跳转

<template>
  <div>aaa
    <nuxt-link to="/abc">bbbbb</nuxt-link>
    <button @click="btn">js跳转</button>
  </div>
</template>

<script>
export default {
  name: 'IndexPage',
  methods: {
    btn() {
      this.$router.push('/abc')
    }
  }
}
</script>
2. 路由跳转传参数

abc页面

  <div>aa</div>
</template>

<script>
export default {
  name: 'abc',
  created() {
    console.log(this.$route)
  }
}
</script>

第一种:页面标签跳转带参数

<nuxt-link :to="{name:'Abc', query:{id:1}, params:{id:2}}">bbbbb</nuxt-link>

第二种:js跳转带参数

<template>
  <div>
  aaa
    <button @click="btn">js跳转</button>
  </div>
</template>

<script>
export default {
  name: 'abc',
  methods: {
    btn() {
      // this.$router.push({
      //   path: '/Abc',
      //   query:{a:1}
      // })
      this.$router.push({
        name: 'Abc',
        params:{b:2}
      })
    }
  }
}
</script>