三大主流前端框架介绍

在前端项目中,可以借助某些框架(如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企业级全栈开发实践》,获出版社和作者授权共享。

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

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

相关文章

JS的浅拷贝和深拷贝

首先理解什么是浅拷贝和深拷贝&#xff1a; 浅拷贝&#xff1a; 浅拷贝只会复制对象的第一层属性&#xff0c;而不会递归地复制嵌套的对象。浅拷贝仅复制对象的引用&#xff0c;新对象和原始对象仍然共享相同的引用&#xff0c;因此对新对象的修改可能会影响到原始对象。浅拷…

三子棋程序的讲解(4)

前期的准备工作基本上已经差不多了&#xff0c;还差一个如何判断胜负&#xff0c;我们的三子棋就大功告成了。相信大家都玩过三子棋&#xff0c;胜利的方式实际上非常的简单&#xff0c;只需要任意一行&#xff08;或者任意一列&#xff0c;或者任意对角线&#xff09;&#xf…

普通的GET和POST请求

一般使用步骤 使用HttpClient发送请求、接收响应&#xff0c;一般需要以下步骤。 HttpGet请求响应的一般步骤&#xff1a; 1). 创建HttpClient对象,可以使用HttpClients.createDefault()&#xff1b; 2). 如果是无参数的GET请求&#xff0c;则直接使用构造方法HttpGet(String u…

Java小案例-SpringBoot火车票订票购票票务系统

目录 前言 详细资料 源码获取 前言 SpringBoot火车票订票购票票务系统 前端使用技术&#xff1a;HTML5,CSS3、JavaScript、VUE等 后端使用技术&#xff1a;Spring boot&#xff08;SSM&#xff09;等 数据库&#xff1a;Mysql数据库 数据库管理工具&#xff1a;phpstud…

Leetcode 162. 寻找峰值(Java + 二分)

题目 162. 寻找峰值峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums&#xff0c;找到峰值元素并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] nums[n] -∞ 。你必须实现时…

Mybatis配置-类型处理器(typeHandlers)

每当MyBatis设置PreparedStatement的参数或从ResultSet中检索值时&#xff0c;都会使用TypeHandler以适合Java类型的方式来检索值。下表描述了默认的TypeHandlers。 自MyBatis 3.4.5版本起&#xff0c;默认支持JSR-310&#xff08;日期和时间API&#xff09;。 Type HandlerJ…

JavaSE学习笔记 Day17

JavaSE学习笔记 Day17 个人整理非商业用途&#xff0c;欢迎探讨与指正&#xff01;&#xff01; 上一篇 文章目录 JavaSE学习笔记 Day17十五、异常15.1异常的概念15.2异常处理的重要性15.3Throwable类15.4Exception类15.4.1运行期异常15.4.2编译期异常 15.5异常处理机制15.5.1…

Redis整合Lua脚本

文章目录 一、Lua介绍1.1 Lua特点 二、在Redis里调用lua脚本2.1 redis-cli 命令执行脚本2.2 eval命令执行脚本2.3 return返回脚本运行结果2.4 Redis和lua相关的命令2.5 观察lua脚本阻塞Redis 三、进阶3.1 参数传递KEYS和ARGV参数redis-cli --eval 和eval命令 3.2 流程控制分支语…

tp8 模型save保存方法 method not exist:think\db\Query->record

1.$schema 有一个字段存在&#xff0c;但是实际表中是缺少这个字段的 2.必填值&#xff0c;没有值

在 C++ 中局部变量和全局变量

在C中&#xff0c;局部变量和全局变量的地址值有以下区别&#xff1a; 存储位置&#xff1a; 局部变量&#xff1a;局部变量存储在栈&#xff08;stack&#xff09;上。每当函数被调用时&#xff0c;局部变量的存储空间会被分配&#xff0c;并在函数执行完毕后自动释放。全局变…

什么是关键词排名蚂蚁SEO

关键词排名是指通过搜索引擎优化&#xff08;SEO&#xff09;技术&#xff0c;将特定的关键词与网站相关联&#xff0c;从而提高网站在搜索引擎中的排名。关键词排名对于网站的流量和用户转化率具有至关重要的影响&#xff0c;因此它是SEO工作中最核心的部分之一。 如何联系蚂…

二叉树的最大深度(LeetCode 104)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一&#xff1a;深度优先搜索GolangC 方法二&#xff1a;广度优先搜索GolangC 参考文献 1.问题描述 给定一个二叉树 root &#xff0c;返回其最大深度。 叉树的「最大深度」是指从根节点到最远叶子节点的最长路径上的节…

【SpringMVC】SpringMVC简介、过程分析、bean的加载和控制

文章目录 1. SpringMVC简介2. SpringMVC入门案例文件结构第一步&#xff1a;坐标导入第二步&#xff1a;创建SpringMVC容器的控制器类第三步&#xff1a;初始化SpringMVC环境&#xff0c;设定Spring加载对应的bean第四步&#xff1a;初始化Servlet容器&#xff0c;加载SpringMV…

AI电子秤---顶尖电子秤对接+AI服务

上文我们说道,要实现整个AI识别过程,我们需要电子秤+AI服务,本文将以顶尖OS2电子秤+某AI服务为例完成整个过程 1、电子秤通信 通常电子秤是以串口形式进行通信,这里需要注意的是,某些设备可能是有信号才进行数据通信,有些则可能是持续输出的,具体取决于对接电子秤品牌…

Leetcode sql50基础题最后的4题啦

算是结束了这个阶段了&#xff0c;之后的怎么学习mysql的方向还没确定&#xff0c;但是不能断掉&#xff0c;而且路是边走边想出来的。我无语了写完了我点进去看详情都不让&#xff0c;还得重新开启计划&#xff0c;那我之前的题解不都没有了&#xff01;&#xff01; 1.第二高…

软件测试的魅力何在?为什么很多人选择测试一行而不做开发?

术有专攻&#xff0c;开发和测试都有自己的技术栈领域&#xff0c;谁也代替不了谁。 接下来我就首先说说本人为什么不做开发&#xff0c;而是选择了测试&#xff1b;其次再谈谈测试的魅力。 问题1&#xff1a;为什么选择测试一行而不做开发&#xff1f; 个人工作12年&#xf…

《一书读懂物联网》前言

我们对知识的认知是有规律可循的&#xff0c;大都是从问题开始&#xff0c;对问题的界定、归纳等都是为解决知识增长或进化而服务的&#xff0c;正如波普尔知识进化图&#xff08;见图 i-1&#xff09;所示的那样。 科学始于问题&#xff0c;发现问题是科学知识增长的起点&…

软件开发模型

软件的“生命周期”一般分为6个阶段&#xff0c;即制定计划、需求分析、设计、编码、测试、运行和维护。在软件工程中&#xff0c;这个复杂的过程一般用软件开发模型来描述和表示。常见的软件开发模型有&#xff1a;以软件需求为前提的瀑布模型&#xff0c;渐进式开发模型(如螺…

华为OD机试 - 跳格子3(Java JS Python C)

题目描述 小明和朋友们一起玩跳格子游戏, 每个格子上有特定的分数 score = [1, -1, -6, 7, -17, 7], 从起点score[0]开始,每次最大的步长为k,请你返回小明跳到终点 score[n-1] 时,能得到的最大得分。 输入描述 第一行输入总的格子数量 n 第二行输入每个格子的分数 sc…

【C++】POCO学习总结(十九):哈希、URL、UUID、配置文件、日志配置、动态库加载

【C】郭老二博文之&#xff1a;C目录 1、哈希 1.1 说明 std::map和std::set 的性能是&#xff1a;O(log n) POCO哈希的性能比STL容器更好&#xff0c;大约快两&#xff1b; POCO中对应std::map的是&#xff1a;Poco::HashMap&#xff1b; POCO中对应std::set的是 Poco::Hash…