vue笔记3

数据接口配置根域名(全局配置)

通过全局配置,请求数据接口的根域名,那么,在每次单独发起 http 请求的时候,请求的 url 路径,应该以相对路径开头,前面不能带 / ,否则 不会启用根路径做拼接

Vue.http.options.root = 'http://vue.studyit.io/';
this.$http.get('api/getprodlist').then(result => {})

全局启用 emulateJSON 选项

Vue.http.options.emulateJSON = true;

过度动画(v-…)

v-enter 【这是一个时间点】 是进入之前,元素的起始状态,此时还没有开始进入
v-leave-to 【这是一个时间点】 是动画离开之后,离开的终止状态,此时,元素 动画已经结束了
v-enter-active 【入场动画的时间段】
v-leave-active 【离场动画的时间段】

    .v-enter,.v-leave-to {
      opacity: 0;
      transform: translateX(150px);
    }
    .v-enter-active,.v-leave-active{
      transition: all 0.8s ease;
    }


    <input type="button" value="toggle" @click="flag=!flag">
    <transition>
      <h3 v-if="flag">这是一个H3</h3>
    </transition>


	var vm = new Vue({
      el: '#app',
      data: {
        flag: false
      },
      methods: {}
    });

name-…(name自定义)

使用transition时设置name,然后可将v替换为自定义name

	<input type="button" value="toggle2" @click="flag2=!flag2">
    <transition name="my">
      <h6 v-if="flag2">这是一个H6</h6>
    </transition>


	.my-enter,.my-leave-to {
      opacity: 0;
      transform: translateY(70px);
    }
    .my-enter-active,.my-leave-active{
      transition: all 0.8s ease;
    }


    var vm = new Vue({
      el: '#app',
      data: {
        flag: false,
        flag2: false
      },
      methods: {}
    });

使用第三方animates类库实现动画

在这里插入图片描述
在这里插入图片描述
duration用于设置时长(入场与离场可分别设置)

钩子函数半场实现动画

图片中的事件可不全用,用以实现半场效果
在这里插入图片描述

    <input type="button" value="快到碗里来" @click="flag=!flag">
    <transition
      @before-enter="beforeEnter"
      @enter="enter"
      @after-enter="afterEnter">
      <div class="ball" v-show="flag"></div>
    </transition>
    
    methods: {
        beforeEnter(el){
          el.style.transform = "translate(0, 0)"
        },
        enter(el, done){
          el.offsetWidth
          el.style.transform = "translate(150px, 450px)"
          el.style.transition = 'all 1s ease'
          done()
        },
        afterEnter(el){
          this.flag = !this.flag
        }
      }

其中,enter函数的 done, 起始就是 afterEnter 这个函数,也就是说:done 是 afterEnter 函数的引用

列表动画(v-for渲染)

在实现列表过渡的时候,如果需要过渡的元素,是通过 v-for 循环渲染出来的,不能使用 transition 包裹,需要使用 transitionGroup
如果要为 v-for 循环创建的元素设置动画,必须为每一个 元素 设置 :key 属性

      <transition-group appear tag="ul">
        <li v-for="(item, i) in list" :key="item.id" @click="del(i)">
          {{item.id}} --- {{item.name}}
        </li>
      </transition-group>

给 ransition-group 添加 appear 属性,实现页面刚展示出来时候,入场时候的效果
通过 为 transition-group 元素,设置 tag 属性,指定 transition-group 渲染为指定的元素,如果不指定 tag 属性,默认,渲染为 span 标签

组件化与模块化的区别

模块化:是从代码逻辑的角度进行划分的,方便代码分层开发,保证每个功能模块的职能单一
组件化:是从UI界面的角度进行划分的,前端的组件化,方便UI组件的重用

组件创建方式

方式1

使用 Vue.extend 来创建全局的Vue组件

	var com1 = Vue.extend({
      template: '<h3>这是使用 Vue.extend 创建的组件</h3>' // 通过 template 属性,指定了组件要展示的HTML结构
    })
     Vue.component('myCom1', com1)

如果使用 Vue.component 定义全局组件的时候,组件名称使用了 驼峰命名,则在引用组件的时候,需要把 大写的驼峰改为小写的字母,同时,两个单词之前,使用 - 链接

可进行简写化

	Vue.component('mycom1', Vue.extend({
      template: '<h3>这是使用 Vue.extend 创建的组件</h3>'
    }))

方式2:

	Vue.component('mycom2', {
      template: '<div><h3>这是直接使用 Vue.component 创建出来的组件</h3><span>123</span></div>'
    })

方式3

  <template id="tmpl">
    <div>
      <h1>这是通过 template 元素,在外部定义的组件结构,这个方式,有代码的只能提示和高亮</h1>
      <h4>好用,不错!</h4>
    </div>
  </template>

    Vue.component('mycom3', {
      template: '#tmpl'
    })
`

组件切换1(v-if v-else)

用v-if v-else来设定只能设定两个。

    <a href="" @click.prevent="flag=true">登录</a>
    <a href="" @click.prevent="flag=false">注册</a>

    <login v-if="flag"></login>
    <register v-else="flag"></register>


    Vue.component('login', {
      template: '<h3>登录组件</h3>'
    })

    Vue.component('register', {
      template: '<h3>注册组件</h3>'
    })

组件切换2(component设定)

component 是一个占位符, :is 属性,可以用来指定要展示的组件的名称

    <a href="" @click.prevent="comName='login'">登录</a>
    <a href="" @click.prevent="comName='register'">注册</a>

    <component :is="comName"></component>
    
    Vue.component('login', {
      template: '<h3>登录组件</h3>'
    })

    Vue.component('register', {
      template: '<h3>注册组件</h3>'
    })

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值