Skip to content

Vue

Vue3

指令

插值语法

  • mustache{ {variable} },最基础的数据绑定方式,用于将数据动态渲染为纯文本内容。

文本渲染

  • v-textdataProperty,用于将数据作为纯文本动态渲染到元素中。
  • v-htmldataProperty,用于将数据作为原始 HTML 解析并渲染到元素中。
  • v-pre,用于跳过指定元素及其子元素的编译过程,直接保留原始内容。

绑定

  • v-bind表达式,用于动态绑定HTML属性、组件prop或DOM属性到Vue实例的数据。
  • v-on表达式,用于监听 DOM 事件或自定义事件,并执行对应的 JavaScript 代码或方法。
  • v-model表达式,用于在表单输入元素或自定义组件上实现双向数据绑定,是 v-bind 和 v-on 的语法糖。

条件渲染

  • v-show布尔表达式,用于通过切换 CSS 的 display 属性来控制元素的显示与隐藏。
  • v-if、v-else、v-else-if条件表达式,用于实现条件渲染,根据表达式的真假动态控制元素的渲染或销毁。元素会从DOM中移除。

列表渲染

  • v-for表达式,用于基于数据源(数组、对象、数值范围)循环渲染多个元素或组件。
  • key唯一标识,用于标识虚拟 DOM 节点身份的特殊属性,它在 Vue 的响应式更新机制中起到优化渲染性能维护组件状态的关键作用。

其他

  • v-once,用于标记元素或组件仅渲染一次,后续数据变化时不再更新。
  • v-cloak,用于在 Vue 实例完成编译前隐藏未编译的模板内容,避免页面加载时出现原始模板符号({ { } })的短暂闪烁。必需配合 CSS 样式,CSS 必须全局生效

全局API

应用实例

  • createApp()(rootComponent, rootProps?),用于创建一个 Vue 应用实例,是 Vue 3 应用开发的入口函数。
  • app.use()(plugin,...options?),用于为 Vue 应用安装插件(如 Vue Router、Pinia等)或自定义功能扩展。
  • app.mount()(containerSelector | element),将 Vue 应用实例挂载到 DOM 元素。
  • app.component()(name,component?),用于全局注册或获取组件。
  • app.directive()(name, directive?),用于注册或获取全局自定义指令。
  • app.mixin()(mixin),用来全局注册一个混入对象。会将该对象的所有组件选项(data,methods,...)合并到每个组件中。

通用

  • nextTick()(callback?),通常用来在下一次 DOM 更新刷新后执行某些操作。

组合式API

setup

  • setup()(props?, context?),是组件逻辑的入口点,用于替代 Vue2 的 data、methods、computed 等选项。

响应式

  • ref()<T>(initialValue:T),用来定义一个响应式的、可更改的 ref 对象,该对象可以通过.value访问其内部值。
  • reactive()<T extends object>(initialObject:T),用于创建深度响应式的对象或数组。底层通过Proxy实现。
  • computed()<T>(getter | options),用于声明基于响应式依赖的计算属性,适合处理需要动态计算的逻辑,且结果会被缓存。
  • watch()<T>(source,callback,options?),用于监听响应式数据变化并执行回调函数,适合处理异步操作、复杂逻辑或需要观察特定数据变动的场景。
  • watchEffect()(effect,options?),会立即执行并跟踪函数内部访问的所有响应式数据。任何响应式数据发生变化时,回调函数会重新执行。
  • readonly()<T extends object>(object:T),用于将一个响应式对象或普通对象变为只读对象,防止其被修改。
  • shallowReadonly()(target),用于创建一个浅层只读代理对象,其顶层属性为只读,但嵌套对象仍保持可变。

生命周期钩子

  • onBeforeMount()(callback),注册一个钩子,在组件被挂载之前被调用。
  • onMounted()(callback),注册一个钩子,在组件挂载完成后执行。
  • onBeforeUpdate()(callback),注册一个钩子,在组件即将因为响应式状态变更而更新其 DOM 树之前调用。
  • onUpdated()(callback),注册一个钩子,在组件因为响应式状态变更而更新其 DOM 树之后调用。
  • onBeforeUnmount()(callback),注册一个钩子,在组件实例被卸载之前调用。
  • onUnmounted()(callback),注册一个钩子,在组件实例被卸载之后调用。
  • onActivated()(callback),注册一个钩子,若组件实例是<KeepAlive>缓存树的一部分,当组件被插入到DOM中时调用。
  • onDeactivated()(callback),注册一个钩子,若组件实例是<KeepAlive>缓存树的一部分,当组件从DOM中被移除时调用。

