三大前端框架

article/2025/9/14 5:42:04

互联网发展速度是非常快的,程序员用的前端框架也在不断的迭代和变化,以前大家常用的是JQuery、Bootstrap框架,

在这里插入图片描述

现在形成React、Vue、Angular三大主流框架,这三个框架各有各的优势,而且较为成熟

在这里插入图片描述

01、React

React框架是起源于Facebook的项目,当时在公司内部盛行JavaScript框架,但是感觉不是很满意,就写了React框架。React可以轻易的解决跨浏览器兼容的问题,主要是通过对DOM的模拟减少与DOM的交互做到的。

React的模块化把组件进行了隔离,出现问题的时候更方便程序员对其进行修改,而且由于JavaScript,因此更有利于搜索引擎的优化。

02、Vue

Vue是相对比较轻量级的框架,是通过进行双向数据绑定来达到驱动页面的效果,大多程序员在学习新框架的时候都会先从Vue开始。

Vue比较简单,官方文档介绍的很清楚,可以非常快速的通过异步批处理的方式对DOM进行更新,也能把可复用的、解耦的组件组合在一起使用,更能允许多种模块的安装,场景使用也更加灵活。

03、Angular

Angular拥有很好的应用程序,是一个以JavaSpript编写的库,模板功能也异常强大,本身就带有丰富的Angular指令。一方面可以通过指令扩宽HTML,一方面可以通过表达式绑定数据到HTML。因为引入了Java的相关内容,因此更容易些出复用的代码,不仅方便了以后的工作,也可以提高团队项目开发的速度。

Vue和React对⽐:

在这里插入图片描述

一,两者的共同点

1: 都使用Virtual DOM 2: 都提供了响应式和组件化的视图组件 3:
核心集中在UI层面,类似于路由,状态管理,数据请求都交给其他库 4: 都是单向数据流

二,两者的不同

1: PureComponent && shouldComponentUpdate

在React应用中,当某个组件的状态发生变化时,它会以这个组件为根,重新渲染整组组件子树。如果想要避免这一行为,需要使用PureComponent或者实现shouldComponentUpdate方法。

但是使用PureComponent或者shouldComponentUpdate的前提是,需要保证改组件的渲染结果都由props所决定。如果此组件不符合这个条件,可能就会得不到你想要的渲染结果。

于此相反的是,是否需要重新渲染子组件,是由Vue自己完成的,而不需要开发者特定地写代码去实现,使得开发者可以专注于业务的实现上。

2: 视图表现和逻辑要不要分开

这一点可能大家用眼睛一看就知道,在Vue里,我们创建一个组件就是创建一个.vue文件,然后把这个组件需要的HTML,
JS逻辑,CSS都放到这一个文件内,和我们传统的WEB保持一致。Vue的组件也被叫做“视图表现组件”。

而React的作者认为对于UI来说,视图表现,数据和逻辑天然就是耦合的,所以没必要把它们分开,所以React创造了JSX。任何的JSX在编译取值之后都成为JS对象,所以JSX相当于变成了JS里面的一种新的数据类型。它可以像JS里面的其他数据类型一样,被赋值给一个JS变量,可以作为函数参数,可以作为函数返回值,也可以用在if或者for等流控制语句。

现在我们看到了表面的现象,但是或许要去问一句,为什么这2者在这点上的差别有点大。这跟这2个库的设计初衷,或者直接说这2个库背后的作者背景有很大关系。

我们都知道React是由Facebook的人开发的,React最开始的口号是"Rethinking Best
Practices",而他们想要开发者去rethink。他们想要传达的是一种新的理念。你第一次接触JSX的时候,你至少得去看以下这个新概念是什么,它又是基于ES6的,所以可能在你写下第一行代码之前,至少得先花点时间学习一下新知识。

“Vue
从一开始的定位就是尽可能的降低前端开发的门槛,让更多的人能够更快地上手开发”。所以尽量地不引入新的概念,让熟悉web开发的人能更快速和简单地过渡到使用Vue开发。

3: 单向数据绑定和双向数据绑定

在这里首先要说一点,经常有人把单向数据流和单向数据绑定搅和到一起。
React是单向数据流的,那能不能实现双向数据绑定呢? 怎么?难道假如React是双向数据流,那自然就是双向数据绑定了吗?
接下来我们来理清一下概念:

A: 数据绑定—是指在一个组件范围内,数据(model)和视图(view)之间的同步关系。
React是单向数据绑定,在React里面,假如我们有一个input,用户操作input改变了input的值,state上面的相应的数据并不会自动改变,需要开发者在input的handler方法里通过“event.target.value”获取input的值,再通过setState()方法来改变。
Vue提供了双向数据绑定,通过指令v-model来实现,例如:。假如用户操作input,修改了input里面的内容,不需要开发者手动去获取input的value,这里的message变量会自动更新。
B: 数据流----是指父组件和子组件之间的数据传递
Vue和React都是单向数据流,数据都是只能从父组件传到子组件,都是通过props传递的。
如果子组件想要向父组件传递数据,Vue和React里面都可以通过callback函数来完成。当我们在父组件里面拿到了某个子组件传递的数据,想要怎么用就取决了父组件了。
子组件做不到(更不应该)去直接改变父组件的数据。因为对于同一个父组件来说,可能很多个子组件都使用了同一个prop,假如子组件能改变父组件的其中一个数据,那么这就会影响到其他所有的使用了这个数据的子组件。
所以数据绑定和数据流是两个独立的概念,互相之间不影响,更没有因果关系。

不过我个人还是比较喜欢Vue框架的,所以

在这里插入图片描述


http://chatgpt.dhexx.cn/article/YSERxpYr.shtml

相关文章

前端三大主流框架的区别(三)

前面两篇已经做了细致的分析,这一篇就总结总结三大主流框架吧 1.angular 1.1. 简介: angular是最早出现的框架, angularjs是通过directive(指令)去封装组件,react和vue是通过component。 1.2. 优点: 1、…

三大框架-Spring

一 .概述 spring框架是以一个分层架构,有七个定义良好的模块组成,Spring模块构建在核心容器之上,核心容器定义了创建,配置和管理bean方式: 1.Spring Core:核心容器 ,提供Spring的基本功能. 2.SPring Contest:Spring上下文,是一个配置文件 3.Spring AOP : Spring 中面向切面…

JAVA的三大框架是什么?

Java自1995年发布以来,凭借着其跨平台、面向对象、泛型编程的特性发展至今可以说无Java不大厂。目前国内所有的大厂或多或少都在使用Java进行后端服务开发。 一、Java开发的三大框架 在14年以前,行业内用得最多的Java三大框架是Struts、Spring和Hiberna…

SSM三大框架Spring

一、三大框架基本结构 1.为什么需要框架 说明: 如果生产环境下的项目,都是从头(从底层写起)开发,难度太大了,并且开发的效率极其低下. 所以为了让项目快速的上线部署. 将某些特定的功能.进行了高级的封装. 那么我们如果需要使用封装后的API.,则必须按照人家的要求编码 2.框架…

外键的设置

关键词:外键 | 索引 | InNoDB和MyISAM | 引用 | Mysql 设置外键的目的:保证数据的一致性! 一、外键的使用条件: ① 两个表必须是InnoDB表,MyISAM表暂时不支持外键 #查看表类型SHOW TABLE STATUS#查询结果的Engine字…

外键(FOREIGN KEY)

引子:把所有数据都存放于一张表的弊端 1、表的组织结构复杂不清晰 2、浪费空间 3、扩展性极差 为了解决上述的问题,就需要用多张表来存放数据。 表与表的记录之间存在着三种关系:一对多、多对多、一对一的关系。 处理表之间关系问题就会…

什么是外键? 为什么需要外键?怎么使用外键?

