惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
P
Privacy International News Feed
P
Proofpoint News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
C
CXSECURITY Database RSS Feed - CXSecurity.com
Know Your Adversary
Know Your Adversary
Security Latest
Security Latest
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Attack and Defense Labs
Attack and Defense Labs
NISL@THU
NISL@THU
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
GbyAI
GbyAI
N
News and Events Feed by Topic
N
News | PayPal Newsroom
Y
Y Combinator Blog
C
CERT Recently Published Vulnerability Notes
N
Netflix TechBlog - Medium
S
Security Affairs
Spread Privacy
Spread Privacy
罗磊的独立博客
腾讯CDC
MyScale Blog
MyScale Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 热门话题
The Cloudflare Blog
L
LangChain Blog
博客园_首页
H
Hacker News: Front Page
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
SecWiki News
SecWiki News
A
Arctic Wolf
爱范儿
爱范儿
Google Online Security Blog
Google Online Security Blog
T
Threat Research - Cisco Blogs
Hacker News - Newest:
Hacker News - Newest: "LLM"
有赞技术团队
有赞技术团队
The GitHub Blog
The GitHub Blog
Cyberwarzone
Cyberwarzone
博客园 - 叶小钗
V
Visual Studio Blog
V
V2EX
T
Tailwind CSS Blog
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
MongoDB | Blog
MongoDB | Blog
D
Docker

Mengke's blog - Mengke's coding journey

年轻不是健康的免死金牌 深圳工作机会,前端 2025 年终总结 Skill 不是 MCP 的替代品:我理解的渐进式披露与选型原则 独立开发者如何开具发票 香港银行卡开户完整指南(2025年9月最新) 招商银行储蓄卡微信动账提醒恢复方法 再谈 MCP - Model Context Protocol(MCP)详解和开发教程 Get Human-Readable "Time Ago" in TypeScript 以「asset-price-mcp」为例,从 0 开发 MCP Server Model Context Protocol (MCP) 快速开始 DeepSeek + Dify 搭建本地知识库 An elegant solution for implementing optional property types using TypeScript 2024 年终总结 Quickly Create a Fullscreen WebView with Autoplay Support for Testing 以数字开头的 ID 在 querySelector 中的处理 String casing utilities in JavaScript Check if a string is a valid color Simple Event-Emitter/PubSub pattern Find which process is running on a certain port and kill it Markdown Code block's basic and advanced syntaxes Common npm commands to use locally Pnpm aliases How to safely rename a case sensitive file/directory in a git repo? A custom hooks to use an async effect A custom hooks to use local storage state 🤩 Mengke'blog 上线的这一年 🗼 五月底去了一趟日本,记录一下我的游记和攻略 网站性能优化:如何高效预加载大型静态资源 闰年之约 - 2024年2月29日 A collection of some useful websites 2023 年终总结 WebGL 学习笔记(一)基础概念与实践 Android Webview <video> 标签去除默认播放按钮图 📷 纯前端也可以实现「用户无感知录屏」? Getting Spotify token to display now playing track on your website AVP - Web 端特效视频播放器 IndexedDB 基础入门 直接下载网易云音乐中歌曲MP3格式的方法 什么!一个项目给了8个字体包??? flex 布局中 start/end 和 flex-start/flex-end 的区别 深入 Pinia:从代码出发探索 Vue 状态管理的奥秘 Pinia 快速上手指南 Nest.js Typrorm 多对多关系如何创建 Strapi 快速入门 CentOS7 MySQL 数据库安装与卸载 Next.js 上手指南 Vue 数据响应式原理 deno 快速上手 - Hello World 案例 尝鲜 Vue 3.0 Combination API react-router-dom 路由基础教程 JavaScript 数组扁平化处理的方法总结
快速上手 Vue3
Mengke · 2020-11-04 · via Mengke's blog - Mengke's coding journey

Vue3.webp

Published on
/

8 mins read

/

––– views

Share:

1、Vue3的特点

  1. vue3中全部采用函数式写法,替换了原来类的写法。
  2. vue3源码全部采用ts编写,编码中实现了对ts更好的支持。
  3. vue3完全兼容vue2,在vue3中依然可以按照vue2的方式去写代码,而且两种写法可以同时存在。
  4. 组件中同时存在两种写法时,当setup返回值中定义的方法和methods中的方法同名时,会抛出错误。 定义的数据和data定义的数据字段相同时,会被data定义的字段覆盖
  5. vue3采用 proxy 的方式实现数据代理,只会代理第一层数据 避免了vue2中对data的深层递归,提升了组件渲染性能。

上例中,返回的state是一个 proxy 对象,默认只会对 data 进行代理 那么vue3是怎么实现深层数据劫持呢,例如我们要修改obj那么是怎么监听到obj的修改呢? 当我们要对深层对象obj进行修改时,会调用 state.dataget 方法,在 get 方法中会对 state.data 进行代理,劫持 state.data 中的属性, get 方法返回的不是 state.data 本身,而是被 proxy 代理过的对象,从而巧妙的实现了深层数据劫持,在用到该属性的时候一定会调用父级的 get 方法,这时候才会去劫持属性的 getset 方法。

2、setup函数

setup函数是vue3中所有api的入口和出口

vue3 中用 setup 函数整合了所有的 api,setup 函数只执行一次,在生命周期函数前执行,所以在 setup 函数中拿不到当前实例 this,不能用 this 来调用 vue2 写法中定义的方法。

vue3 中去掉了 data,使用 setup 的返回值来给模板绑定value return 的对象如果是常量,不会变成响应式数据。

this.$emitcontext.emit 方法来替代。

3、生命周期

生命周期函数,都变成了回调的形式,写在setup函数中 可以一次写多个相同的生命周期函数,按照注册顺序执行。

4、ref - 简单的响应式数据

  1. ref 可以将某个普通值包装成响应式数据,仅限于简单值,内部是将值包装成对象,再通过 defineProperty 来处理的。 通过 ref 包装的值,取值和设置值的时候,需用通过 value 来进行设置
  2. 可以用 ref 来获取组件的引用,替代 this.$refs 的写法。

5、reactive - 数据绑定

使用 reactive 来对复杂数据进行响应式处理,它的返回值是一个 proxy 对象,在 setup 函数中返回时,可以用 toRefs 对 proxy 对象进行结构,方便在 template 中使用。

通过 reactive 来创建响应式数据 data ,用 toRefs 来进行解构,在模板中直接使用 inputValtodoList

模板中绑定的方法也需要 在setup函数中定义,并返回,才能绑定到模板中,例如addTodo方法。

vue3 模板:一个 templage 可以有多个平级的标签(vue2中只能在template写一个子标签)

6、computed

计算属性,变成了函数写法,当依赖的值发生改变时会重新计算 computed 包装后的值,需要用 .value 去取值,template 中不需要使用 .value

7、watch

变成了函数写法,与vue2中用法相同。

8、watchEffect

响应式地跟踪函数中引用的响应式数据,当响应式数据改变时,会重新执行函数。

9、vue-router

组件中使用路由时用useRoute和useRouter。

10、vuex

使用 useStore 来获取 store 对象 从 vuex 中取值时,要注意必须使用 computed 进行包装,这样 vuex 中状态修改后才能在页面中响应。

11、用 jsx 来定义 vue 组件

vue3 中支持使用 jsx 语法来定义 vue 组件。

12、插槽修改