vue3

vue3 · 浏览次数 : 33

小编点评

**Vue.js 3.0 版本简介** **性能提升** - 性能提升 41%,初次渲染快 55% - 更新渲染快 133%,内存减少 54% - 使用 Proxy 代替defineProperty 实现响应式重写虚拟 DOM - 拥抱 TypeScript Vue3 支持 TypeScript4 **新特性** - Composition API setup配置 ref、reactivewatch与 watchEffectprovide与 inject 新建组件 Fragment TeleportSuspense **重要提示** - 声明所有 `data` 选项为函数 **安装和启动** - 使用 `vue-cli` 创建 Vue3 项目 - 进入工程目录 `cd vue3_test-vite` - 安装依赖 `npm install` - 运行 `npm run dev` **文件目录分析** - `main.js`:引入 `Vue`,创建应用实例并挂载 `App.vue` - `App.vue`:定义 Vue 组件,包含模板和事件处理程序 **示例代码** ```vue ``` **总结** Vue.js 3.0 版本带来性能提升和新的特性,使其成为构建Vue3应用程序的新选择。

正文

一、简介

2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王)

github.com/vuejs/vue-n…

1.性能的提升

  • 打包大小减少41%
  • 初次渲染快55%, 更新渲染快133%
  • 内存减少54%

2.源码的升级

  • 使用Proxy代替defineProperty实现响应式
  • 重写虚拟DOM的实现和Tree-Shaking

3.拥抱TypeScript

  • Vue3可以更好的支持TypeScript

4.新的特性

  1. Composition API(组合API)
    • setup配置
    • refreactive
    • watchwatchEffect
    • provideinject
  2. 新的内置组件
    • Fragment
    • Teleport
    • Suspense
  3. 其他改变
    • 新的生命周期钩子
    • data 选项应始终被声明为一个函数
    • 移除keyCode支持作为 v-on 的修饰符

二、创建一个Vue项目

1. 使用 vue-cli 创建

官方文档:cli.vuejs.org/zh/guide/cr…

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

2. 使用 vite 创建

官方文档:v3.cn.vuejs.org/guide/insta…

vite官网:vitejs.cn

  • 什么是vite?—— 是Vue团队打造的新一代前端构建工具。
  • 优势如下:
    • 开发环境中,无需打包操作,可快速的冷启动。
    • 轻量快速的热重载(HMR)。
    • 真正的按需编译,不再等待整个应用编译完成。
  • 传统构建 与 vite构建对比图

在这里插入图片描述

传统构建模式,是将所有资源都打包好,再上线

在这里插入图片描述 而Vite是按需加载

接下来我们就用Vite来创建一个Vue3的项目

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

三、分析文件目录

main.js

Vue2项目的main.js

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

我们再来看看Vue3项目中的main.js

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

分析一下

// 引入的不再是Vue构造函数了,引入的是一个名为createApp的工厂函数
import { createApp } from 'vue'
import App from './App.vue'

// 创建应用实例对象——app(类似于之前Vue2中的vm,但app比vm更“轻”)
const app = createApp(App)
console.log(app)
// 挂载
app.mount('#app')

App.vue

我们再来看看组件

template标签里可以没有根标签了

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

与vue3相似的内容:

vue3

一、简介 2020年9月18日,Vue.js发布3.0版本,代号:One Piece(海贼王) github.com/vuejs/vue-n… 1.性能的提升 打包大小减少41% 初次渲染快55%, 更新渲染快133% 内存减少54% 2.源码的升级 使用Proxy代替defineProperty实

Vue3学习(二十四)- 文档页面功能开发

写在前面 这部分真的感觉超级难,其实也不能说难,主要是真的想不到这个思路应该这么做,或者说他好厉害,他怎么知道该这么设计实现。 说下难点吧,我觉得后天逻辑还好,主要是前端部分真的需要点花点时间来思考,比如布局、交互设计的实现等等。 文档页面功能开发 1、任务拆解 增加文档页面,首页点击电子书时,跳转

vue3编译优化之“静态提升”

前言 在上一篇 vue3早已具备抛弃虚拟DOM的能力了文章中讲了对于动态节点,vue做的优化是将这些动态节点收集起来,然后当响应式变量修改后进行靶向更新。那么vue对静态节点有没有做什么优化呢?答案是:当然有,对于静态节点会进行“静态提升”。这篇文章我们来看看vue是如何进行静态提升的。 什么是静态

基于Vue3水印组件封装:防篡改守护!

基于Vue 3的全新水印通用组件封装。这款组件不仅功能强大,而且易于集成,能够轻松为您在网页任何位置添加自定义水印,有效防止内容被篡改或盗用。

vue3 | isRef、unref、toRef、toRefs

isRef 检查某个值是否是ref。是返回true,否则返回false。 const num = ref(10); const num1 = 20; const num2 = reactive({ data: 30 }); console.log(isRef(num)); //true consol

vue3 | slots

一、什么是插槽 插槽就是子组件中的提供给父组件使用的一个占位符,用 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的标签,父组件填充的内容称为插槽内容。 子组件不提供插槽时,父组件填充失效 父组件无填充

vue3 | shallowReactive 、shallowRef、triggerRef

shallowReactive 使用 reactive 声明的变量为递归监听,使用 shallowReactive 声明的变量为非递归监听(通俗的讲就是 reactive 创建的对象将会被 vue 内部进行递归监听,可以监听到对象中的对象是否发生了改变从而更新视图,而 shallowReactive

vue3 | readonly、shallowReadonly

readonly 接受一个对象(不管是响应式还是普通的)或者是一个ref,返回的是一个原值的只读代理。 {{ data }}<

vue3 | mitt的基本使用

# 一、安装 npm安装 ``` npm i mitt ``` pnpm安装 ``` pnpm i mitt ``` yarn安装 ``` yarn add mitt ``` # 二、使用 ## (一)、当前组件内使用 ```javascript import mitt from 'mitt' //

vue3 | defineExpose的使用

简介 使用