Vue.js的发展史(一)

Vue.js的发展史(一)

  • 什么是Vue?

Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。  来源官方解释-----简介 | Vue.js (vuejs.org)

简单来说:Vue是一个属于JS库,直接引入一个JS文件就可以使用,与传统JS和JQuery框架不同,Vue的渐进式框架表示开发者可以由简单组件写起,渐渐搭建出一个复杂的前端平台。

  • Vue的基本特点(为什么要使用Vue?)

我们从以下方面分析:

  1. 渐进式:Vue被设计为可以自底向上逐层应用。这意味着你可以只使用Vue的一部分功能,而无需使用整个框架。这种灵活性使得Vue可以轻松地与其他库或已有项目集成。自底向上逐层应用

          

2.响应式数据绑定:Vue的核心库只关注视图层,它采用简洁的模板语法,将已编译的模板与Vue实例的响应式数据绑定在一起。这意味着当数据发生变化时,视图会自动更新。响应式原理在 Vue 中,数据模型下的所有属性,会被 Vue 使用Object.defineProperty(Vue3.0 使用 Proxy)进行数据劫持代理。响应式的核心机制是观察者模式,数据是被观察的一方,一旦发生变化,通知所有观察者,这样观察者可以做出响应,比如当观察者为视图时,视图可以做出视图的更新。Vue.js 的响应式系统以来三个重要的概念,ObserverDepWatcher

3.组件化:Vue允许你将界面拆分成可重用的组件,每个组件都有自己的HTML结构、JavaScript逻辑和CSS样式。这使得开发大型、复杂的Web应用变得更加容易和可维护。

            这里对组件解释一下:组件就是对一个功能和样式进行独立的封装,让HTML元素得到扩展,从而使得代码得到复用,使得开发灵活,更加高效。与HTML元素一样,Vue.js的组件拥有外部传入的属性(prop)和事件,除此之外,组件还拥有自己的状态(data)和通过数据和状态计算出来的计算属性(computed),各个维度组合起来决定组件最终呈现的样子与交互的逻辑

4.指令:Vue提供了许多内置的指令(如v-if、v-for、v-bind等),这些指令可以在模板中直接操作DOM元素,并绑定到Vue实例的数据和计算属性。

5.生命周期钩子:Vue实例在其生命周期中有多个不同的阶段,如创建、挂载、更新和销毁。在每个阶段,Vue都会运行一些特定的函数(称为“生命周期钩子”),以便你可以在这些阶段添加自己的代码逻辑。这里要强调的因为每个版本的不同,所用的生命周期钩子可能也会不同

6.路由:Vue Router是Vue.js官方的路由管理器。它和Vue.js深度集成,使构建单页面应用变得易如反掌。

7.状态管理:Vuex是Vue.js的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

8.轻量级:与Angular和React等其他主流前端框架相比,Vue更加轻量级和易于上手。这使得Vue成为许多开发者的首选框架。轻量视图

9.友好的中文文档和社区:Vue的官方文档非常详细且易于理解,尤其是中文文档更是受到了广大开发者的喜爱。此外,Vue社区也非常活跃,提供了大量的教程、插件和工具供开发者使用。

  • Vue的发展历程

1.关于Vue各代版本的解释

Vue.js是一款流行的JavaScript框架

vue,vue2,vue3都是vue.js的不同版本。

VueVue.js的第一个版本,也称为Vue 1.x。它于2014年首次发布,并获得了广泛的应用和认可。

Vue2:Vue.js的第二个版本,也称为Vue 2.x。它在Vue 1.x的基础上进行了升级和改进,提供了更好的性能、更多的功能和更好的开发体验。Vue2是目前广泛应用的稳定版本,在许多项目中使用。

Vue3:Vue.js的最新版本,也称为Vue 3.x。它在Vue 2.x的基础上进行了重构和升级,引入了许多新特性和改进。Vue3提供了更快的渲染速度、更小的包大小、更好的响应性和更方便的开发工具。

2.关于各个版本的特点

Vue.js 1.x

    1. 基础版本:这是 Vue.js 的初始版本,提供了基本的框架功能和组件系统。
    2. 简洁直观:Vue.js 的设计旨在使开发人员能够直观、快速地构建用户界面。
    3. 响应式数据绑定:Vue.js 1.x 引入了响应式数据绑定的概念,允许开发人员将视图与底层数据模型进行双向绑定。

Vue.js 2.x

    1. 更成熟的生态系统:随着 Vue.js 的流行,它的生态系统也在不断发展壮大,包括 Vue Router、Vuex 等工具。
    2. 虚拟 DOM:Vue.js 2.x 引入了虚拟 DOM 的概念,大大提高了页面渲染的性能。
    3. 组件化:Vue.js 2.x 强化了组件化的概念,使开发人员能够更容易地构建可复用的组件。
    4. 生命周期钩子:Vue.js 2.x 提供了丰富的生命周期钩子函数,允许开发人员在不同阶段执行特定的逻辑。
    5. 指令和过滤器:Vue.js 2.x 支持自定义指令和过滤器,进一步增强了框架的灵活性。