依赖注入

  • provide()<T>(key,value),提供一个值,可以被后代组件注入。
  • inject()<T>(key,defaultValue?),注入一个由祖先组件或整个应用通过app.provide()提供的值。

script setup

  • <script setup>,是组合式 API 的编译时语法糖,旨在简化组件逻辑的编写,提高代码的可读性和开发效率。
  • defineProps()(propsDefinition),用于在script setup中声明组件的props。
  • defineEmits()(emitsDefinition),在script setup中声明组件可触发的事件。
  • defineExpose()(exposed),在script setup中显式暴露组件实例的公共属性。
  • defineSlots()()@vue3.3,是 script setup 中引入的类型声明函数,用于显式定义组件的插槽类型,为 TypeScript 提供类型检查和智能提示支持。它仅在类型推导阶段生效,不会产生运行时逻辑。
  • useSlots()(),用于在 setup() 函数中访问组件的 插槽内容
  • useAttrs()(),用于在 setup() 或 script setup 中访问组件接收的未声明为 props 的属性,如 class、style、自定义属性和事件监听器。这些属性默认会被自动绑定到组件的根元素,除非设置 inheritAttrs: false,通过 useAttrs() 可以手动控制它们的传递。

组件

基本组件

  • <Transition>mode? type? duration? appear?,用于在元素或组件的挂载卸载DOM 时添加动画效果。它通过自动应用 CSS 类名或 JavaScript 钩子函数实现平滑过渡。
  • <TransitionGroup>tag? move-class? css? ,用于在列表元素的进入、离开和位置变化时应用动画效果,特别适用于动态列表的平滑过渡。
  • <KeepAlive>include? exclude? max?,用于缓存动态组件的实例,避免重复渲染,从而优化性能。
  • <Teleport>to disabled?,用于将子组件或 DOM 元素 “传送”到 DOM 中的其他位置,常用于处理模态框Modal、通知Toast、弹出菜单等需要脱离父容器布局的场景。
  • <Suspense>(),用于管理异步依赖如异步组件或异步数据加载的组件,允许在等待异步操作完成时展示备用内容如加载状态。

特殊元素

  • <component>:is key?,用于动态渲染组件或 HTML元素,通过 :is 属性绑定目标类型。常用于实现标签页切换、动态组件加载等场景。
  • isstring | Component,用于 动态组件解决 HTML 原生元素的解析限制
  • <slot>name?,用于实现组件内容分发(插槽),在组合式API中,它允许父组件向子组件传递模板片段,并支持动态内容和作用域数据传递。
  • <template>,用于定义组件模板的核心标签。
  • refref变量,用于获取 DOM 元素或子组件实例引用的特殊属性。

TS

  • defineComponent()(options),在定义Vue组件时提供类型推导的辅助函数
  • PropType<T><TS类型>,用于 定义复杂props类型 的类型工具,尤其在结合TS时,它可以明确指定 props 的具体结构或构造函数类型。

SSR

  • createSSRApp()(rootComponent,rootProps?),用于 服务端渲染 (SSR) 的应用程序创建函数,它在组合式API中的使用与客户端渲染CSR类似,但需要遵循特定的 SSR 配置和生命周期规则。
  • renderToString()(app),用于SSR的核心函数,它将 Vue 应用实例渲染为 HTML 字符串。在组合式API中,需结合 createSSRApp() 和 SSR 生命周期钩子使用。
  • useId()(),用于为无障碍属性或表单元素生成每个应用内唯一的 ID。

Vue2

指令

插值语法

  • mustache{ {variable} },最基础的数据绑定方式,用于将数据动态渲染为纯文本内容。

文本渲染

  • v-textdataProperty,用于将数据作为纯文本动态渲染到元素中。
  • v-htmldataProperty,用于将数据作为原始 HTML 解析并渲染到元素中。
  • v-pre,用于跳过指定元素及其子元素的编译过程,直接保留原始内容。

