zoukankan      html  css  js  c++  java
  • 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 }}

    <!-- 在 v-bind 指令中 -->
    <div v-bind:id="rawId | formatId"></div>

    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修饰:<my-component v-on:click.native="doTheThing"></my-component>

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

    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 表达式的初始值未能匹配任何选项,<select> 元素将被渲染为“未选中”状态。
    在 iOS 中,这会使用户无法选择第一个选项。因为这样的情况下,iOS 不会触发 change 事件。因此,更推荐提供一个值为空的禁用选项。

    33.这个 prop 用来传递一个初始值;这个子组件接下来希望将其作为一个本地的 prop 数据来使用。在这种情况下,最好定义一个本地的 data 属性并将这个 prop 用作其初始值。
    props: ['initialCounter'],
    data: function () {
    return {
    counter: this.initialCounter
    }
    }

    34.在极少数的情况下需要手动强制更新,那么你可以通过 $forceUpdate 来做这件事。

    35.Object.defineProperty 是 ES5 中一个无法 shim 的特性,这也就是 Vue 不支持 IE8 以及更低版本浏览器的原因。

    36.input中onkeyup="this.value=this.value.replace(/[^u4e00-u9fa5]/g,'') " onafterpaste="this.value=this.value.replace(/[^u4e00-u9fa5]/g,'')"表示只能输入中文字。

    37.全局路由钩子函数:每次路由跳转,都会执行beeforeEach和afterEach

    beforeEach(to,from,next){

    console.log(to);//到达的路由

    console.log(next);//管道中,可以跳转到其他路由

    console.log(from);//离开的路由

    }

    确保始终调用该next函数,否则永远不会解析挂钩

    afterEach(to,from){}

    38.单个路由钩子函数beforeEnter有三个参数:to/from/next,在配置路由的时候添加此钩子函数

    39.组件内钩子函数beforeRouteEnter+beforeRouteUpdate+beforeRouteLeave,三个参数:to/from/next

    在组件内部定义,其中beforeRouteUpdate是在二级路由更改时才会触发。

    40.回退函数

    goBack () {
    window.history.length > 1
    ? this.$router.go(-1)
    : this.$router.push('/')
    }

    41.当params参数更改时,触发页面调用生命周期钩子函数

    watch: {
    '$route' (to, from) {}
    }或者

    beforeRouteUpdate (to, from, next) {}

    42.捕获所有/ 404未找到路线:path{*}

    43.路由传参

    // named route
    router.push({ name: 'user', params: { userId: '123' } })

    // with query, resulting in /register?plan=private
    router.push({ path: 'register', query: { plan: 'private' } })

     44.路线元字段

    可以meta在定义路径时包含字段:
    {
    path: 'bar',
    component: Bar,
    // a meta field
    meta: { requiresAuth: true }
    }
    通过to.meta.requiresAuth访问

    45.滚动行为

    scrollBehavior (to, from, savedPosition) {
    // return desired position
    }
    返回值:
    { x: number, y: number }
    { selector: string, offset? : { x: number, y: number }} (仅在2.6.0+中支持偏移)

     
  • 相关阅读:
    idea报“Usage of API documented as @since 1.7”这一问题的解决方法
    分页的总页数算法
    Error evaluating expression 'category.id != null and category.id != '''. Cause: org.apache.ibatis.og
    json日期处理类
    解决maven过滤必需配置文件的方法
    数据库配置文件
    springmvc 提供的统一解决json中文乱码配置
    EXPLAIN 命令详解
    MySQL索引与Index Condition Pushdown(二)
    【MySQL】性能优化之 Index Condition Pushdown
  • 原文地址:https://www.cnblogs.com/xinyouhunran/p/10862256.html
Copyright © 2011-2022 走看看