学习nuxtjs 第一天

99 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

安装nuxtjs 相关的操作

详情可以查看官网链接:www.nuxtjs.cn/guide/insta…

在安装过程中的选项

  Generating Nuxt.js project in nuxtjstry
? Project name: nuxtjstry                               项目名
? Programming language:                                 JavaScript  程序设计语言 
? Package manager: Npm                                  包管理器
? UI framework: None                                    ui框架
? Template engine: HTML                                 nuxt的js模板
? Nuxt.js modules: Axios - Promise based HTTP client    代码校验工具
? Linting tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)  测试框架    
? Testing framework: None       渲染模式
? Rendering mode: Universal (SSR / SSG)     部署目标
? Deployment target: Server (Node.js hosting)   开发工具
? Development tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)  版本控制工具
? What is your GitHub username? LEnd
? Version control system: Git

nuxtjs 中的一些基础情况

  1. 在pages 页面内直接创建对应的.vue 文件,对文件内容进行编写,将会在.nuxt文件内 配置对应的router 路由

  2. 在.vue 中调用相关的组件 components里面的相关名称 直接<文件名称> 引用 当然如果想要导入 也是可以

import xxx form '@/xxx'
export default{
    components:{
        xxx
    }
}

这里能够直接调用的主要原因是因为nuxt.config.js 里面有相对应的配置 将components 改为flase 后就必须要引用导入 components: true,

nuxt生命周期

  1. nuxt服务端 nuxtServerInit nuxtServerInit( store, context ){ 参数1 : vuex 上下文 参数2 : nuxt 上下文 }

  2. 中间件 RouteMiddleware 可以全局 或者局部去做对应的导航守卫验证

服务端生命周期

全局中间件

需要去 nuxt.config.js 当中进行配置

```js
  router:{
    // middleware:'auth'   // ''内部写入对应的中间件名称 
    }
```
同时去项目最外层 新建一个middleware 的文件夹 
我们新建一个auth.js 的测试文件
```js
export default function () {

    console.log('middleware auth');
}
```

局部中间件 写法1

无需再nuxt.config.js 当中进行配置中间件
直接在对应的组件中进行配置即可
例如 我们在pages/index.vue 当中进行配置
```vue
export default{
    name:'IndexPage',
    middleware:'auth' //''内部写入对应的中间件名称 
}
```
此时会发现 尽在当前 index 内部会有相关的调用 其他页面不会调用

局部中间件 写法2

直接在 对应的.vue 文件里面进行书写相关的中间件操作即可
我们对pages/list.vue 文件进行操作测试
```vue
export default {
    name:'IndexPage',
    middleware(){
        console.log('hello this is middleware')
    }
}

以上三种 运行后都可以发现 会先运行nuxtServerInit 再运行 minddleware

我们来看一下对应的中间件参数 store, route, 路由信息 redirect, 重定向 params, 页面跳转参数 传递(隐式到url传值) query, 页面跳转参数 获取(显示到url传值) req, 请求头 res, 请求接口,响应体

中间件的作用有很多,比如其中有验证登录信息的作用

export default function ({store,route,redirect,params,query,req,res}) {
    // 判断登录信息的情况 
    let token = store.state.token;//获取token 
    if( !token ){ 
        redirect('/list');//重定位
    }

    console.log('middleware auth');
}

这是通过验证token 进行页面转跳

需要与对应的 token 赋值进行联动 我们在这里进行设置token store/index.js

export const state ={
    token :'这是我们的测试token 可以通过这个方式来保存'
}

export const mutations ={
    setToken(state,token){
        state.token =token; //state.token 是上方的token token 是对应的参数token
    }
}

export const actions = {
    // 服务端生命周期函数 nuxtServerInit / RouteMiddleware / ValidityState() /...
    nuxtServerInit(store, context) { //第一个运行的生命周期

        store.commit('setToken','更新token') //这里的方法对应mutations 当中的setToken方法

        console.log(store, 'nuxtServerInit' )
    }
}

validate() 生命周期函数

主要用于校验url 参数是否正确的 validate({params,query}){ } 当我们假设我们需要传递的值 不正确时,就会有相关的报错来进行提示

我们在pages/list.vue 页面进行相关的测试

export default { 
  name: 'IndexPage',
    validate({params,query}){
       console.log('validate')
      //  return true;//这里是需要返回true的 才会正常的显示 否则会返回404
      // 我们这里可以通过 正则表达式 来进行书写判断,当不正确的传值 则显示404
      return /^\d+$/.test(query.id)
    }
}

asyncData() 生命周期

仅限于页面组件 也就是说 仅仅只能在pages内部进行使用,在components中是无法使用的。每次在加载之前被调用, 所以一般都在这里书写发送请求数据

我们在index.vue页面进行测试

asyncData({store,params}){}

fetch() 生命周期

可以在组件中去用,也可以在页面中去用,功能是相似的 都可以用来请求数据接口。 fetch 方法用于渲染页面前 填充应用的状态树(store) 数据,与asyncData 方法类似,不同的是,他不会设置组件的数据

服务端和客户端共有的 生命周期

beforeCreate()

created()

beforeMount()

客户端有的 生命周期

和vue当中的一模一样 beforeMount()

Mount()

beforeUpdata()

updated()

beforeDestroy()

destroyed()

总结:今天根据变动,于是我们决定用我们熟悉的vue框架相关的nuxtjs 进行学习来使用。记录下,相关的学习笔记,总体来说nuxtjs也是蛮好用的