vue_day03

作者: 穆木小七 | 来源:发表于2018-08-15 16:20 被阅读6次

    Vue中发ajax的时机:要趁早
    应该在created钩子函数中发起请求,这样可以并行的做一些其他的事情,等到页面挂载好,数据也请求回来了.
    如果实在mounted钩子函数中发起请求,那么,当时用户已经可以看到页面的假数据或者空数据,然后才会显示从数据库查询出的正常数据,造成数据闪烁,用户体验不好.

    image.png
    使用vue-resource模块,做根路径默认配置
    image.png
    使用方式:
    this.$http.get("api/getproplist").then(result=>{...})
    启用全局emulateJSON配置,用于转换post提交的编码方式
    image.png

    动画:
    分为两个半场动画
    进入动画
    初始(v-enter)状态 opacity:0
    进入之后终止(v-enter-to)状态 opacity:1
    进入动画过程 v-enter-active

    离开动画
    离开之前(v-leave)状态 opacity:1
    离开之后(v-leave-to)状态 opacity:0
    离开动画过程 v-leave-active

    其中v-enter和v-leave-to样式差不多
    v-enter-to和v-leave样式差不多

    使用<transition>标签把需要控制的标签包裹起来.再通过style样式进行更改动画显示


    image.png

    其中 <transition>标签中的name属性,可以修改样式的前缀,(v-enter --> my-enter),用于和其他动画样式做区分.


    image.png
    使用第三方的css实现动画效果(animated.css),可以使用duration来设置动画时长.
    image.png

    使用javascript钩子函数来实现半场动画效果(仅包含入场动画)
    下面的钩子函数依次执行


    image.png
    image.png
    如果没有显示的调用done()函数,那么动画效果会出现延迟.
    image.png
    注意:afterEnter(el){}这个钩子函数中,this.flag=!this.flag,作用:隐藏小球,更重要的是强制把flag由true改成false,结束后半场动画,让每次点击都只执行前半场动画.

    对于<li>标签 应该使用<transition-group>标签包裹


    image.png

    使用相应的动画样式


    image.png
    固定的动画模板
    image.png

    通过appear属性实现页面展示后,列表入场效果


    image.png
    组件:
    为了拆分Vue实例的代码量,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可.
    模块化:从代码逻辑的角度进行划分,方便代码分层开发,保证每个功能模块的职能单一
    组件化:从UI界面的角度进行划分的,前端的组件化,方便UI组件的重用.

    定义全局组件的三种方式
    创建组件的方式一:
    使用Vue.extend 来创建全局的Vue组件
    1.通过Vue.extend({})创建一个组件的模板对象
    2.通过Vue.component()定义全局组件,将组件的模板对象注册成具有名称的组件,但是如果组件名采用驼峰命名,需要将大写的驼峰改为小写的字母,并且两个单词之间 使用 '-'连接,
    如果不使用驼峰,直接拿名称来使用即可.

    image.png
    创建组件的方式二:(通过字面量来直接创建)
    image.png
    创建组件的方式三:
    和第二种相比,不用把标签写在字符串中,防止出现错误
    采用<template>标签来提供HTML模板,然后通过id进行引入,注意:<template>标签必须在Vue实例控制的标签范围之外,并且只能有一个根元素.
    image.png
    定义实例内部私有组件的方式:该Vue实例独享这个组件,和filters,methods,directives一样
    和全局组件一样,可以在template后直接写html标签,也可以通过id引入<template>模板.
    image.png

    组件中的data,必须是一个方法,且返回值是一个对象,可以被template通过插值表达式来使用


    image.png

    关于为什么data必须是一个函数:
    如果在函数外部定义一个对象,在data函数中返回这个对象,那么,页面在多次引入组件的时候,多个组件共享的是同一个对象,互相干扰,官方建议:在data函数中返回的对象必须是内部的,即:return { count : 0 }


    image.png

    组件显示切换(登录|注册)
    方式1:
    可以通过flag标签,v-if和v-else指令进行切换显示.
    缺陷:只能2个页面进行切换显示.

    方式2:
    把<component>标签的 :is 属性作为Vue实例中属性,然后通过点击事件进行赋值更改,就可以实现组件位置切换显示.


    image.png

    通过<transition>标签来为组件切换增加动画效果


    image.png

    相关文章

      网友评论

          本文标题:vue_day03

          本文链接:https://www.haomeiwen.com/subject/pivibftx.html