Vue.js 3.x

    1. 更快的性能:Vue.js 3.x 在性能上进行了大量优化,包括更快的编译速度和更小的运行时大小。
    2. Composition API:Vue.js 3.x 引入了 Composition API,允许开发人员以更灵活、更可维护的方式组织代码。这与 React 的 Hooks 类似,但具有 Vue 的独特优势。
    3. 更好的 TypeScript 支持:Vue.js 3.x 提供了更好的 TypeScript 支持,使开发人员能够更容易地使用 TypeScript 编写 Vue 应用程序。
    4. 更小的打包体积:通过优化和树摇动(tree shaking),Vue.js 3.x 能够生成更小的打包体积,减少应用程序的加载时间。
    5. 更友好的错误处理:Vue.js 3.x 提供了更友好的错误处理机制,帮助开发人员更快地定位和解决问题。

3.各个版本的语法的主要差异

组件注册

Vue.js 2.x:通常使用Vue.component()Vue.extend()方法注册组件。

Vue.js 3.x:需要使用createApp().component()方式来注册一个组件。

数据绑定

Vue.js 2.x 和 3.x 都支持双向数据绑定,但具体的实现和细节可能会有所不同。

选项式与组合式写法

Vue.js 2.x 主要使用选项式写法,即将数据、方法、生命周期等选项分别写在不同的地方。

Vue.js 3.x 引入了组合式写法(Composition API),允许开发人员将相关逻辑组织在一起,更灵活地编写组件。Vue.js 3.x 同时支持选项式和组合式写法。

JSX 语法

Vue.js 3.x 开始支持 JSX 语法,允许在 Vue 组件中使用类似 HTML 的 JSX 语法来编写模板。这使得开发者能够更灵活地编写组件,并利用 JavaScript 的所有特性。

生命周期

Vue.js 2.x 和 3.x 的生命周期钩子有所不同。Vue.js 3.x 对一些生命周期钩子进行了重命名或合并例如:setup,以更好地反映组件的生命周期状态。

插槽(Slots)

Vue.js 2.x 和 3.x 的插槽系统也有所不同。Vue.js 3.x 对插槽进行了改进,使其更加灵活和易于使用。

响应式原理

Vue.js 2.x 的响应式原理基础依靠 Object.defineProperty 方法。

Vue.js 3.x 的响应式原理基础则依靠 Proxy 对象,这使得 Vue.js 3.x 在处理数组和对象时具有更好的性能和灵活性。

我们可以多看看几个例子

Vue.js图例1

效果

Vue3 图例2

效果是一样的

对比vue3之前的写法相比不同点还是很多的。

例如data在vue3中变成了一个函数,需要返回值

我们在图例2的基础上进行改变,先增加增加一个methods周期,在其中添加一个函数来控制Tel的显示

此时点击按钮触发的效果:

这样的写法是我们现将数据写在了data周期中,将要触发事件的函数写在了methods周期中,注意写法中的‘this’,在Vue3中setup周期里是不能出现this关键词的

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

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

相关文章

Spring Security实现用户认证二:前后端分离时自定义返回Json内容

Spring Security实现用户认证二:前后端分离时自定义返回Json内容 1 前后端分离2 准备工作依赖WebSecurityConfig配置类 2 自定义登录页面2.1 Spring Security的默认登录页面2.2 自定义配置formLogin 3 自定义登录成功处理器4 自定义登录失败处理器5 自定义登出处理器…

经济寒冬 | 品牌策划人还可以去哪些行业发展?

在这个经济寒冬下,咱们品牌策划人也需要考虑后路问题了。 随着市场竞争的加剧和消费者需求的不断变化,品牌策划人的工作不再只是简单的广告宣传和市场推广。 咱们需要重新思考自己的角色,寻找新的生存和发展之道。 当然,品牌策…

VUE之旅—day2

文章目录 Vue生命周期和生命周期的四个阶段created应用—新闻列表渲染mounted应用—进入页面搜索框就获得焦点账单统计(Echarts可视化图表渲染) Vue生命周期和生命周期的四个阶段 思考: 什么时候可以发送初始化渲染请求?&#xff…

前端本地调试云效上Vue项目的构建产物

一、问题背景 前两天前端小伙伴,在云效上构建了一个前端项目,构建结果显示成功,访问后发现Console控制台报错:ReferenceError: defineComponent is not defined 在此之前的版本,构建和访问并没有此异常,而…

【设计模式】JAVA Design Patterns——Abstract-document(抽象文档模式)