绑定

  • v-bind表达式,用于动态绑定HTML属性、组件prop或DOM属性到Vue实例的数据。
  • v-on表达式,用于监听 DOM 事件或自定义事件,并执行对应的 JavaScript 代码或方法。
  • v-model表达式,用于在表单输入元素或自定义组件上实现双向数据绑定,是 v-bind 和 v-on 的语法糖。

条件渲染

  • v-show布尔表达式,用于通过切换 CSS 的 display 属性来控制元素的显示与隐藏。
  • v-if、v-else、v-else-if条件表达式,用于实现条件渲染,根据表达式的真假动态控制元素的渲染或销毁。元素会从DOM中移除。

列表渲染

  • v-for表达式,用于基于数据源(数组、对象、数值范围)循环渲染多个元素或组件。
  • key唯一标识,用于标识虚拟 DOM 节点身份的特殊属性,它在 Vue 的响应式更新机制中起到优化渲染性能维护组件状态的关键作用。

其他

  • v-once,用于标记元素或组件仅渲染一次,后续数据变化时不再更新。
  • v-cloak,用于在 Vue 实例完成编译前隐藏未编译的模板内容,避免页面加载时出现原始模板符号({ { } })的短暂闪烁。必需配合 CSS 样式,CSS 必须全局生效

全局API

应用实例

  • createApp()(rootComponent, rootProps?),用于创建一个 Vue 应用实例,是 Vue 3 应用开发的入口函数。
  • app.use()(plugin,...options?),用于为 Vue 应用安装插件(如 Vue Router、Pinia等)或自定义功能扩展。
  • app.mount()(containerSelector | element),将 Vue 应用实例挂载到 DOM 元素。
  • app.component()(name,component?),用于全局注册或获取组件。
  • app.directive()(name, directive?),用于注册或获取全局自定义指令。
  • app.mixin()(mixin),用来全局注册一个混入对象。会将该对象的所有组件选项(data,methods,...)合并到每个组件中。

通用

  • nextTick()(callback?),通常用来在下一次 DOM 更新刷新后执行某些操作。

选项式API

渲染选项

  • templateHTML字符串 | ID选择器,定义组件结构的地方,通常用于描述组件的 HTML 结构。使用 Vue 的模板语法,可以让我们通过声明式的方式构建 UI,结合数据、指令和事件来动态地渲染内容。
  • render(h),用于直接控制虚拟DOM生成的核心方法,常用于替代模板语法来实现更灵活的渲染逻辑。
  • h()(tag, props?, children?),用于创建虚拟DOM节点VNode。

状态选项

  • data() => ({}),返回组件响应式数据的对象。
  • propsstring[] | Object,声明从父组件接收的属性。可以是一个数组、一个对象,或者一个函数。
  • computed{ Getter|{Getter,Setter?},...},用于声明依赖于其他数据的计算属性。
  • methods{Record<string,Function>},用于定义组件的方法,通常用于事件处理、逻辑操作或触发副作用(如 API 请求)。所有方法会被混入组件实例,可通过 this 直接调用。
  • watch{attr,...},监听响应式数据的变化,并在变化时执行自定义逻辑,如异步操作、复杂逻辑、副作用。
  • emits数组形式|对象形式,显式声明组件可以触发的自定义事件,用于子组件向父组件通信。
  • exposestring[],用于显式声明组件对外暴露的公共属性或方法,通过模板引用访问时,只能访问暴露的内容。

生命周期钩子

  • beforeCreate()=>void,注册一个钩子,在Vue实例初始化之后立即调用。
  • created()=>void,注册一个钩子,在Vue实例完成数据观测(data、props初始化)后,但尚未挂载DOM时调用。
  • beforeMount(),类似 onBeforeMount(),注册一个钩子,在组件被挂载之前被调用。
  • mounted(),类似 onMounted(),注册一个钩子,在组件挂载完成后执行。
  • beforeUpdate(),类似 onBeforeUpdate(),注册一个钩子,在组件即将因为响应式状态变更而更新其 DOM 树之前调用。
  • updated(),类似 onUpdated(),注册一个钩子,在组件因为响应式状态变更而更新其 DOM 树之后调用。
  • beforeUnmount(),类似 onBeforeUnmount(),注册一个钩子,在组件实例被卸载之前调用。
  • unmounted(),类似 onUnmounted(),注册一个钩子,在组件实例被卸载之后调用。
  • activated(),类似 onActivated(),注册一个钩子,若组件实例是<KeepAlive>缓存树的一部分,当组件被插入到DOM中时调用。
  • deactivated(),类似 onDeactivated(),注册一个钩子,若组件实例是<KeepAlive>缓存树的一部分,当组件从DOM中被移除时调用。

