nuxt简单入门2


前言

提示:接上篇


一、nuxt 嵌套路由

  • 使用nuxt嵌套路由,显示上左右效果
    在这里插入图片描述

  • nuxt嵌套路由,使用注意项

  • 注意1:提供vue文件(父组件),再提供同名文件夹,文件夹用于存放子组件

  • 注意2:在父组件设置 <nuxt-child> 确定子组件显示位置

  • 分析

  • 1)修改默认布局,添加导航(班级管理、学生管理)

  • 2)编写父组件(classes.vue),添加2个div,用于显示左右数据(添加css样式)

  • 3)修改父组件,添加2个切换路由标签<nuxt-link>

  • 4)修改父组件,在指定区域显示子路由

1.1体验

  • 1)修改默认布局,添加导航(班级管理、学生管理)
  • 在这里插入图片描述
<nuxt-link to="/classes">班级管理</nuxt-link>
<nuxt-link to="/student">学生管理</nuxt-link>
  • 2)编写父组件(classes.vue),添加2个div,用于显示左右数据(添加css样式)
  • 在这里插入图片描述
<template>
  <div>
     <div class="left">
       <nuxt-link to="/classes/add">添加班级</nuxt-link> <br/>
       <nuxt-link to="/classes/list">班级列表</nuxt-link> <br/>
     </div>
     <div class="right">
       <!-- 显示视图 -->
       <nuxt/>
     </div>
  </div>
</template>

<script>
export default {

}
</script>

<style>
  .left {
    width: 200px;
    height: 500px;
    border: 1px solid #000;
    float: left;
  }

  .right {
    margin-left: 10px;
    width: 500px;
    height: 500px;
    border: 1px solid #000;
    float: left;
  }
</style>
  • 3)在指定区域显示子路由
    在这里插入图片描述

1.2 结论

  • 步骤1:编写父组件,及其同名文件夹
  • 步骤2:父组件添加 <nuxt /> 用于确定子组件显示位置

2.路由动画效果

  • 路由动画效果:路由切换时执行的动画。
  • 分类:离开动画、进入动画

2.1

  • 全局路由动画
    • 1)编写css,css样式名称为固定值
    • 2)将css配置nuxt
  • 自定义路由动画
    • 1)编写css,css样式的部分名称固定值
    • 2)将css配置nuxt(同上)
    • 3)修改vue页面,启动自定义动画

2.2体验

  • 全局路由动画
  • 1)编写css,css样式名称为固定值
  • 在这里插入图片描述
/* 全局动画效果样式,名称为固定值,内容为:切换透明度 */
.page-enter-active, .page-leave-active {
  transition: opacity .5s;
}
.page-enter, .page-leave-active {
  opacity: 0;
}
  • 2)将css配置nuxt

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210507205022968.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjE1ODE0MQ==,size_16,color_FFFFFF,t_70)
  // Global CSS: https://go.nuxtjs.dev/config-css
  css: [
    'assets/main.css'
  ],
  • 自定义路由动画
    1)编写css,css样式的部分名称固定值
    在这里插入图片描述
.test-enter-active, .test-leave-active {
  transition: all 2s;
  font-size:12px;
}
.test-enter, .test-leave-active {
  opacity: 0;
  font-size:40px;
}
  • 2)将css配置nuxt(同上)

  • 3)修改vue页面,启动自定义动画

在这里插入图片描述

3.nuxt特殊配置:head

  • nuxt在vue基础进行增强,支持vue所有功能。
  <template>
  <div class="classes-add">添加班级</div>
</template>

<script>
export default {
  head: {
    title: '添加班级',
    link: [
      { rel: 'stylesheet' , type: 'text/css' , href: '/style/add.css'}
    ],
    script: [
      { type: 'text/javascript' , charset: 'UTF-8' , src: '/js/add.js'}
    ]
  }
}
</script>

<style>

</style>

4.1.整合axios

  • 整合后普通ajax操作
<template>
  <div>{{msg}} </div>
</template>

<script>
export default {
  data() {
    return {
      msg: ''
    }
  },
  async mounted() {
    // 页面加载成功后,发送ajax
    let { data } = await this.$axios.get('/service-consumer/feign/echo/abc')
    this.msg = data
  },
}
</script>

<style>

</style>

4.2asyncData 发送ajax

<template>
  <div>
    {{msg}}
  </div>
</template>

<script>
export default {
  async asyncData( context ) {
    // 发送ajax
    let { data } = await context.$axios.get('/service-consumer/feign/echo/abc')

    // 返回数据
    return {
      msg : data
    }

  },
}
</script>

<style>

</style>

二 简单案例

学生列表:

  • 需求1:查询班级列表 【要求:必须使用SSR技术处理班级信息】
  • 需求2:查询学生列表,含条件(班级) 【要求:必须使用普通ajax查询数据】
    在这里插入图片描述
<template>
  <div>

    <table border="1">

      <tr>
        <td>
          <!-- {{classesList}} -->
            <select v-model="vo.cid" >
              <option v-for="(classes,index) in classesList.data" :key="index" :value="classes.cid">{{classes.cname}}</option>
            </select>
        </td>
        <td>
            <input type="button" value="查询" @click="findAll()" />
        </td>
      </tr>
      <tr>
        <td>编号</td>
        <td>学生姓名</td>
        <td>年龄</td>
        <td>班级</td>
      </tr>
      <tr v-for="(student , index) in msg" :key="index">
        <td>{{student.sid}}</td>
        <td>{{student.sname}}</td>
        <td>{{student.age}}</td>
        <td>{{student.classes.cname}}</td>
      </tr>
    </table>
  </div>
</template>

<script>
export default {

async asyncData( context) {
    let{data} = await context.$axios.get('classes-service/classes')
    return {
      classesList : data
    }
  },


data() {
    return {
      msg:{},
      vo:{}
    }
  },
  methods: {
    async findAll() {
    let{data} = await this.$axios.post('/student-service/student/condition',this.vo)
    this.msg = data.data.records
  },
  },

   mounted() {
    this.findAll()
  },
}
</script>

<style>

</style>

在这里插入图片描述

总结

提示:
下章 - nuxt简单入门3
希望各位老师同学提出意见。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值