🔍 目的 使用动态属性,并在保持类型安全的同时实现非类型化语言的灵活性。 🔍 解释 抽象文档模式使您能够处理其他非静态属性。 此模式使用特征的概念来实现类型安全,并将不同类的属性分离为一组接口 真实世界例子 考虑由多个部…

eMMC和SD模式速率介绍

概述 在实际项目开发中我们常见的问题是有人会问,“当前项目eMMC、SD所使用模式是什么? 速率是多少?”。这些和eMMC、SD的协议中要求的,要符合协议。接下来整理几张图来介绍。 eMMC 模式介绍 一般情况下我们项目中都是会支持到HS400 8bit 1.8V,最大时钟频率为200MHZ,通…

会议邀请函:Prometheus开源无人机平台-无人机追踪无人车代码实战|第四届中国智能汽车创新大会

扫描上方海报二维码,参与报名 阿木实验室:为机器人研发提供开源软硬件工具和课程服务,让研发更高效! 技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。如果你…

C#【进阶】委托和事件

委托和事件 文章目录 1、委托1、委托概念2、基本语法3、定义自定义委托4、使用自定义委托5、委托变量可以存储多个函数6、系统定义好的委托思考 怪物死亡数据更新 2、事件1、事件概念2、事件的使用3、为什么有事件思考 热水器 3、匿名函数1、匿名函数概念2、基本语法3、使用4、…

iLogtail 社区开源之夏活动来了!

作者:玄飏 在这个充满活力的夏日,随着阳光一同灿烂的是开源精神的光辉与创新的火花。iLogtail 社区高兴地宣布,我们正式加入开源之夏 2024 的行列,诚邀每一位怀揣梦想与激情的学生开发者,共同开启一场探索技术前沿、贡…

机器学习入门介绍

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 目录 三大方向机器学习产生的原因机器如何学习…

基于springboot+vue+Mysql的大学生社团活动平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

图文成片剪辑软件,分享3个专业的工具!

在数字化时代,图文成片剪辑软件成为了我们创作与表达的重要工具。无论是想要制作一段引人入胜的短视频,还是打造一幅精美的图文海报,这些软件都能助你一臂之力。那么,图文成片剪辑软件的方法有哪些?又有哪些值得一试的…

PHP开发中的不安全反序列化

序列化是开发语言中将某个对象转换为一串字节流的过程,转换后的字节流可以方便存储在数据库中,也可以方便在网络中进行传输。而反序列化则是将数据库取出的字节流或从网络上接收到的字节流反向转换为对象的过程。概念虽如此,但不同的开发语言…

ASP.NET在线二手交易系统的设计与实现

摘 要 随着当今社会信息技术的进步,基于互联网的各种应用日益受到了人们的重视,二手商品的重新利用也逐渐被人们关注,二手交易系统就在这种形势下产生了,它利用网络,改变了人们的购物方式。 本文是基于现代二手交易…

AC/DC电源模块的故障诊断与维修技巧

BOSHIDA AC/DC电源模块的故障诊断与维修技巧 AC/DC电源模块是一种常用的电力转换设备,用于将交流电转换为直流电供给电子设备。然而,由于使用环境和操作不当等原因,电源模块可能会出现故障。本文将介绍AC/DC电源模块的故障诊断与维修技巧。…

什么?你设计接口什么都不考虑?

如果让你设计一个接口,你会考虑哪些问题? 1.接口参数校验 接口的入参和返回值都需要进行校验。 入参是否不能为空,入参的长度限制是多少,入参的格式限制,如邮箱格式限制 返回值是否为空,如果为空的时候是…

不相交集合的数据结构

一、不相交集合的操作 不相交集合的数据结构维护了一组不相交动态集的集合 ,用集合中的某个成员作为代表标识集合。 集合在没有修改的情况下每次访问代表得到的答案是相同的,此外在其它一些应用中,可能按照规定选择集合的代表,例如…

WebSocket or SSE?即时通讯的应用策略【送源码】

最近在研究H5推送,发现除了我们常用的WebSocket以外,其实还有一种协议也能实现H5推送,那就是SSE协议。 而且,当前主流的大模型平台,比如ChatGPT、通义千问、文心一言,对话时采用的就是SSE。 什么是SSE协议…

100m/s高速轧制钢材 八轴测径仪检测毫无压力

关键词:八轴测径仪,在线测径仪,钢材测径仪,高速轧制 随着技术的提升,钢材的生产速度越来越快,一些高速生产的钢材,生产速度甚至达到了100m/s,这是一个非常快的速度。 如果汽车以120公里/小时的速度行驶,那么…

Unity WebGL全屏显示

一、删除footer节点 二、删除最下面点击事件绑定 修改Canvas宽高 canvas.style.width "960px"; canvas.style.height "600px"; 改成 canvas.style.width document.documentElement.clientWidth"px"; canvas.style.height document.document…