-
声明式渲染:Vue 基于标准 HTML 拓展了一套模板语法,使得我们可以声明式地描述最终输出的 HTML 和 JavaScript 状态之间的关系。
-
响应性:Vue 会自动跟踪 JavaScript 状态变化并在改变发生时响应式地更新 DOM。
-
Attribute 绑定v-bind
- 只支持表达式+调用函数,不支持语句?
- 受限全局访问,Math,Date,不能访问window上的变量
- 如果要添加全局属性,在app.config.globalProperties上添加
-
指令Directives
- v-bind,:,动态参数v-bind:[attributeName]
- v-on,@,动态参数v-on:[eventName]
-
修饰符Modifiers
- .prevent 修饰符会告知 v-on 指令对触发的事件调用 event.preventDefault()
- methods下的方法是有状态的
-
计算属性可对响应式依赖缓存,通过setter可写,
- 计算函数不应有副作用
- 避免直接修改计算属性值
-
class可用对象或数组、表达式动态绑定,组件上class attribute会被传递到子组件
-
v-for 里可以使用范围值,n in 10取值为1...10
-
watch 默认是浅层的:被侦听的属性,仅在被赋新值时,才会触发回调函数——而嵌套属性的变化不会触发。如果想侦听所有嵌套的变更,需要深层侦听器handler。只在必要时才使用它,并且要留意性能。
-
watch 默认是懒执行的:仅当数据源变化时,才会执行回调。用immediate: true 选项强制回调函数立即执行
-
子组件可以通过ref和expose暴露数据和函数
-
“透传 attribute”指的是传递给一个组件,却没有被该组件声明为 props 或 emits 的 attribute 或者 v-on 事件监听器。最常见的例子就是 class、style 和 id。这些透传进来的 attribute 可以在模板的表达式中直接用 $attrs 访问到。
-
如果你不想要一个组件自动地继承 attribute,你可以在组件选项中设置 inheritAttrs: false。
-
transition与transitiongroup封装了基础的动画特性,拿来就用
-
keepalive可在多个组件间动态切换时缓存被移除的组件实例
-
Teleport和React中的Portal类似,将模板放到外部DOM节点,比如全局模态框
-
响应性是一种可以使我们声明式地处理变化的编程范式