那些不知道的Vue API

作者: 费莱姆 | 来源:发表于2019-04-20 20:14 被阅读5次

    1.使用 performance 开启性能追踪

    performance API 是 Vue 全局配置 API 中的一个,我们可以使用它来进行网页性能的追踪,我们可以在入口文件中添加:

    if (process.env.NODE_ENV !== 'production') {
        Vue.config.performance = true;
    }
    

    来开启这一功能,该 API(2.2.0 新增)功能只适用于开发模式和支持 performance.mark API 的浏览器上,开启后我们可以下载 Vue Performance Devtool 这一 chrome 插件来看查看各个组件的加载情况,如图:

    165100a377b1bac9.jpg

    而其在 Vue 源码中主要使用了 window.performance 来获取网页性能数据,其中包含了 performance.markperformance.measure

    • performance.mark 主要用于创建标记
    • performance.measure 主要用于记录两个标记的时间间隔
    performance.mark('start'); // 创建 start 标记
    performance.mark('end'); // 创建 end 标记
    
    performance.measure('output', 'start', 'end'); // 计算两者时间间隔
    
    performance.getEntriesByName('output'); // 获取标记,返回值是一个数组,包含了间隔时间数据
    

    2.使用 errorHandler 来捕获异常

    在浏览器异常捕获的方法上,我们熟知的一般有:try ... catch 和 window.onerror,这也是原生 JavaScript 提供给我们处理异常的方式。但是在 Vue 2.x 中如果你一如既往的想使用 window.onerror 来捕获异常,那么其实你是捕获不到的,因为异常信息被框架自身的异常机制捕获了,你可以使用 errorHandler 来进行异常信息的获取:

    Vue.config.errorHandler = function (err, vm, info) {
        let { 
            message, // 异常信息
            name, // 异常名称
            stack  // 异常堆栈信息
        } = err;
    
        // vm 为抛出异常的 Vue 实例
        // info 为 Vue 特定的错误信息,比如错误所在的生命周期钩子
    }
    

    3.使用 nextTick ,在下次 DOM 更新循环结束之后执行延迟回调。

    应用场景:需要在视图更新之后,基于新的视图进行操作。

    点击按钮显示原本以 v-show = false 隐藏起来的输入框,并获取焦点。

    showsou(){
      this.showit = true //修改 v-show
      document.getElementById("keywords").focus()  //在第一个 tick 里,获取不到输入框,自然也获取不到焦点
    }
    

    修改为:

    showsou(){
      this.showit = true
      this.$nextTick(function () {
        // DOM 更新了
        document.getElementById("keywords").focus()
      })
    }
    

    相关文章

      网友评论

        本文标题:那些不知道的Vue API

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