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 插件来看查看各个组件的加载情况,如图:
而其在 Vue 源码中主要使用了 window.performance 来获取网页性能数据,其中包含了 performance.mark
和 performance.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()
})
}
网友评论