coderwhy_Vue3+TypeScript

news/2025/3/12 13:25:09/文章来源:https://www.cnblogs.com/KooTeam/p/18636851

【公开课】coderwhy_Vue3+TypeScript.mp4

Vue3+TypeScript
王红元 coderwhy

ke.qq.com/course/3453141?tuin 1635c7de

《TypeScript数据结构与算法》《React技术栈权威指南》作者腾讯AI高校训练营多所985、211名牌大学特聘讲师。丰富的软件开发和教学经验,带领团队开发出众多公司大型项目和软件系统。
全面负责国内知名视频直播软件<新浪秀场>项目架构和各端的设计和开发。
澳大利亚《智慧养老系统》研发负责人、CTO。

口找后端的工作:优先推荐Java、其次推荐Go、再次推荐Node(JavaScript),可能不推荐PHP、C#;

口找前端的工作:优先推荐JavaScript(TypeScript)、其次Flutter、再次Android(Java、Kotlin)、iOS(OC、Swift);

也有很多的其他方向:游戏开发、人工智能、算法工程师等等;

带领团队开发欧洲社交软件得心App。

codenwhy Vue3带来的变化(源码)在2020年的9月19日,万众期待的Vue3终于发布了正式版,命名为“One Piece”。
口它也带来了很多新的特性:更好的性能、更小的包体积、更好的TypeScript集成、更优秀的API设计。
源码通过monorepo的形式来管理源代码:
□Mono:单个
Repo:repository仓库
主要是将许多项目的代码存储在同一个repository中;这样做的目的是多个包本身相互独立,可以有自己的功能逻辑、单元测试等,同时又在同一个仓库下方便管王而且模块划分的更加清晰,可维护性、可扩展性更强;源码使用TypeScript来进行重写:
口在Vue2.x的时候,Vue使用Flow来进行类型检测;口在Vue3.x的时候,Vue的源码全部使用TypeScript来进行重构,并且Vue本身对TypeScript支持也更好了;

coderwhy Vue3带来的变化(性能)使用Proxy进行数据劫持
口在Vue2.x的时候,Vue3是使用Object.defineProperty来劫持数据的getter和setter方法的;口这种方式一致存在一个缺陷就是当给对象添加或者删除属性时,是无法劫持和监听的;所以在Vue2.x的时候,不得不提供一些特殊的API,比如$set或$delete,事实上都是一些hack方法,也增加了开发者学习新的API的成本;而在Vue3.x开始,Vue使用Proxy来实现数据的劫持,这个API的用法和相关的原理我也会在后续讲到;删除了一些不必要的API:口移除了实例上的$on,$off 和$once;口移除了一些特性:如filter、内联模板等;

coderwhy Vue3带来的变化(新的API)由Options API到Composition API:口在Vue2.x的时候,我们会通过Options API来描述组件对象;Options API包括data、props、methods、computed、生命周期等等这些选项;存在比较大的问题是多个逻辑可能是在不同的地方:
比如created中会使用某一个method来修改data的数据,代码的内聚性非常差;Composition API可以将 相关联的代码 放到同一处进行处理,而不需要在多个Options之间寻找;Hooks函数增加代码的复用性:
口在Vue2.x的时候,我们通常通过mixins在多个组件之间共享逻辑;口但是有一个很大的缺陷就是mixins也是由一大堆的Options组成的,并且多个mixins会存在命名冲突的问题;口在Vue3.x中,我们可以通过Hook函数,来将一部分独立的逻辑抽取出去,并且它们还可以做到是响应式的;口具体的好处,会在后续的课程中演练和讲解(包括原理);