首先我们先思考一个问题: 如何将京东"fuliuqingfeng"的用户信息及其多个邮寄商品地址保存到数据库中? 我们第一步会这样操作实现: create table user_info(id char(36) primary key,user_name varchar(30) not null,password varchar(30) …

MySQL外键(详解)

MySQL外键(详解) 什么是外键:    外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束(简单来说外键是另一个表的主键或者唯一约束)。外键可以有重复的, 可以是空值&…

C/C++unlink函数的使用

一、头文件 #include<unistd.h> 二、函数原型 int unlink(const char *pathname); 三、函数介绍 unlink()函数功能即为删除文件。执行unlink()函数会删除所给参数指定的文件。 注意&#xff1a; 执行unlink()函数并不一定会真正的删除文件&#xff0c;它先会检查文件…

Linux下unlink函数的使用

一、头文件 #include<unistd.h> 二、函数原型 int unlink(const char *pathname); 三、函数介绍 unlink()函数功能即为删除文件。执行unlink()函数会删除所给参数指定的文件。 注意&#xff1a; 执行unlink()函数并不一定会真正的删除文件&#xff0c;它先会检查文件系…

Universal link的坑

当你觉得Universal link所有配置都没问题&#xff0c;但是通过浏览器打开Universal Link没有命中的时候看下这里 看了很多篇文章对比了Universal Link配置和流程之后没问题&#xff0c;浏览器打开还是不生效&#xff0c;最终在最关键的配置apple-app-site-association文件破案了…

unlink 和 remove 的区别

Linux下开发的时候,会经常使用unlink来删除文件的,而用C的时候,经常用remove删除文件. 这两者的去区别通过man手册发现&#xff1a;  当remove() 中的pahtname指定为目录时,相当于调用rmdir 删除目录,当remove() 中的pathname指定问文件时,相当于调用unlink 删除文件链接 所以…

004link()unlink()_LINUX

Linux的学习笔记 link、unlink1. 共享盘块2. link() 为已经存在的文件创建目录项&#xff08;硬链接&#xff09;头文件包含和函数声明 3. unlink() 删除一个文件的目录项头文件包含和函数声明Linux下删除文件的机制&#xff1a;demo 4. unlink 使用注意及隐性回收demo4.1 编译…

CTF PWN之heap入门 unlink

环境 ubuntu20 pwndbg patchelf glibc-all-in-one 为什么要用ubuntu不用kali&#xff0c;这里不做解释&#xff0c;总之就是自己在搭环境时出现了各种问题&#xff0c;但用ubuntu20不会出现&#xff0c; pwndbg&#xff0c;打pwn题必备&#xff0c;具体安装过程见gdb与ped…

NPM报错 Error: EPERM: operation not permitted, unlink......解决办法和清除缓存。

由于国内外环境因素&#xff0c;npm install安装依赖的时候经常会出现各种问题&#xff0c;特别是“Error: EPERM: operation not permitted, unlink…”这个错误。 在这里插入图片描述 这个错误因为报错信息的误导性&#xff0c;导致很多网上提出的解决办法都是什么设置权限…

vue 启项目报错Error: EPERM: operation not permitted, unlink

使用npm install安装依赖之后&#xff0c;有时候存在网络或其他问题安装不上个别依赖&#xff0c;其项目失败&#xff0c;报错 当启项目时报错&#xff1a;Error: EPERM: operation not permitted, unlink 此问题困扰好久&#xff0c;刚开始以为和其他人遇到的问题相似是因为管…

好好说话之unlink

堆溢出的第三部分unlink&#xff0c;这可能是有史以来我做的讲解图最多的一篇文章了累死 。可能做pwn的人都应该听过unlink&#xff0c;见面都要说声久仰久仰。学unlink的时候走了一些弯路&#xff0c;也是遇到了很多困扰的问题&#xff0c;会在后面的内容中做出标注。由于写的…

Unlink

Author&#xff1a;ZERO-A-ONEDate&#xff1a;2021-07-03 一、unlink的原理 简介&#xff1a;俗称脱链&#xff0c;就是将链表头处的free堆块unsorted bin中脱离出来然后和物理地址相邻的新free的堆块合并成大堆块&#xff08;向前合并或者向后合并&#xff09;&#xff0c;再…

unlink快速入门

0x01 正常unlink 当一个bin从记录bin的双向链表中被取下时&#xff0c;会触发unlink。常见的比如&#xff1a;相邻空闲bin进行合并&#xff0c;malloc_consolidate时。unlink的过程如下图所示&#xff08;来自CTFWIKI&#xff09;主要包含3个步骤&#xff0c;就是这么简单。 …

Linux常用命令——unlink命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) unlink 系统调用函数unlink去删除指定的文件 补充说明 unlink命令用于系统调用函数unlink去删除指定的文件。和rm命令作用一样&#xff0c;都是删除文件。 语法 unlink(选项)(参数)选项 --help&#xff1a;…