三大主流前端框架介绍及选型

在前端项目中,可以借助某些框架(如React、Vue、Angular等)来实现组件化开发,使代码更容易复用。此时,一个网页不再是由一个个独立的HTML、CSS和JavaScript文件组成,而是按照组件的思想将网页划分成一个个组件,如轮播图组件、列表组件、导航栏组件等。将这些组件拼装在一起,就形成一个完整的网页。

本章主要涉及的知识点有:

l React框架介绍

l Vue框架介绍

l Angular框架介绍

l 如何选型

React框架是目前流行的前端框架之一。许多公司的项目都由React框架进行构建和编写,尤其是外企或涉及全球团队合作的项目。本节先简单介绍React框架的基础知识和必须了解的一些知识点,使读者对React有一个基本的概念和认知。

React是由Facebook团队开发的一个开源框架,官方网站如图2.1所示。

图2.1  React官方网站

React是一个用于构建用户界面的JavaScript库。使用React框架时创建一系列的React组件(如缩略图、点赞按钮和视频等),然后将它们组合成一个页面、系统或应用程序。

React框架在开发项目时有一套流程和规范,无论你是自己工作还是与成千上万的其他开发人员合作,使用React都是一样的。它旨在让工程师可以无缝地组合由独立人员、团队或组织编写的组件。

React组件的本质是JavaScript函数。例如,下面是VideoList.js组件代码实例:

function VideoList({ videos, emptyHeading }) {
  const count = videos.length;
  let heading = emptyHeading;
  if (count > 0) {
    const noun = count > 1 ? 'Videos' : 'Video';
heading = count + ' ' + noun;
  }
  return (
    <section>
      <h2>{heading}</h2>
      {videos.map(video =>
        <Video key={video.id} video={video} />
      )}
</section>
  );
}

上面代码中return()中的这种标记语法称为JSX,它是React推广的JavaScript语法扩展。JSX看起来与HTML相似,对于写过HTML代码的前端工程师来说,写JSX组件非常容易,不需要记住很多特定标记,并且使用JSX标记写出的组件呈现逻辑清晰,这使得React组件易于创建、维护和删除。

React组件会接收数据并将这些数据和JSX模板编译后形成一段一段的JavaScript代码,这些JavaScript代码会将数据呈现到屏幕上。React框架可以向组件传递新的数据以响应交互,例如当用户通过表单输入内容时,React随后将更新屏幕以匹配新数据。

React是单向响应的数据流,采用单向数据绑定,即Model(数据)的更新会触发View(页面)的更新,而View的更新不会触发Model的更新,它们的作用是单向的。在 React 中,当用户操作View 层的按钮或表单输入等需要更新Modal时,必须通过相应的 Actions 来进行操作。

Vue在中国公司的项目开发中非常流行,因为它具有上手快、轻量化的特点,并且文档对国人更友好。一些小型的、逻辑简单的项目大多使用Vue框架构建。

Vue是尤雨溪开发的一款开源的、构建用户界面的渐进式框架。Vue的官方地址如图2.2所示。

Vue的模板语法基于HTML的模板语法,并有特定的一套规则,例如插值语法,包括文本插值、Attribute插值等;指令语法,包括绑定事件的内部指令v-bind、v-on、v-model等,以及自定义指令;修饰符,v-on:submit.prevent等。

图2.2  Vue官方网站

与React类似,在底层机制中,Vue会将模板编译成JavaScript代码。结合响应式系统,当应用状态变更时,Vue能够智能地推导出需要重新渲染的组件的最少数量,并应用最少的DOM操作。

Vue支持单向数据绑定和双向数据绑定。

l 单向数据绑定时,使用v-bind属性绑定、v-on事件绑定或插值形式{{data}}。

l 双向数据绑定时,使用v-model指令,用户对View的更改会直接同步到Model。v-model本质是v-bind和v-on相组合的语法糖,是框架自动帮我们实现了更新事件。换句话说,我们完全可以采取单向绑定,自己实现类似的双向数据绑定。

Angular诞生于2009年,其出现的时间要早于React和Vue,它是一款来自谷歌的开源的Web前端框架,Angular的官方网站如图2.3所示。

图2.3  Angular官方网站

Angular的模板功能强大、丰富,并且还引入了Java的一些概念,是一款大而全的框架,更侧重于大型前端工程的构建,为开发人员屏蔽项目构建底层的细节提出了自己的一套解决方案。