coderwhy JavaScript是一门优秀的语言吗?
JavaScript是一门优秀的编程语言吗?
口每个人可能观点并不完全一致,但是从很多角度来看,JavaScript是一门非常优秀的编程语言。
而且,可以说在很长一段时间内这个语言不会被代替,并且会在更多的领域被大家广泛使用。
著名的Atwood定律:
Stack Overflow的创立者之一的 Jeff Atwood 在2007年提出了著名的 Atwood定律。
any application that can be written in JavaScript,will eventually be written in JavaScript.
任何可以使用JavaScript来实现的应用都最终都会使用JavaScript实现。
口其实我们已经看到了,至少目前JavaScript在浏览器端依然无可替代,并且在服务端(Nodejs)也在备广泛的应用。
口甚至在桌面端(Electron)、移动端(React Native、Weex);所以,从很多的角度都能看出来JavaScript是一门非常优秀的编程语言。

coderwhy JavaScript存在缺陷吗?
优秀的JavaScript没有缺点吗?
口其实上由于各种历史因素,JavaScript语言本身存在很多的缺点;口比如ESS以及之前的使用的var关键字关于作用域的问题;口比如最初JavaScript设计的数组类型并不是连续的内存空间;比如直到今天JavaScript也没有加入类型检测这一机制;JavaScript正在慢慢变好
口不可否认的是,JavaScript正在慢慢变得越来越好,无论是从底层设计还是应用层面。
口ES6、7、8等的推出,每次都会让这门语言更加现代、更加安全、更加方便。
口但是知道今天,JavaScript在类型检测上依然是毫无进展(为什么类型检测如此重要,我后面会聊到)。

coderwhy前端开发人员的类型缺失?为什么一定要有类型检测呢?
口首先你需要知道,编程开发中我们有一个共识:错误出现的越早越好。
口能在写代码的时候发现错误,就不要在代码编译时再发现;能在代码编译期间发现错误,就不要在代码运行期间再发现;口能在开发阶段发现错误,就不要在测试期间发现错误,能在测试期间发现错误,就不要在上线后发现错误。

coderwhy TypeScript带来的类型思维
在之后的JavaScript社区中出现了一系列的类型约束方案:
12014年,Facebook推出了flow来对JavaScript进行类型检查;同年,Microsoft微软也推出了TypeScript1.0版本;他们都致力于为JavaScript提供类型检查;而在所有的方案中,无疑TypeScript是最优秀的,也是目前使用最广泛的:
Vue3.x已经全线转向TypeScript,几乎所有的代码都使用TypeScript进行了重构;而Angular在很早期就使用TypeScript进行了项目重构,并且项目也需要使用TypeScript来进行开发;包括React使用最多的组件库Ant Design也是全面使用的TypeScript;目前很多的公司项目都是使用Vue+TypeScript、React+TypeScript、Angular+TypeScript;包括最新的Vue3中也提供了更好的对TypeScript的支持;

Vue项目通常需要掌握哪些技术栈?
Vue3全家桶
1
Vue3核心语法
Vue-Router路由Vuex状态管理
4
TypeScript实际项目中使用TypeScript Vue3组件库
2
AntDesignVueElement-Plus
5其他技术栈
可视化库
Webpack,Vite Axios等网络请求库Less、Sass等CSS预处理器ECharts
3
Three.js G2、L7等

如何学习Vue3+TypeScript?
官方文档看书学习
如何抓住重点;如何进行实战练习;更多作为查阅的手册;书的质量必须很高;必须动手进行练习;遇到问题如何解决?
开源项目视频课程
非常好的学习手段;需要具备一定的学习能力,需要一定的基础;比较适合大多数人;讲课人本身的能力;视频质量要高、听得懂、学得会;

coderwhy课程的内容
课程核心内容:
Vue3核心知识深入解析;Vue-Router4.x、Vuex4.x、2.Composition API等详细解析;基于Webpack5、Vite2分别搭建Vue3项目;TypeScript基础、高级语法解析、应用、实战;Vue3、Vue-Router、Vuex、Hooks、Element-Plus、ECharts、TypeScript、Axios、Less的后台管理系统项目实战;项目实战中的高级组件拆分、封装,项目架构设计等;Vue3项目的打包、优化、自动化部署等;Vue3相关的原理、源码解读等;
----1一

