vue3的新特性

一、Composition API(组合式API)

vue2 是基于Object.defineProperty的getter/setter作的数据监听,而vue3 中则改为了ES6的Proxy机制。
1、提升性能,Vue2是通过层层递归的方式对数据进行劫持,并且数据劫持一开始就要进行层层递归(一次性递归),如果对象的路径非常深将会非常影响性能;而Proxy可以在用到数据的时候再进行对下一层属性的劫持。
2、Proxy可以实现对整个对象的劫持,而Object.defineProperty()只能实现对对象的属性进行劫持。所以对于对象上的方法或者新增、删除的属性则无能为力。
3、Proxy 支持对 Map、Set、WeakMap 和 WeakSet类型的代理;同时作为新标准将会受到浏览器厂商重点持续的性能优化。

1、setup函数

image.png

这些函数接受一个回调函数,当钩子被组件调用时将会被执行:

export default {
  setup() {
    // mounted
    onMounted(() => {
      console.log('Component is mounted!')
    })
  }
}

2、生命钩子函数

3、提供/注入

二、Teleport

三、片段

Vue 3 现在正式支持了多根节点的组件,也就是片段!

1、2.x 语法

在 2.x 中,由于不支持多根节点组件,当开发者意外创建一个时会发出警告。为了修复这个问题,许多组件被包裹在一个 <div> 中。

<!-- Layout.vue -->
<template>
  <div>
    <header>...</header>
    <main>...</main>
    <footer>...</footer>
  </div>
</template>

2、3.x 语法

在 3.x 中,组件可以包含多个根节点!但是,这要求开发者显式定义 attribute 应该分布在哪里。

<!-- Layout.vue -->
<template>
  <header>...</header>
  <main v-bind="$attrs">...</main>
  <footer>...</footer>
</template>

四、触发组件选项

五、createRenderer API来自@vue/runtime-core

六、单文件组件组合式API语法糖(<script setup>)

七、单文件组件状态驱动的css变量(<style vars>)

八、单文件组件<style scoped>现在可以包含全局规则或只针对插槽内容的规则

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容