组合选项

  • provide(),类似 provide(),提供一个值,可以被后代组件注入。
  • inject(),类似 inject(),注入一个由祖先组件或整个应用通过app.provide()提供的值。
  • mixins(),类似 app.mixin(),用来全局注册一个混入对象。会将该对象的所有组件选项(data,methods,...)合并到每个组件中。
  • extendscpn,用于组件继承的选项,允许一个组件基于另一个组件进行扩展,复用其选项并覆盖或增强特定逻辑。

其他

  • namestring,用于显式声明组件的名称。主要用于调试、递归组件、动态组件、缓存控制。
  • components{name: cpn,...},用于在当前组件中局部注册子组件,使得这些子组件可以在当前组件的模板中使用。
  • derectives(),类似 app.directive(),用于注册或获取全局自定义指令。

组件实例

  • $data(),类似 data,返回组件响应式数据的对象。返回组件响应式数据的对象。
  • $props(),类似 props,声明从父组件接收的属性。可以是一个数组、一个对象,或者一个函数。
  • $el,Vue实例的内置属性,指向该实例关联的根DOM元素。在组件中对应组件模板的根元素
  • $options,Vue实例的内置属性,用于访问组件定义的 原始选项对象
  • $slotsslot,Vue实例的内置属性,用于访问组件接收的 插槽内容
  • $refs,Vue 实例的内置属性,用于直接访问模板中通过 ref 属性标记的 DOM元素子组件实例
  • $parent,Vue实例的内置属性,用于直接访问当前组件的 父组件实例
  • $watch()(),类似 watch,监听响应式数据的变化,并在变化时执行自定义逻辑,如异步操作、复杂逻辑、副作用。
  • $emit()(),类似 emits,显式声明组件可以触发的自定义事件,用于子组件向父组件通信。
  • $forceUpdate()(),Vue实例的内置方法,用于 强制触发当前组件及其子组件的重新渲染的应急手段
  • $nextTick()(),类似 nextTick(),通常用来在下一次 DOM 更新刷新后执行某些操作。

mitt

  • mitt()(all?),用于创建一个事件总线实例,支持事件的监听、触发和移除。
  • emitter.all{eventName: Handler[]},用于存储所有已注册的事件类型及其对应的事件处理器列表,用于调试或高级操作。
  • emitter.on()(type,handler),用于 监听指定类型的事件,当该事件被触发时,执行绑定的处理函数。支持监听具体事件类型或使用通配符 * 监听所有事件。
  • emitter.off()(type,handler?),用于 移除指定事件类型的监听器,支持移除单个处理函数或清空某事件类型的所有监听器,避免内存泄。
  • emitter.emit()(type,data?),用于 触发指定类型的事件,并传递相关数据给所有监听该事件的处理器。

Vue Router

HTML5

History

  • history.lengthnumber只读,返回一个表示会话历史中的条目数量的整数,包括当前加载的页面。
  • history.stateState,用于访问/操作浏览器历史记录中的状态对象。主要用于SPA中的导航操作。
  • history.back()(),用于让浏览器回到历史记录中的前一个页面。可理解为模拟用户点击浏览器的“后退”按钮。
  • history.forward()(),用于让浏览器前进到历史记录中的下一个页面。可理解为模拟用户点击浏览器的“前进”按钮。
  • history.go()(delta),用于在浏览器历史记录栈中进行前进或后退操作。
  • history.pushState()(state,title?,url?),用于将一个新的历史记录条目添加到浏览器的历史记录栈中,而不会刷新页面。
  • history.replaceState()(state,title?,url?),用于替换当前浏览器历史记录中的条目。
  • onpopstate(event)=>void,是一个浏览器的事件监听器,用于监听浏览器历史记录的变化。

Vuex

Pinia