vue备忘录

1.Vue构造其中有一个el参数,它是dom元素中的id。

2.Vue中的实例属性与方法都有前缀$,以便与用户定义的属性区分开来。如:$el。

3.v-html指令用于输出html代码。

4.修饰符是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。
例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault()。
.stop 阻止事件冒泡
.capture 使用事件捕获
.self 只在该元素本身出发,子元素不会触发
.once 事件只触发一次(版本:2.1.4新增)

5.过滤器,由管道符指示,过滤器函数接受表达式的值作为第一个参数。

{{ message | capitalize }}


data:{rawId:1},
filters:{formatId:(value)=>{return value++;}}

6.v-bind:id缩写:id
v-on:click缩写@click

7.当我们给一个比如 props 中,或者 data 中被观测的对象添加一个新的属性的时候,不能直接添加,必须使用 Vue.set 方法。

8.计算属性computed{
newId:{//可以直接使用
get:function(){},
set:function(value){}
}
}
当newId属性值改变的时候,会触发跟这个属性相关的视图的改变。

9.监听属性watch
data{id:1}
watch:{id:function(val){axios......then().catch()}}
watch用来监听一个data里的属性值;当此值改变的时候,会触发数据的变化。
一般情况下涉及到异步请求数据就在watch里写。

10.class属性绑定
对象语法:v-bind:class="{ active: isActive, 'text-danger': hasError }"
都为true的情况下,应用样式,后面的会覆盖前面的样式。
数组语法: v-bind:class="[activeClass, errorClass]"

11.style(内联样式绑定)
对象:v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"
数组:v-bind:style="[baseStyles, overridingStyles]"

12.按键修饰符:如v-on:keyup.enter
.enter
.tab
.delete (捕获 "删除" 和 "退格" 键)
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta

13.input修饰符
.lazy:在默认情况下, v-model 在 input 事件中同步输入框的值与数据,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步:
.number
.trim:自动过滤输入的首尾空白字符

14.props父组件传递给子组件。

15.自定义事件$on(eventName);父组件接收子组件事件
$emit(eventName);子组件发出事件

16.监听原生事件:.native修饰:

17.router-link to="" 渲染结果 a href=""
设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),导航后不会留下 history 记录。
设置 append 属性后,则在当前 (相对) 路径前添加基路径。例如,我们从 /a 导航到一个相对路径 b,如果没有配置 append,则路径为 /b,如果配了,则为 /a/b
有时候想要 渲染成某种标签,例如

  • 。 于是我们使用 tag prop 类指定何种标签,同样它还是会监听点击,触发导航。

    18.vue路由懒加载:进入首页不用一次加载过多资源造成用时过长。

    19.只有data中的数据是响应式的,动态添加近来的数据默认为非响应式。
    可以通过以下方式实现动态添加数据的响应式
    var vm = new Vue({
    data: {
    stu: {
    name: 'jack',
    age: 19
    }
    }
    })
    1 Vue.set(object, key, value) - 适用于添加单个属性
    2 Object.assign() - 适用于添加多个属性
    Vue.set(vm.stu, 'gender', 'male')
    /* Object.assign 将参数中的所有对象属性和值 合并到第一个参数 并返回合并后的对象*/
    vm.stu = Object.assign({}, vm.stu, { gender: 'female', height: 180 })

    20.获取更新后dom中的数据 则需要通过 Vue.nextTick(callback);实例调用vm.$nextTick(function () {})

    21.v-for="(item, key, index) in obj"

    22.注意:computed中的属性不能与data中的属性同名,否则会报错

    23.拦截器会拦截发送的每一个请求,请求发送之前执行request中的函数,请求发送完成之后执行response中的函数
    // 请求拦截器 //响应拦截器形似
    axios.interceptors.request.use(function (config) {
    // 所有请求之前都要执行的操作
    return config;
    }, function (error) {
    // 错误处理
    return Promise.reject(error);
    });

    24.非父子通讯可以用事件总线
    var bus = new Vue()
    // 在组件 B 绑定自定义事件
    bus.$on('id-selected', function (id) {
    // ...
    })
    // 触发组件 A 中的事件并传递值;此值可以在父组件通过$event访问到
    bus.$emit('id-selected', 1)

    25.mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性。

    26.我们可以将同一函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。
    然而,不同的是计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。

    27.一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。
    因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

    28.由于 JavaScript 的限制,Vue 不能检测以下变动的数组:
    当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue
    当你修改数组的长度时,例如:vm.items.length = newLength
    可以使用 vm.$set 实例方法,该方法是全局方法 Vue.set 的一个别名:
    vm.$set(vm.items, indexOfItem, newValue)
    为了解决第二类问题,你可以使用 splice:
    vm.items.splice(newLength)

    29.对象同28,当你需要改变多个属性,应该这样做:
    Object.assign({}, vm.object, {
    age: 27,
    favoriteColor: 'Vue Green'
    })

    30.有时也需要在内联语句处理器中访问原始的 DOM 事件。可以用特殊变量 $event 把它传入方法。

    31.单个复选框,绑定到布尔值;多个复选框,绑定到同一个数组。

    32.选择框:如果 v-model 表达式的初始值未能匹配任何选项,