Appearance
6.11 Api
6.11.1 全局配置(Vue.config)
Vue.config是一个对象,包含Vue的全局配置。
Vue.config.silent:是否显示Vue所有的日志与警告
jsVue.config.silent = true // 取消 Vue 所有的日志与警告。
Vue.config.optionMergeStrategies:混入的自定义合并策略
jsVue.config.optionMergeStrategies._my_option = function (parent, child, vm) { return child + 1 } const Profile = Vue.extend({ _my_option: 1 }) // Profile.options._my_option = 2
Vue.config.devtools:配置是否允许vue-devtools检查代码
js// 务必在加载 Vue 之后,立即同步设置以下内容 Vue.config.devtools = true
Vue.config.errorHandler:捕获指定组件的渲染和观察期间错误
jsVue.config.errorHandler = function (err, vm, info) {} // `info` 是Vue特定的错误信息,比如错误所在的生命周期钩子
Vue.config.warnHandler:为Vue运行时的警告赋予一个自定义处理函数Vue.config.ignoredElements:忽略在Vue之外的自定义元素。*Vue3中移除替换为config.isCustomElementVue.config.keyCodes:给v-on自定义键位别名.*Vue3中移除
jsVue.config.keyCodes = { v: 86, f1: 112, // camelCase 不可用 mediaPlayPause: 179, // 取而代之的是 kebab-case 且用双引号括起来 "media-play-pause": 179, up: [38, 87] }html<input type="text" @keyup.media-play-pause="method">
Vue.config.performance:在浏览器开发工具的性能/时间线面板中启用对组件初始化、编译、渲染和打补丁的性能追踪。只适用于开发模式和支持performance.mark API的浏览器上。Vue.config.productionTip:阻止vue在启动时生成生产提示。*Vue3中移除
6.11.2 全局API
Vue.extend():在Vue实例中创建一个“子类” 详见6.4.6 。*Vue3中移除Vue.nextTick():在下次DOM更新循环结束之后执行延迟回调,详见6.9.1Vue.set()修改数组或对象并触发视图更新,详见6.4.6Vue.delete()删除数组或对象并触发视图更新Vue.directive()注册或获取全局自定义指令,详见6.2.14Vue.filter()注册或获取全局过滤器Vue.component()注册或获取全局组件Vue.use()使用已安装的vue插件Vue.mixin()全局注册一个混入,详见6.4.6Vue.compile()将一个模板字符串编译成render函数- *Vue3新增:
createApp创建应用实例 - *Vue3新增:
mount挂载应用实例
jsvar res = Vue.compile('<div><span>{{ msg }}</span></div>') new Vue({ data: { msg: 'hello' }, render: res.render, staticRenderFns: res.staticRenderFns })
Vue.observable()让一个对象可响应Vue.version当前使用的vue版本号(读取package.json中的version字段)Vue.globalProperties:轻易全局对象。*Vue3中移除替换为config.isCustomElement
js
// Vue2
Vue.prototype.$http = () => {}
// Vue3
const app = createApp({})
app.config.globalProperties.$http = () => {}6.11.3 实例选项
- *Vue3新增:
emits定义一个组件可以向其父组件触发的事件
js
<template>
<div>
<p>{{ text }}</p>
<button v-on:click="$emit('accepted')">OK</button>
</div>
</template>
<script>
export default {
props: ['text'],
emits: ['accepted']
}
</script>6.11.4 实例方法
property
Vue.$data:实例的data对象Vue.$props:当前组件接收到的props对象Vue.$el:Vue根实例的DOM元素Vue.$options:初始化实例选项
jsnew Vue({ customOption: 'foo', created: function () { console.log(this.$options.customOption) // => 'foo' } })
Vue.$parent:查看父组件实例Vue.$root::查看根组件实例Vue.$children:查看子组件实例。*Vue3中移除,如需访问子组件请使用$refsVue.$slots:查看被插槽分发的内容(v-slot:foo -> vm.$slots.foo ,匿名 -> vm.$slots.default)Vue.$scopedSlots:查看作用域插槽Vue.$refs:查看注册过ref属性的dom元素数组。
TIP
- 在*Vue3初期版本不再自动创建
$ref数组,3.2.25以上可以expose选项可以用于限制对子组件实例的访问jsexport default { // 父组件的ref只能访问以下两个组件 expose: ['ChildA', 'ChildB'] }
Vue.$isServer:当前 Vue 实例是否运行于服务器Vue.$attrs:获取父组件中不被prop识别,且不是class和style的数据,并且可以通过v-bind="$attrs"向下传入。*Vue3中包含class和styleVue.$listeners:监听父组件中(不含 .native 修饰器的) v-on 事件监听器的时间,并且可以通过v-bind="$listeners"向下传入。*Vue3中移除
数据
Vue.$watch:监听Vue实例上的一个表达式或者一个函数计算结果的变化Vue.$set:全局Vue.set的别名Vue.$delete:全局Vue.delete的别名
事件
Vue.$on:监听当前实例上的自定义事件.*Vue3中移除
jsvm.$on('test', function (msg) { console.log(msg) }) vm.$emit('test', 'hi') // => "hi"
Vue.$once:监听一个自定义事件,但是只触发一次。一旦触发之后,监听器就会被移除.*Vue3中移除Vue.$off:移除自定义事件监听器,如果没有提供参数,则移除所有的事件监听器.*Vue3中移除Vue.$emit:触发当前实例上的事件
生命周期
Vue.$mount:手动挂载一个未挂载的实例Vue.$forceUpdate:迫使Vue实例重新渲染Vue.$nextTick:将回调延迟到下次DOM更新循环之后执行Vue.$destroy:完全销毁一个实例,会触发beforeDestroy和destroyed钩子
TIP
组件与实例的关系:Vue是由一个个实例构建而成的,一个组件就是一个Vue的实例,每个组件内部都可以写属性,因此每一个组件都是一个Vue的实例。”
- 具体使用方法详见:VUE|API