1.邂逅Vue3和Vue3开发体验.mp4

و
coderwhy Vue3带来的变化(源码)源码通过monorepo的形式来管理源代码:Mono:单个
1Repo:repository仓库
口主要是将许多项目的代码存储在同一个repository中;口这样做的目的是多个包本身相互独立,可以有自己的功能逻辑、单元测试等,同时又在同一个仓库下方便管理;而且模块划分的更加清晰,可维护性、可扩展性更强;源码使用TypeScript来进行重写:
口在Vue2.x的时候,Vue使用Flow来进行类型检测;口在Vue3.x的时候,Vue的源码全部使用TypeScript来进行重构,并且Vue本身对TypeScript支持也更好了;

coderwhy方式一:CDN引入
什么是CDN呢?CDN称之为内容分发网络(Content Delivery Network或Content Distribution Network,缩写:CDN)
口它是指通过 相互连接的网络系统,利用最靠近每个用户的服务器;口更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户;口来提供高性能、可扩展性及低成本的网络内容传递给用户;

oderwhy声明式和命令式
原生开发和Vue开发的模式和特点,我们会发现是完全不同的,这里其实涉及到两种不同的编程范式:
口命令式编程和声明式编程;口命令式编程关注的是"how to do",声明式编程关注的是"what to do",由框架(机器)完成"how"的过程;

coderwhy MVVM模型
MVC和MVVM都是一种软件的体系结构
口MVC是Model-Vue-Controller的简称,是在前期被使用非常框架的架构模式,比如iOS、前端;OMVVM是Model-View-ViewModel的简称,是目前非常流行的架构模式;d

通常情况下,我们也经常称Vue是一个MVVM的框架。
aVue官方其实有说明,Vue虽然并没有完全遵守MVVM的模型,但是整个设计是受到它的启发的。

coderwhy data属性
data属性是传入一个函数,并且该函数需要返回一个对象:
在Vue2.x的时候,也可以传入一个对象(虽然官方推荐是一个函数);在Vue3.x的时候,比如传入一个函数,否则就会直接在浏览器中报错;data中返回的对象会被Vue的响应式系统劫持,之后对该对象的修改或者访问都会在劫持中被处理:
口所以我们在template中通过{(counter)}访问counter,可以从对象中获取到数据;口所以我们修改counter的值时,template中的{{counter))也会发生改变;

coderwhy methods属性
methods属性是一个对象,通常我们会在这个对象中定义很多的方法:
口这些方法可以被绑定到 template 模板中;口在该方法中,我们可以使用this关键字来直接访问到data中返回的对象的属性;对于有经验的同学,在这里我提一个问题,官方文档有这么一段描述:

对于有经验的同学,在这里我提一个问题,官方文档有这么一段描述:口问题一:为什么不能使用箭头函数(官方文档有给出解释)?
口问题二:不使用箭头函数的情况下,this到底指向的是什么?(可以作为一道面试题)
注意
注意,不应该使用箭头函数来定义 method 函数(例如 plus:()→ this.a++)。理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向组件实例,this.a 将是undefined。

coderwhy其他属性
当然,这里还可以定义很多其他的属性,我们会在后续进行讲解:口比如props,computed、watch,emits,setup等等;口也包括很多的生命周期函数;不用着急,我们会一个个学习它们的。

vuejs / vue-next

v3.0.11

https://github.com/vuejs/core/tree/v3.0.11

2.Vue3基础语法(⼀).mp4

Vue基础-模板语法

mp.weixin.qq.com/s/hYm0JgBI25grNG_2sCRITA

definpro bindvalue

vue-template-compiler

snippet-generator.app

