VUE SSR渲染之NuxtJS —— 生命周期 钩子

这里只记录一些常用的钩子,更多的还是去看官网吧。

一、服务端钩子

nuxtServerInit() 通常用于初始化一些东西在状态树中
这里给出了一些基本的使用,该文件为store/index.js
// state
export function state() {
  return {
    bNav: false,
    bLoading: false
  }
}

// mutations
export const mutations = {
  M_UPDATE_NAV(state, payload) {
    state.bNav = payload
  },
  M_UPDATE_LOADING(state, payload) {
    state.bLoading = payload;
  }
}

// actions
export const actions = {
  nuxtServerInit(store, context) {
    // 初始化东西到状态树
  }
}

// getters
export const getters = {
  getNav(state) {
    return state.bNav ? '显示' : '隐藏'
  }
}

export default {namespaced: true, state, mutations, actions, getters}
 
middleware 中间件,可使用中间件的地方:
1.nuxt.config.js中配置middleware
使用方法: 在middleware文件夹下建一个js文件,名称自定义 我们这里建一个auth.js
内容随便写
export default({store, route, redirect, params, query, req, res}) => {
  // 全局守卫业务
  console.log('middleware nuxt.config.js')
}

然后再nuxt.config.js中配置

router: {
    middleware: 'auth',
  },
2.layout 布局页面使用
3. 组件中使用
<script>
  export default {
  data() {
    return {}
  }, middleware() { console.log(
"页面级别的middleware") } } </script>

 

asyncData() 读取数据,返回给组件,这里我们可以做一些异步的数据请求,返回给组件。

fetch() 和asyncData类似,只不过返回数据给redux状态树。

validate() 做一些校验业务,返回Boolean值,true为通过,false则跳到错误页面。

具体使用方式在下篇文章!!

二、服务端和客户端

beforeCreate()
created()
这两个钩子可能运行在客户端(CSR)也可能在服务端(SSR)
建一个页面测试一下。。。
<template>
  <h1>登录页</h1>
</template>

<script>
export default {
  beforeCreate() {
    // window是浏览器独有的,服务端不会有
    console.log("beforeCreate", window);
  },
};
</script>

<style>
</style>

访问对应页面,你有几率看到错误信息,没有的话多刷新几次。

三、客户端

客户端的生命周期钩子和vue一致,这里不做过多的介绍。

  beforeMount()
    mounted()
    beforeUpdate()
    updated()
    beforeDestory()
    destoryed()
    activated()
    deactivated()
posted @ 2020-09-19 15:08  本该如此  阅读(3023)  评论(0编辑  收藏  举报