使用Angular的难点是学习曲线比较陡峭,优点是由于使用了标准化的开发方式,后期能极大地提高开发生产力,提高开发效率。

AngularJS支持单向数据绑定和双向数据绑定。

l 单向数据绑定时,使用ng-bind指令或插值形式{{data}}。

l 双向数据绑定时,使用ng-model指令,用户对View的更改会直接同步到Model。

2.4  如何选型

框架选型由多个因素决定,例如项目的类型、项目的复杂程度以及项目组成员的技能掌握情况。

React适合多组件的应用程序,另外对于具有扩展和增长可能的项目,由于React组件具有声明性,因此它可以轻松处理此类复杂结构。

Vue由于具有可接受且快速的学习曲线,因此最适合解决短期的小型项目,例如,业务逻辑简单、不需要处理复杂数据结构的项目。

Angular 最适合大型和高级项目,用于创建有着复杂基础架构的大型企业应用程序。

本文节选自《React.js+Node.js+MongoDB企业级全栈开发实践》,获出版社和作者授权共享。

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

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

相关文章

mysql原理--连接的原理

1.连接简介 1.1.连接的本质 为了故事的顺利发展&#xff0c;我们先建立两个简单的表并给它们填充一点数据&#xff1a; mysql> CREATE TABLE t1 (m1 int, n1 char(1)); mysql> CREATE TABLE t2 (m2 int, n2 char(1)); mysql> INSERT INTO t1 VALUES(1, a), (2, b), (…

内衣洗衣机哪个牌子好用?十款小型洗衣机质量排名

最近这两年在洗衣机中火出圈的内衣洗衣机&#xff0c;它不仅可以清洁我们较难清洗的衣物&#xff0c;自带除菌功能&#xff0c;可以让衣物上的细菌&#xff0c;还能在清洗的过程中呵护我们衣物的面料&#xff0c;虽然说它是内衣洗衣机&#xff0c;它的功能不止可以清洗内衣&…

2024最新最全【JVM进阶】教程,零基础入门到精通

目录 1.栈1-1.栈帧1-2.栈帧的组成 2.堆2-1.对象的组成 3.本地方法栈4.程序计数器5.方法区<font color"red">如<font color"orange">果<font color"#FFEB05">你<font color"green">也<font color"skyb…

Android应用-Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解

文章目录 Dismissible 简介使用场景常用属性基本用法举例注意事项 Dismissible 简介 Dismissible 是 Flutter 中用于实现可滑动删除或拖拽操作的一个有用的小部件。主要用于在用户对列表项或任何其他可滑动的元素执行删除或拖动操作时&#xff0c;提供一种简便的实现方式。 使…

【flink番外篇】5、flink的window(介绍、分类、函数及Tumbling、Sliding、session窗口应用)介绍及示例 - 完整版

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

文件的基本管理

目录 一、Linux系统目录结构和相对/绝对路径 &#xff08;一&#xff09;系统目录结构 &#xff08;二&#xff09;相对路径和绝对路径 1.绝对路径 2.相对路径 &#xff08;三&#xff09;通配符的作用 二、创建、复制、删除文件&#xff0c;rm -rf /意外事故 &#xf…

2022年智能算法之凌日搜索算法(TS),原理公式详解,附matlab代码

凌日搜索算法&#xff08;Transit Search&#xff0c;TS&#xff09;是一种新型元启发式优化算法&#xff0c;该算法基于著名的系外行星探测方法&#xff0c;具有寻优能力强、进化能力强、搜索速度快的特点。该成果于2022年发表在知名SCI期刊Results in Control and Optimizati…

最强的AI视频去码图片修复模型:CodeFormer

1 CodeFormer介绍 1.1 CodeFormer解决的问题 CodeFormer是由南洋理工大学-商汤科技联合研究中心S-Lab在NeurIPS 2022上提出的一种基于VQGANTransformer的人脸复原模型。该方法基于预训练VQGAN离散码本空间&#xff0c;改变复原任务的固有范式&#xff0c;将人脸复原任务转成C…

Zookeeper-集群架构