coderwhy模板语法
1503 × 728
React的开发模式:
React使用的jsx,所以对应的代码都是编写的类似于js的一种语法;之后通过Babel将jsx编译成 React.createElement 函数调用;Vue也支持jsx的开发模式(后续有时间也会讲到):
口但是大多数情况下,使用基于HTML的模板语法;在模板中,允许开发者以声明式的方式将DOM和底层组件实例的数据绑定在一起;在底层的实现中,Vue将模板编译成虚拟DOM渲染函数,这个我会在后续给大家讲到;所以,对于学习Vue来说,学习模板语法是非常重要的。

coderwhy v-bind的绑定属性
前端讲的一系列指令,主要是将值插入到模板内容中。
但是,除了内容需要动态来决定外,某些属性我们也希望动态来绑定。
比如动态绑定a元素的href属性;口比如动态绑定img元素的src属性;绑定属性我们使用v-bind:口缩写::
口预期:any(with argument)| Object(without argument)
口参数:attrOrProp(optional)
修饰符:
.camel-将kebab-case attribute名转换为camelCase用法:动态地绑定一个或多个 attribute,或一个组件 prop 到表达式。

coderwhy绑定style介绍
我们可以利用v-bind:style来绑定一些CSS内联样式:
口这次因为某些样式我们需要根据数据动态来决定;比如某段文字的颜色,大小等等;CSS property 名可以用驼峰式(camelCase)或短横线分隔(kebab-case,记得用引号括起来)来命名;绑定class有两种方式:
口对象语法口数组语法

LE coderwhyv-on绑定事件
前面我们绑定了元素的内容和属性,在前端开发中另外一个非常重要的特性就是交互。
在前端开发中,我们需要经常和用户进行各种各样的交互:
口这个时候,我们就必须监听用户发生的事件,比如点击、拖拽、键盘事件等等口在Vue中如何监听事件呢?使用v-on指令。

" v-on="{click: btn1Click, mousemove: mouseMove}"> @

PLO PowerPoint片政-10ve3生新-病有招LE coderwhyv-on的修饰符
1188 × 751
v-on支持修饰符,修饰符相当于对事件进行了一些特殊的处理:.stop-调用event.stopPropagation prevent-调用 event.preventDefault().
capture-添加事件侦听器时使用capture模式。
self-只当事件是从侦听器绑定的元素本身触发时才触发回调。{keyAlias)-仅当事件是从特定键触发时才触发回调。
.once-只触发一次回调。
left-只当点击鼠标左键时触发。
right-只当点击鼠标右键时触发。.middle-只当点击鼠标中键时触发。
passive-{passive:true}模i添加侦听器

3.Vue3基础语法(⼆).mp4

coderwhy没有key的过程如下
我们会发现上面的diff算法效率并不高:口c和d来说它们事实上并不需要有任何的改动;口但是因为我们的c被f所使用了,所有后续所有的内容都要一次进行改动,并且最后进行新增
カ00倍

Vue源码对于key的判断

coderwhy条件渲染
在某些情况下,我们需要根据当前的条件决定某些元素或组件是否渲染,这个时候我们就需要进行条件判断了。
Vue提供了下面的指令来进行条件判断:
v-if v-else v-else-if v-show

v-if的渲染原理:
Ov-if是惰性的;口当条件为false时,其判断的内容完全不会被渲染或者会被销毁掉;口当条件为true时,才会真正渲染条件块中的内容;

coderwhy template元素
因为v-if是一个指令,所以必须将其添加到一个元素上:
口但是如果我们希望切换的是多个元素呢?
口此时我们渲染div,但是我们并不希望div这种元素被渲染;口这个时候,我们可以选择使用template;template元素可以当做不可见的包裹元素,并且在v-if上使用,但是最终template不会被渲染出来:
口有点类似于小程序中的block

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/860074.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

E92 换根DP+倍增 P5666 [CSP-S2019] 树的重心

视频链接:E92 换根DP+倍增 P5666 [CSP-S2019] 树的重心_哔哩哔哩_bilibili P5666 [CSP-S2019] 树的重心 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)// 换根DP+倍增 O(nlogn) #include <iostream> #include <cstring> #include <algorithm> #include …

