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关键词的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

electron进程间通信

Electron 应用程序的结构非常相似。 作为应用开发者,你将控制两种类型的进程:主进程 和 渲染器进程。 这类似于上文所述的 Chrome 的浏览器和渲染器进程。 主进程 每个 Electron 应用都有一个单一的主进程,作为应用程序的入口点。 主进程在 N…

(实测验证)【移远EC800M-CN 】GNSS功能打开和关闭关闭步骤验证

引言 本文章使用自研“超小体积TTL转4GGPS集成模块”进行实测验证; 一、打开GNSS功能 步骤一、通过 ATQGPSCFG 配置 GNSS 参数 (1)该命令用于查询和配置 GNSS 不同的设置,包括 NMEA 语句输出端口、NMEA 语句的输出类型等。 1.1…

栈和队列经典面试题详解

目录 题目一:20. 有效的括号 - 力扣(LeetCode) 题目二:225. 用队列实现栈 - 力扣(LeetCode) 题目三:232. 用栈实现队列 - 力扣(LeetCode) 题目四:622. 设…

【董晓算法】动态规划之线性DP问题

前言: 本系列是看的B站董晓老师所讲的知识点做的笔记 董晓算法的个人空间-董晓算法个人主页-哔哩哔哩视频 (bilibili.com) 树塔-记忆化搜索 特点(前提):从上向下的累加和是不能重复使用的,从下向上的累加和是可以重…

抖音电商发展受限,视频号反而成了短视频电商风口?这是为什么?

哈喽~我是电商月月 抖音小店发展的如火如荼间,视频号也正式推出了自己的电商平台 视频号小店的推出,引的众多商家讨论 很多人都觉得视频号的流量比不过抖音,玩互联网的人群【年轻群体】都集中在抖音上了,有抖音在,视…

动态规划算法:⼦序列问题(数组中不连续的⼀段)

例题一 解法(动态规划): 算法思路: 1. 状态表⽰: 对于线性 dp ,我们可以⽤「经验 题⽬要求」来定义状态表⽰: i. 以某个位置为结尾,巴拉巴拉; ii. 以某个位置…

【EasyX】快速入门——静态图形篇

1.基本说明 EasyX 是针对 C 的图形库,可以帮助 C/C 初学者快速上手图形和游戏编程。 比如,可以基于 EasyX 图形库很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练…

类和对象的特性

1.检查错误。 代码&#xff1a; #include <iostream>using namespace std;class Time { private:/* data */ public:Time(/* args */);~Time();void set_time(void);void show_time(void);int hour;int minute;int sec; };Time::Time(/* args */) { }Time::~Time() { }T…

Java环境搭配(一)JDK下载以及介绍、path环境变量配置

目录 JDK Development Kit &#xff08;JDK&#xff09; 下载 JDK介绍 &#xff1a; JDK 包括以下主要组件 配置path环境变量 在cmd上打印Helloworld JDK Development Kit &#xff08;JDK&#xff09; 下载 下载官方地址 www.oracle.com 进入网址后&#xff1a; 点击产…

指针在函数的应用(C++)

一、传递地址 实参传递进函数体内后&#xff0c;生成的是实参的副本&#xff0c;在函数内改变副本的值并不影响实参。指针传递参数时&#xff0c;指针变量产生了副本&#xff0c;但副本与原变量指向的内存区域是同一个。改变指针副本指向的变量&#xff0c;就是改变原指针变量指…

快速查看字符对应的ASCII码

1、借助gdb查看 打印字符串用双引号括起来打印单个字符用单引号括起来x 表示十六机制d 表示十进制t 表示二进制 2、借助二进制查看软件 第一步&#xff1a;把要查看的字符保存到文本文件中第二步&#xff1a;借助二进制查看工具&#xff08;比如&#xff1a;Hex Editor Neo&am…

字节跳动在2024年春季火山引擎Force原动力大会上隆重推出了“豆包大模型”家族

此次大会以AI为主题&#xff0c;聚焦大模型的应用与发展&#xff0c;旨在引领AI技术的落地和推动各行各业的数字化转型。 字节跳动官网&#xff1a;https://www.bytedance.com/zh/ 豆包官网&#xff1a;https://www.doubao.com/chat/ 更多消息&#xff1a;https://heehel.co…

Redis实战—验证码登录注册

目录 基于Session Controller层 Service层 ServiceImpl层 ​编辑校验登录状态 ThreadLocal 登录拦截器 添加拦截器到Config Controller层实现 基于Redis ServiceImpl 新增刷新拦截器 添加拦截器到Config 基于Session Controller层 /*** 发送手机验证码*/PostMappi…

ROS 手眼标定 realsense435i+ur5e

手眼标定的原理 基坐标系&#xff08;base_tree&#xff09;和相机&#xff08;camera_tree&#xff09;两个坐标系属于不同的tree&#xff0c;通过将标签贴到手上&#xff0c;相机识别出标签的position和orention&#xff0c;并通过easy_handeye标定包得到tool0(机械手)&…

Java面试八股之HashMap和HashTable有什么区别

Java中HashMap和HashTable有什么区别 线程安全性&#xff1a; HashMap&#xff1a;非线程安全。在多线程环境下&#xff0c;如果没有采取适当的同步措施&#xff0c;直接并发访问可能会导致数据不一致、死锁等问题。如果需要在多线程环境中安全地使用HashMap&#xff0c;通常…

中国开源 AI 大模型之光-InternLM2

今天给大家带来 AI 大模型领域的国产之光 - InternLM2&#xff0c;在10B量级开源大模型领域取得了全球 Top 3 的成绩&#xff0c;仅次于 Meta 发布的 Llama-3&#xff0c;在国内则是第一名的存在&#xff01; 简介 InternLM2是由上海人工智能实验室和商汤科技联合研发的一款大型…

【软件测试】需求概念|软件的⽣命周期|开发模型|测试模型

目录 推荐 一、什么是需求 1.1 ⽤⼾需求 1.2 软件需求 二、开发模型 2.1 什么是“模型” 2.2 软件的⽣命周期 2.3 常⻅开发模型 2.3.1 瀑布模型 2.3.2 螺旋模型 2.3.3 增量模型、迭代模型 2.3.4 敏捷模型 2.4 测试模型 2.4.1 V模型 2.4.2 W模型(双V模型&#xff0…

安装ArcGIS失败,提示无效驱动器Error1327.Invalid Drive G错误

安装ArcGIS的时候&#xff0c;出现图中错误该怎么解决呢&#xff1f; Error 1327.Invalid Drive:G:\ 即错误代码&#xff1a;1327。无效驱动器G盘 出现以上问题的原因是 注册表中包含了该硬盘驱动器或网络驱动器的引用 但是在我的电脑中又没有该盘符 一般是已经卸载或者更换…

NSSCTF | [SWPUCTF 2021 新生赛]easyupload2.0

先传一个普通的一句话木马试一试 GIF89a <?php eval($_POST[shell]);?> 可以看到回显&#xff0c;不允许上传php文件。 使用Burpsuite抓包只修改ContentType后发现也不能绕过&#xff0c;说明服务器使用了黑名单后缀限制&#xff0c;那么我们可以使用其他的后缀代替ph…

dubbo复习:(3) 服务超时时间配置

在dubbo admin中 可以进行类似如下配置 configVersion: v2.7 enabled: true configs:- side: consumeraddresses:- 0.0.0.0parameters:timeout: 55这样配置之后&#xff0c;当服务端响应超过55毫秒时&#xff0c;在服务消费者的控制台就会看到超时信息