vue 基础

VUE基础

.一.Vue基础指令:
1.v-model 双向数据绑定
用法: 用于表单控件input select textarea components(组件) <v-model="content">{{content}}</any>
修饰符:
① .lazy 取代input 监听 change 事件
② .number 输入字符串转为数字
③ .trim 输入首尾空格过滤

2.v-text 更新元素的textContent,textContent属性设置或返回指定节点的文本内容,以及它的所有后代。
主要用于页面数据渲染,代替{{}},因为页面为渲染完成时{{}}可能会显示在页面上
内容标签不会转义
用: v-text=”数据”

3.v-html 更新元素的innerHTML ,不会作为Vue模板编译,只在可信内容上用,不能用在用户提交的内容,安全性低
用法: v-html="数据"

4.v-show 控制元素的显示/隐藏,原理display:none/block
用法:v-show="bool名" data:{ bool名:true/false } 事件控制bool值

5.v-if 也是控制显示/隐藏
原理 删除,添加元素,v-if与v-for一起使用v-for级别高

6.v-else-if
限制: 必须在v-if 或 v-else-if后
用法: if-else if 语法 可链式调用
7.v-else
限制: 放在 v-if或 v-else-if后
用法: 为v-if 或 v-else-if 添加”else”块

8.v-bind:属性 动态的绑定一个或多个特性,或一个组件prop到表达式,如:title=”” v-bind:src=””
缩写: :
修饰符:
① .prop 被用于绑定DOM属性
② .camel 使用DOM模板时将属性名称驼峰化 2.1.0以上版本支持
用法:
动态的绑定一个或多个特性,或一个组件prop到表达式

9..v-for 循环遍历一个数组,也分in 和 of 基于源数据多次渲染或模板快,v-for默认不改变整体,而是替换元素, 这里需要:Key 栗子:v-for=”(item, index) of items”
需要 :key=”value” 主要用在Vue的虚拟DOM算法,可以提高渲染性能,每个值要不同 index可以用,但有问题
用法: v-for="(list, index) in/of lists" :key="list.id"

10.v-on: 事件绑定
简写: @click
用法: @click="方法名/自定义"

11.v-pre
用法: 跳过这个节点和它子元素的编译过程,可以用来显示原始标签,加快编译

12.v-cloak
用法: 这个指令保持在元素上直到关联实例结束编译.

     [v-clock]{display: none} 
     一般用于页面加载时,不想被人看见的元素

13.v-once 只渲染元素和组件 一次 .随后的重新渲染,元素/组件及其所有子节点都被视为静态内容并跳过,常用于性能更新优化

二.过滤器: filter

主要是对接口的数据进行判断和转化,可用于插值{{}} 和 v-bind 表达式
分为全局过滤器和局部过滤器
全局过滤器 Vue.filter() 可在全部页面使用

 Vue.filter("过滤器名",function(参数,参数,...){ 
          return   ....
      })

      <p>{{msg | 过滤器名("参数","参数",...) | 过滤器 ...}}</p>

局部过滤器 在实例中加filters:{}
用法: 同上

三.创建Vue实例

在网页中先引入

  `script src= "vue.min.js"   script src = "vue-resource.min.js" //vue-resource是一个和后台交互的插件 == AJAX`

cnpm install vue –save-dev 把插件安装到项目中的依赖库

var app = new Vue({ //可简化为new Vue
//el 是这个实例需要监听的范围对象,一般用id
el:”#app”,
//data是模型,定义数据,所有模型的改变都会反向操作DOM

    data:{     
     count:0,
     list:[]
    },

//mounted 生命周期的一部分,在创建完成后,默认执行某个方法,生命周期函数有8个,最常用的有created和mounted

 mounted: function(){   
    //this.$nextTick 保证 this.$el在document中
          this.$nextTick(function (){
//this在Vue实例方法中所有this都指向实例,但是在某一个函数中内部作用域发生了变化,this就变了            
            var _this = this;
            this.$http.get/post/jsonp("./data.json",参数)
              .then(function(res){
//vue将json又封装了一层,需要res.body才能获得原本的数据,把获得的数据放到data下
                  _this.list  = res.body.result.list;
              })
          }) 
    },

//filters 局部过滤器 在要使用的数据后加 | 过滤器名 如:{{msg | formatMoney}}

  filters:{
      formatMoney: function(value){
           "$"+value.toFixed(2)
       }
    },

//methods 方法 监听范围内的所有事件都要调用methods中的方法

  methods:{    
        cartView (){  },
    },

//computed 一个属性通过其他属性计算而来 当其他引用时computed会使用缓存值 依赖属性发生变化时才会重新计算

    computed:{
     num (){ return c = a+b}
    },

//watch 侦听器 检测某一个数据或计算数据发生变化

    watch:{
      num (){ count++ }
    }
})

四.特殊特性
1.ref

ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。
    如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例
注意: ref 本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们 - 它们还不存在!
      $refs 也不是响应式的,因此你不应该试图用它在模板中做数据绑定。

2.slot

用于标记往哪个具名插槽中插入子组件内容

3.key

key 的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。
  如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试修复/再利用相同类型元素的算法。
  使用 key,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。

4.is

用于动态切换组件
<component v-bind:is="currentTabComponent"></component>
通过动态改变 is的值来切换组件

五.动画
vue中单元素和组件的过渡
<transition name=""></transition>把需要过渡的组件包裹起来

过渡的6个class
1.v-enter:

定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。

2.v-enter-active:

定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。

3.v-enter-to:

2.1.8版及以上 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。

4.v-leave:

定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。

5.v-leave-active:

定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。

6.v-leave-to:

2.1.8版及以上 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。 name中的字符会替换 v

例子:

   <transition name="slide-down"> <!-- 过渡动画效果 --> </transition>
  .slide-up-enter, .slide-up-leave-to { // enter移入开始 leave-to 移出开始
    transform: translate3d(0, 100%, 0)
  }
  .slide-up-enter-to, .slide-up-leave, .slide-down-enter-to, .slide-down-leave  { // enter移入结束 leave移出结束
    transform: translate3d(0, 0, 0);
  }
  .slide-up-enter-active, .slide-up-leave-active, .slide-down-enter-active, .slide-down-leave-active{ // 进入动画 移出动画
    transition: all .3s linear;
  }
  .slide-down-enter, .slide-down-leave-to {
    transform: translate3d(0, -100%, 0);
  }

猜你喜欢

转载自blog.csdn.net/qq_42731879/article/details/82691360