Java中的微信支付(1):API V3版本签名详解

Java中的微信支付(1):API V3版本签名详解Java中的微信支付(1):API V3版本签名详解| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission | …

AI泳池溺水监测识别摄像机

AI泳池溺水监测识别摄像机是一种利用人工智能和机器视觉技术的创新设备,旨在确保游泳池安全,并及时识别溺水事件,以减少溺水事故的发生。这种摄像机利用高清摄像头和AI算法,能够实时监测泳池中的情况,并自动识别溺水事件。它可以迅速发现水面上出现异常的情况,如有人体在…

数据恢复软件下载_R-Studio V9.4.191420中文绿色版下载

软件介绍 数据恢复软件R-Studio 绿色版是一款来自于加拿大的功能强大、经济高效的数据恢复软件,它将最先进的文件恢复和磁盘修复技术与直观的用户界面进行联合,可为企业和专业级数据恢复专家提供所需工具。不论是有经验的数据恢复专业人员,还是入门级用户都不会有使用方面的…

泥石流识别摄像头

泥石流识别摄像头的核心在于其深度学习算法,泥石流识别摄像头具备全天候监控的能力,无论是白天还是夜晚,都能稳定运行。当摄像头监测到山体出现落石、坍塌或泥石流等异常情况时,系统会立即启动报警机制。报警方式多样,包括发出声音警报、向用户的电脑或手机推送报警信息等…

从零开始搭建SpringBoot项目

一、创建SpringBoot项目二、上一步填写完信息后点击Next,进入选择依赖库界面,在这里大家就可以选择我们开发当中要使用到的如:数据库驱动,技术,框架等等。 (下面是大多项目中会使用到的技术,可以根据项目选择会用的插件)三、给IDEA安装插件:需要给IDEA安装的插件一共有…

中考阅读理解深入逻辑分析-007 Hooves of Justice: The Equine Guardians 正义之蹄:马匹守护者

中考阅读理解深入逻辑分析-007 Hooves of Justice: The Equine Guardians 正义之蹄:马匹守护者 文章正文 ​ Police officer Dennis was recently patrolling(巡逻)the streets of Newark, New Jersey. Suddenly, he found four men fighting. As he approached, one of…

灵感上线,云开发实现抽奖转盘是多么简单的一件事

今天,我们继续深入探讨云开发的应用。本次,我们将实现一个简单的小游戏——转盘抽奖。这一项目的灵感来源于腾讯云创作之星内部每周举办的创作活动和每月的抽奖环节。由于每次抽奖都需要使用小程序进行,而小程序的审核过程通常较为缓慢,因此我想借助云开发,看看能否快速实…

OCR实践-问卷表格统计

OCR实践,表格处理,基于前面的深度模型知识,实现表格图片自动统计分数,项目代码已开源 放在Github上,欢迎参考使用,对手动拍照的问卷图片进行统计分数(对应分数打对号),单张问卷各项得分写入excel文件,并汇总所有图片得分到 excel。前言 书接上文OCR实践—PaddleOCR O…

blog-3

前言 在过去的几周内,我们完成了家居强电电路模拟程序-3以及 家居强电电路模拟程序-4的练习,涉及多个知识点和编程技巧。整体来说,这两次题目集共包含了2道题目,题目难度逐步增加。(折叠代码是不在行列计算内的,只是我觉得结合代码能讲的更清楚我的思路,由于上次可能因为…

3.1美化网页元素

1.为什么要美化网页有效的传递页面信息美化网页,页面漂亮才能吸引用户凸显页面主题提高用户体验span标签:重点要突出的字,使用span标签套起来 字体样式: 文本样式: 1.颜色 2.对齐方式 3.首行缩进 4.行高 line-height=height 可以实现上下居中 5.装饰(下划线)

nacos根据业务需要自定义命名空间

创建个订单的命名空间 配置列表这里就有了 本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/18636783