官方文档: https://v3.cn.vuejs.org/guide/composition-api-introduction.html

1.Vue3简介

  • 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)
  • 耗时2年多、2600+次提交30+个RFC600+次PR99位贡献者
  • github上的tags地址:https://github.com/vuejs/vue-next/releases/tag/v3.0.0

    2.Vue3带来了什么

    1.性能的提升

  • 打包大小减少41%

  • 初次渲染快55%, 更新渲染快133%
  • 内存减少54%……

    2.源码的升级

    :::danger

  • 使用Proxy代替defineProperty实现响应式

  • 重写虚拟DOM的实现和Tree-Shaking…… :::

    3.拥抱TypeScript

  • Vue3可以更好的支持TypeScript

    4.新的特性

    4.1Composition API(组合API)

    :::danger

  • setup配置

  • ref与reactive
  • watch与watchEffect
  • provide与inject :::

    4.2 新的内置组件

    :::warning

  • Fragment

  • Teleport
  • Suspense :::

    4.3其他改变

    • 新的生命周期钩子
    • data 选项应始终被声明为一个函数
    • 移除keyCode支持作为 v-on 的修饰符

4.4 移除的一些语法

  • 移除了$on方法 (eventBus现有实现模式不再支持,可以使用三方插件替代)
  • 移除过滤器选项 (插值表达式里不能再使用过滤器filter, 可以使用methods替代)
  • 移除 .sync语法(v-bind时不能使用.sync修饰符了,现在它v-model语法合并了)

    3. 创建vue3工程

    3.1 使用vue-cli创建

    官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create :::success

    查看@vue/cli版本,确保@vue/cli版本在4.5.0以上
    vue —version
    ## 安装或者升级你的@vue/cli
    npm install -g @vue/cli
    ## 创建
    vue create vue_test
    ## 启动
    cd vue_test
    npm run serve

    :::

    3.2 使用vite创建

    官方文档:https://v3.cn.vuejs.org/guide/installation.html#vite
    vite官网:https://vitejs.cn
    什么是vite?—— 新一代前端构建工具。

  • 优势如下:

    • 开发环境中,无需打包操作,可快速的冷启动。
    • 轻量快速的热重载(HMR)。
    • 真正的按需编译,不再等待整个应用编译完成。
  • 传统构建 与 vite构建对比图 :::success

    创建工程
    npm init vite-app
    ## 进入工程目录
    cd
    ## 安装依赖
    npm install
    ## 运行
    npm run dev

    :::

    4. 分析项目结构

    4.1 vue2项目中的main.js

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. Vue.config.productionTip = false;
    4. const vm = new Vue({
    5. render: h => h(App),
    6. }).$mount('#app')
    7. console.log(vm)
    看看vm是什么 ```javascript const vm = new Vue({ render: h => h(App), })

console.log(vm)

vm.$mount(‘#app’)

  1. ![](https://cdn.nlark.com/yuque/0/2022/webp/27402074/1658651797947-0a9303b4-2ba0-4262-93a7-c685b1f6ce97.webp#clientId=u73468f13-cc31-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ub575035e&margin=%5Bobject%20Object%5D&originHeight=759&originWidth=927&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=udbc6a536-00d8-4e5a-896e-ab5b37d4bf8&title=)
  2. <a name="x91vV"></a>
  3. ## 4.2 看看vue3项目中的main.js
  4. ```javascript
  5. import {createApp} from 'vue'
  6. import App from './App.vue'
  7. createApp(App).mount('#app')

我们来分析一下

  1. //引入的不再是Vue构造函数, 引入的是一个名为createApp的工厂函数
  2. import {createApp} from 'vue'
  3. import App from './App.vue'
  4. //创建应用实例对象——app(类似于之前vue2中的vm, 但是appv比vm更'轻')
  5. const vm = createApp(App)
  6. console.log(vm)
  7. //挂载
  8. vm.mount('#app')

vue3 main.js中的vm到底是啥?
1. 初识Vue3 - 图1
vue3引入得不再是Vue构造函数了, 而是引入一个名为createApp的工厂函数
工厂函数和构造函数的区别: 工厂函数不需要实例化,一般首字母无需大写。

4.3 app中的变化

template中可以没有跟标签了

  1. <template>
  2. <!-- Vue3组件中的模板结构可以没有根标签 -->
  3. <img alt="Vue logo" src="./assets/logo.png">
  4. <HelloWorld msg="Welcome to Your Vue.js App"/>
  5. </template>

5. Composition API

在Vue2中,我们使用的是Options API ,配置项式的API,我们要创建一个Vue实例,然后在里面传入一个配置对象,里面要写data、methods、watch等的东西,而Vue3提出了全新的 Composition API,组合式API,我们不用直接创建Vue实例,而是创建一个app,然后按需引入需要的API,来进行使用…

5.1 Options API 存在的问题

使用传统Options API(配置式API)中,新增或者修改一个需求,就需要分别在data,methods,computed里修改 .
image.png
优点:简单,好上手,各司其职
缺点: 代码零散,不方便功能复用

5.2 Composition API 的优势

我们可以更加优雅的组织我们的代码,函数。让相关功能的代码更加有序的组织在一起。
image.png
优点:功能代码组合维护