Nuxt-了解

发布时间 2023-10-28 01:23:37作者: lksses

布局

  布局文件为layouts

    在layouts里创建一个test.vue的布局测试

<template>
  <div>
    页面布局头部
    <nuxt/>
    页面布局尾部
  </div>
</template>
<script>
  import Footer from '../components/Footer.vue'
  import Header from '../components/Header.vue'
  export default {
    components: {
      Header,
      Footer
    }
  }
</script>
<style>
</style>

在页面中引用

<template>
  <div>
    用户管理导航内容--Nuxt的嵌套路由
    <br/>
    <nuxt-link :to="'/user/one'">one页面</nuxt-link>
    <nuxt-link :to="'/user/testrouter'">testrouter页面</nuxt-link>
    <br/>
    <nuxt-link :to="'/user/101'">修改用户</nuxt-link>
    <nuxt-child/>
  </div>
</template>
<script>
  // 使用自定义的布局-layout
  export default {
    layout:'test'
  }
</script>
<style>

</style>

路由

  自动根据目录结构生成路由

--user      对应    /user

----one  ------------------------->  /user/one

----test            /user/test 

  嵌套路由-----可用于导航页

    嵌套路由应与对应的路由目录路径为一级,上面的布局引用页就为嵌套路由使用的页面。

  • 父页面 parent 的 path 是有 / 斜杠的
  • 而 子页面 child 的 path 是没有 / 斜杠的

 asyncData方法和同步调用

  主要用于让页面进行服务端渲染

  示例:

<template>
  <div>
   这里是客户端渲染的内容: 修改用户信息{{id}},名称:{{name}}
    <br/>
    这里是服务端渲染的内容: 修改用户信息{{id}},名称:{{NodeJsname}}

  </div>
</template>
<script>
  // 使用自定义的布局-layout
  export default {
    layout:'test',
    //服务端渲染方法
   async asyncData(){
        console.log("请求服务端接口")
        //请求服务端接口...

      //同步调用
      //先调用A方法
        var a = await new Promise(function (resolve,reject) {
          setTimeout(function () {
            console.log(1)
            resolve(1)
          },2000)
        })
       var b = await new Promise(function (resolve,reject) {
         setTimeout(function () {
           console.log(2)
           resolve(2)
         },2000)
       })

      return{
        NodeJsname:'服务端渲染名'
      }
    },
    data(){
      return{
        id:'',
        name:''
      }
    },
    methods:{
      getUser:function () {
        //Ajax请求服务接口
        this.name = "客户端渲染名字"
      }
    },
    mounted(){
      this.id = this.$route.params.id;
      this.getUser()
    }
  }

</script>
<style>

</style>