这俩天看了下 Vue 简单学习了下,官方文档讲的很详细,但是太详细的东西反而显得不是那么容易查找及对比学习,于是自己整理了下主要知识点。以下所有内容均是基于 Vue 2.x 版本整理的,望知悉!
全局配置
名称 | 类型 | 默认值 | 详细 |
---|---|---|---|
silent | boolean | false | 取消Vue所有的日志与警告 |
optionMergeStrategies | {[key:string]:Function} | {} | 自定义合并策略的选项 |
devtools | boolean | true/false(生产) | 配置是否允许vue-devtools检查代码 |
errorHandler | Function | undefined | 指定组件的渲染和观察期间未捕获错误的处理函数 |
warnHandler | Function | undefined | 为Vue的运行时警告赋予一个自定义处理函数,仅开发环境生效 |
ignoredElements | Array<string | RegExp> | [] | 须使Vue忽略在Vue之外的自定义元素,否则抛出Unknown custom element 的警告 |
keyCodes | {[key:string]:number|Array<number>} | {} | 给v-on自定义键位别名 |
performance | boolean | false | 设置为 true 以在浏览器开发工具的性能/时间线面板中启用对组件初始化、编译、渲染和打补丁的性能追踪。只适用于开发模式和支持 performance.mark API 的浏览器上 |
productionTip | boolean | true | 设置为false以阻止Vue在启动时生成生产提示 |
全局API
名称 | 参数 | 详细 |
---|---|---|
Vue.extend(options) | {Object}options | 使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象。data 选项是特例,需要注意 – 在 Vue.extend() 中它必须是函数 |
Vue.nextTick([callback,context]) | {Function}[callback] {Object}[context] |
在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM |
Vue.set(target,propertyName/index,value) | {Object|Arry}target {String|Number}propertyName/index {any}value |
向响应式对象中添加一个property,并确保这个新property同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新property,因为Vue无法探测普通的新增property。 注意对象不能是Vue实例,或者Vue实例的根数据对象 |
Vue.delete(target,propertyName/index) | {Object|Arry}target {String|Number}propertyName/index |
删除对象的property。如果对象是响应式的,确保删除能触发更新视图。这个方法主要用于避开Vue不能检测到property被删除的限制。 注意对象不能是Vue实例,或者Vue实例的根数据对象 |
Vue.directive(id,[definition]) | {String}id {Function|Object}[definition] |
注册或获取全局指令 |
Vue.filter(id,[definition]) | {String}id {Function}[definition] |
注册或获取全局过滤器 |
Vue.component(id,[definition]) | {String}id {Function|Object}[definition] |
注册或获取全局组件。注册还会自动使用给定的 id 设置组件名称 |
Vue.use(plugin) | {Object|Function}plugin | 安装Vue.js插件。该方法需要在调用 new Vue() 之前被调用。 |
Vue.mixin(mixin) | {Object}mixin | 全局注册一个混入,影响注册之后所有创建的每个 Vue 实例 |
Vue.compile(template) | {String}template | 将一个模板字符串编译成render函数 |
Vue.observable(object) | {Object}object | 让一个对象可响应。Vue 内部会用它来处理 data 函数返回的对象 |
Vue.version | 提供字符串形式的Vue安装版本号 |
选项-数据
名称 | 类型 | 详细 |
---|---|---|
data | Object|Function | Vue实例的数据对象。组件的定义只接受Function |
props | Array<String>|Object | 数组或对象,用于接收来自父组件的数据。 基于对象的选项:type、default、required、validator |
propsData | {[key:String]:any} | 创建实例时传递props,主要方便测试。只用于 new 创建的实例中 |
computed | {[key:String]:Function|{get:Function,set:Function}} | 计算属性将被混入到Vue实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例。 |
methods | {[key:String]:Function} | methods将被混入到Vue实例中。可以直接通过VM实例访问这些方法,或者在指令表达式中使用。方法中的 this 自动绑定 Vue 实例 |
watch | {[key:String]:String|Function|Object|Array} | 一个对象,键是需要观察的表达式,值是对应回调函数、方法名或对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个 property。 |
选项-DOM
名称 | 类型 | 详细 |
---|---|---|
el | String|Element | 提供一个在页面上已存在的DOM元素作为Vue实例的关注目标。可以是 CSS 选择器或HTMLElement实例。只在用 new 创建实例时生效 |
template | String | 一个字符串模板作为Vue实例的标识使用。模板将会替换挂载元素。挂载元素的内容都将被忽略,除非模板的内容有分发插槽。 |
render | (createElement:()=>VNode)=>VNode | 字符串模板的替代方案,允许你发挥JavaScript最大编程能力。该渲染函数接收一个createElement方法作为第一个参数用来创建Vnode。 如果组件是一个函数组件,渲染函数还会接收一个额外的 context 参数,为没有实例的函数组件提供上下文信息。 |
renderError | (createElement:()=>Vnode,error:Error)=>VNode | 当 render 函数遭遇错误是,提供另外一种渲染输出。其错误将会作为第二个参数传递到renderError。仅在开发环境下工作 |
选项-生命周期钩子
名称 | 类型 | 详细 |
---|---|---|
beforeCreate | Function | 实例初始化之后,数据观测和event/watcher时间配置前调用 |
created | Function | 实例创建完成后被立即调用 |
beforeMount | Function | 挂载开始之前被调用:相关的render函数首次被调用,服务器端渲染期间不被调用 |
mounted | Function | 实例别挂载后调用,服务器端渲染期间不被调用 |
beforeUpdate | Function | 数据更新时调用,发生在虚拟DOM打补丁之前。服务器端渲染期间不被调用 |
updated | Function | 数据更新导致虚拟DOM重新渲染和打补丁之后调用。服务器端渲染期间不被调用 |
activated | Function | 被keep-alive缓存的组件激活时调用。服务器端渲染期间不被调用 |
deactivated | Function | 被keep-alive缓存的组件停用时调用。服务器端渲染期间不被调用 |
beforeDestroy | Function | 实例销毁之前调用。在这一步,实例仍然完全可用。服务器端渲染期间不被调用 |
destroyed | Function | 实例销毁之后调用。服务器端渲染期间不被调用 |
errorCaptured | (err:Error,vm:Component,info:String)=>?boolean | 当捕获一个来自子孙组件的错误时被调用 |
选项-资源
名称 | 类型 | 详细 |
---|---|---|
directives | Object | 包含Vue实例可用指令的哈希表 |
filters | Object | 包含Vue实例可用过滤器的哈希表 |
components | Object | 包含Vue实例可用组件的哈希表 |
选项-组合
名称 | 类型 | 详细 |
---|---|---|
parent | Vue instance | 指定已创建的实例之父实例,在两者之间建立父子关系 |
mixins | Array<Object> | 接收一个混入对象的数组,这些混入对象可以像正常的实例对象一样包含实例选项,这些选项将会被合并到最终的选项中,使用的是和 Vue.extend() 一样的选项合并逻辑。也就是说,如果你的混入包含一个 created 钩子,而创建组件本身也有一个,那么两个函数都会被调用。 Mixin 钩子按照传入顺序依次调用,并在调用组件自身的钩子之前被调用。 |
extends | Object|Function | 允许声明扩展另一个组件,而无需使用 Vue.extend。主要方便扩展单文件组件 |
provide/inject | provide:Object|() =>Object inject:Array<string>|{ [key: String]:String|Symbol|Object} |
provide 和 inject 主要在开发高阶插件/组件库时使用。并不推荐用于普通应用程序代码中。 这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。 |
选项-其它
名称 | 类型 | 详细 |
---|---|---|
name | String | 允许组件模板递归地调用自身。只有作为组件选项时起作用 |
delimiters | Array<String> | 改变纯文本插入分隔符。默认值:[“{{“, “}}”] |
functional | Boolean | 使组件无状态和无实例。他们用一个简单的render函数返回虚拟节点使它们渲染的代价更小 |
model | {prop?:String,event?:String} | 允许一个自定义组件在使用v-model时定制prop和event |
inheritAttrs | Boolean | 默认情况下父作用域的不被认作props的attribute绑定将会“回退”且作为普通的HTML attribute 应用在子组件的根元素上。当撰写包裹一个目标元素或另一个组件的组件时,这可能不会总是符合预期行为。通过设置 inheritAttrs为false,这些默认行为将会被去掉。 |
comments | Boolean | 当设为true时将会保留且渲染模板中的HTML注释,默认为false |
实例Property
名称 | 类型 | 详细 |
---|---|---|
vm.$data | Object | Vue实例观察的数据对象。Vue实例代理了对其data对象property的访问 |
vm.$props | Object | 当前组件接收到的props对象。Vue实例代理了对其data对象property的访问 |
vm.$el | Element | Vue实例用的根DOM元素 |
vm.$options | Object | 用于当前Vue实例的初始化选项 |
vm.$parent | Vue instance | 父实例,如果当前实例有的话 |
vm.$root | Vue instance | 当前组件树的根Vue实例。如果当前实例没有父实例,此实例将会是自己 |
vm.$children | Array<Vue instance> | 当前实例的直接子组件。$children并不保证顺序,也不是响应式的 |
vm.$slots | {[name:String]:?Array<VNode>} | 用来访问被插槽分发的内容。每个具名插槽都有其相应的Property |
vm.$scopedSlots | {[name:String]:props=>Array<Vnode>|undefined} | 用来访问作用域插槽。对于包含默认slot在内的每一个插槽,该对象都包含一个返回相应VNode的函数 |
vm.$refs | Object | 一个对象,持有注册过ref attribute的所有DOM元素和组件实例 |
vm.$isServer | Boolean | 当前Vue实例是否运行于服务器 |
vm.$attrs | {[key:String]:String} | 包含了父作用域中不作为prop被识别的attribute绑定 |
vm.$listeners | {[key:String]:Function|Array<Function>} | 包含了父作用域中的v-on事件监听器 |
实例方法-数据
名称 | 参数 | 详细 |
---|---|---|
vm.$watch(expOrFn,callback,[options]) | {String|Function}expOrFn {Function|Object}callback {Object}[options] |
观察 Vue 实例上的一个表达式或者一个函数计算结果的变化。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式,用一个函数取代。 |
vm.$set(target, propertyName/index, value) | {Object|Array}target {String|Number}propertyName/index {any}value |
这是全局Vue.set的别名 |
vm.$delete(target, propertyName/index) | {Object|Array}target {String|Number}propertyName/index |
这是全局Vue.delete的别名 |
实例方法-事件
名称 | 参数 | 详细 |
---|---|---|
vm.$on(event,callback) | {String|Array<String>}event) {Function}callback |
监听当前实例上的自定义事件。事件可由vm.$emit触发。回调函数会接收所有传入事件触发函数的额外参数 |
vm.$once(event,callback) | {String}event {Function}callback |
监听一个自定义事件,但是只触发一次。一旦触发之后,监听器就会被移除 |
vm.$off([event,callback]) | {string|Array<string>}event {Function}[callback] |
移除自定义事件监听器。 如果没有提供参数,则移除所有的事件监听器; 如果只提供了事件,则移除该事件所有的监听器; 如果同时提供了事件与回调,则只移除这个回调的监听器 |
vm.$emit(eventName,[…args]) | {String}eventName […args] |
触发当前实例上的事件。附加参数都会传给监听器回调 |
实例方法-生命周期
名称 | 参数 | 详细 |
---|---|---|
vm.$mount([elementOrSelector]) | {Element|string}[elementOrSelector] {boolean}[hydrating] |
如果 Vue 实例在实例化时没有收到 el 选项,则它处于“未挂载”状态,没有关联的 DOM 元素。可以使用 vm.$mount() 手动地挂载一个未挂载的实例。 如果没有提供 elementOrSelector 参数,模板将被渲染为文档之外的的元素,并且你必须使用原生 DOM API 把它插入文档中。 这个方法返回实例自身,因而可以链式调用其它实例方法 |
vm.$forceUpdate() | 迫使 Vue 实例重新渲染。注意它仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件 | |
vm.$nextTick([callback]) | {Function}[callback] | 将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新 |
vm.$destroy() | 完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及事件监听器 |
指令
名称 | 类型 | 详细 |
---|---|---|
v-text | String | 更新元素的textContent |
v-html | String | 更新元素的innerHTML |
v-show | Any | 根据表达式真假,切换元素的display |
v-if | Any | 根据表达式的值来有条件地渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建 |
v-else | 为v-if或者v-else-if添加else块 | |
v-else-if | Any | 表示v-if的else if块 |
v-for | Array|Object|Number|String|Iterable | 基于源数据多次渲染元素或模板块。特定语法alias in expression |
v-on | Funtion|Inline Statement|Object | 绑定事件监听器,事件类型由参数指定 |
v-bind | Any(with argument)|Object(without argument) | 动态地绑定一个或多个attribute,或一个组件prop到表达式 |
v-model | 在表单控件或者组件上创建双向绑定 | |
v-slot | 提供具名插槽或需要接收prop的插槽 | |
v-pre | 跳过这个元素和他的子元素编译过程。可以用来显示原始Mustache标签 | |
v-cloak | 这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。 | |
v-once | 只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过 |
特殊attribute
名称 | 类型 | 详细 |
---|---|---|
key | Number|String | key主要用在 Vue 的虚拟 DOM 算法,使用 key 时,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。 |
ref | String | ref 被用来给元素或子组件注册引用信息 |
is | String|Object | 用于动态组件且基于 DOM 内模板的限制来工作 |
slot | 用于标记往哪个具名插槽中插入子组件内容,已废弃! | |
slot-scope | 用于将元素或组件表示为作用域插槽,已废弃! | |
scope | 用于表示一个作为带作用域的插槽的 <template> 元素,已移除! |
内置的组件
名称 | 详细 |
---|---|
component | 渲染一个“元组件”为动态组件。依 is 的值,来决定哪个组件被渲染。 |
transition | <transition> 元素作为单个元素/组件的过渡效果。<transition> 只会把过渡效果应用到其包裹的内容上,而不会额外渲染 DOM 元素,也不会出现在可被检查的组件层级中。 |
transition-group | <transition-group> 元素作为多个元素/组件的过渡效果。<transition-group> 渲染一个真实的 DOM 元素。默认渲染 <span>,可以通过 tag attribute 配置哪个元素应该被渲染。 |
keep-alive | <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 <transition> 相似,<keep-alive> 是一个抽象组件:它自身不会渲染一个 DOM 元素,也不会出现在组件的父组件链中。 |
slot | <slot> 元素作为组件模板之中的内容分发插槽。<slot> 元素自身将被替换。 |
以上。
评论 抢沙发