Zookeeper集群架构 集群角色 Leader&#xff1a; 领导者 事务请求&#xff08;写操作&#xff09;的唯一调度者和处理者&#xff0c;保证集群事务处理的顺序性&#xff1b;集群内部各个服务器的调度者。对于create、setData、delete等有写操作的请求&#xff0c;则要统一转发…

Leetcode—46.全排列【中等】

2023每日刷题&#xff08;六十六&#xff09; Leetcode—46.全排列 算法思想 对于排列来说&#xff0c;我们需要考虑数字之间的相对顺序&#xff0c;不同的相对顺序会产生不同的排列方式。此外&#xff0c;序列中的每个数字一定存在于每个排列当中。因此&#xff0c;不能依次…

【学习笔记】Java函数式编程02——Stream流

文章目录 三、Stream流3.1 概述3.2 快速入门3.2.1 数据准备3.2.2 场景练习3.2.2.1 场景一、遍历所有作家并打印:star:使用stream()流的forEach方法 3.2.2.2 场景二、打印所以年龄小于18的作家名字&#xff0c;并且注意去重:star:distinct()方法:star:filter()方法 3.2.2.3 场景…

【数据结构和算法】定长子串中元音的最大数目

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;滑动窗口 2.2 方法二&#xff1a;滑动窗口优化版 三、代码 3.1 方法一&#xf…

Python-基于fastapi实现SSE流式返回(类似GPT)

最近在做大模型对话相关功能&#xff0c;需要将对话内容流式返回给前端页面&#xff08;类似GPT的效果&#xff09;。下面直接说下如何实现&#xff1a; 1.首先导入fastapi和sse流式返回所需要的包 from fastapi import APIRouter, Response, status from sse_starlette.sse …

【数据结构和算法】子数组最大平均数 I

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 滑动窗口含义 2.2 滑动窗口一般解法 2.3 方法一&#xff1a;滑动窗口 三、代码 3.1 方法一&#…

数据挖掘体系介绍

数据挖掘是什么&#xff1f; 简而言之&#xff0c;对数据进行挖掘&#xff0c;从中提取出有效的信息。一般我们会把这种信息通过概念、规则、规律、模式等有组织的方式展示出来&#xff0c;形成所谓的知识。特别是在这个大数据时代&#xff0c;当数据多到一定程度&#xff0c;…

Jenkins 执行远程脚本的插件—SSH2 Easy

SSH2 Easy 是什么&#xff1f; SSH2 Easy 是一个 Jenkins 插件&#xff0c;它用于在 Jenkins 构建过程中通过 SSH2 协议与远程服务器进行交互。通过该插件&#xff0c;用户可以在 Jenkins 的构建过程中执行远程命令、上传或下载文件、管理远程服务器等操作。 以下是 SSH2 Eas…

用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表)

一、模型user对象>和数据库的字段关联 & 自动生成 【其中涉及删除表数据&#xff0c;一切又从零开始】 二、模型user对象>和数据库的字段关联 2.1在model文件夹下&#xff0c;新建 user对象 2.1.1 概念 大家可以想象我们现在的数据是存储在数据库里的&…

HOT 100 最难的题居然是游戏厂的最爱

写在前面 翻看 网易 历年笔面题单的时候&#xff0c;发现一道有意思的题目。 该题评论区&#xff0c;网易 的踪影很少&#xff0c;反而被那些在 4399 笔试中遇到的同学所攻陷&#xff1a; 好嘛&#xff0c;所以这道题还是「游戏厂」的最爱&#xff1f;&#xff01;&#x1f923…

Ubuntu 常用命令之 fdisk 命令用法介绍

fdisk 是一个用于处理磁盘分区的命令行工具,它在 Linux 系统中广泛使用。fdisk 命令可以创建、删除、更改、复制和显示硬盘分区,以及更改硬盘的分区 ID。 fdisk 命令的常用参数如下 -l:列出所有分区表-b:设置扇区大小,如果不设置,默认为 512 字节-u:改变显示/输入单位-…

亚马逊鲲鹏系统引爆广告点击率提升秘籍

在竞争激烈的电商市场&#xff0c;提高广告点击率成为各大卖家争相追求的目标。而如今&#xff0c;亚马逊鲲鹏系统的强大功能再次为卖家们打开了广告优化的新大门。其中&#xff0c;搜索广告功能更是成为提高关键词排名的利器。本文将详细介绍如何通过亚马逊鲲鹏系统实现点击广…