Web前端框架/库/工具

news/2024/5/10 8:30:15

前言

俗话说:前端从步枪(原生js)到了半自动武器(jQuery)并进化为全自动武器(三大框架(angular,react,vue及其生态链))。

常说工欲善其事必先利其器。对于那些想要提高用户体验的企业来说,这一点尤其正确。在我们所处的数字世界中,给予UI或用户界面更多关注是一件非常必要的事。

先分清六个基本概念:Library 库(方法库,实现特定需求的API集合;UI组件库,满足特定业务需要的高可复用的常见UI组件集合),Toolkit工具箱(例如创建现代响应式页面所需的工具集合,包含一整套完整的响应式CSS类库,UI组件,衍生UI库),Framework框架(用来构建应用的主体结构,然后在这个主体结构上添砖加瓦,实现各种业务需求),Design设计语言(指导UI设计需要遵循的一些约束。包括:色彩、布局、层次、交互反馈等等,设计与实现是松耦合,同一种设计可以有无数种实现),Boilerplate模版(类似全家桶最佳实践),Scaffolding脚手架工具(Command Line Interface ,cli类似建筑工地的外层钢管架、绿色保护网、建材吊车等等,它们都不是最终成果的一部分)。基本概念对于学习技术很重要,需要在实践中多思考和领悟。

在这里,我将简要地讨论前端框架在创建交互式网站方面的重要性,并提供一个推荐用于网络开发的顶级框架列表。

  • React.js
  • jQuery
  • Angular
  • Express
  • ASP.NET Core
  • Vue.js
  • ASP.NET

让我们来具体看一看每个框架。

JavaScript是最基本手工工具,jQuery是博世电动工具,vue.js和elementUI是做好的简易门、窗、桌子、凳子。

c8b9ef087d6d4c3484b2a16d97fe5775.png

5f33d5d8c974469e81e2e8aabd6f30f5.png

ae56334462e34ad285125af01b9c210a.png

e0cf32a92e7042b9a48a7cdff16164af.png

06ac909166974257a430dd9f7b54d3d6.png

三大框架,大量采用设计模式,基于架构思想;

比如单例(angular中的服务)、观察者(数据绑定、事件、消息)、装饰(框架组织各对象、指令)之类设计模式;

比如 mvvm 模式架构,代码分层,组织各职责(模块、模型、服务、控制器、组件、视图)对象,使之协作,如 vm 粘合视图和模型。

而 jQuery、Bootstrap UI、Lodash 之类框架/库/工具,提供的是特定功能对象,有采用设计模式实现功能,如 jQuery 外观模式各种 Ajax 操作,但无对整个项目工程的组织。

都是解决软件工程中各种痛点,关注点、切入点不一样,都很复杂。

简而言之:三大前端框架中的vue和react,就是视图层的library,angular稍重一点,属于大而全的framework,jQuery是一个工具库,与underscore和lodash相比,前者侧重于DOM与BOM相关的web api,后者侧重数据与逻辑,bootstrap,一种响应式的设计模式,同时提供了快速开发所需的css代码,ui组件和设计范式,elementui,layui,easyui这些都属于ui库了,用于视图层快速搭建某一类风格页面的“物料”。

一、React.js

发布年份 - 2013年开发单位 - Meta (Facebook)

React.js是一个由Facebook开发的JavaScript库,有助于创建交互式UI。它通过为个人网站构建互动元素,在网络开发中提供支持。

使用React.js的优点和缺点

优点:

  • 开发人员可以很容易地在一个小的组件中进行修改。
  • 组件得以重复利用,避免反复开发。
  • 拥有大量的开发人员,大量技术支持。
  • 使用谷歌搜索引擎,索引很简单。

缺点:

  • 因为更新换代太快,编写文档变得困难。
  • 由于React.js的开发速度缓慢,它可能需要开发人员重新学习流程。
  • 虽然可有可无,但有可能出现的JSX可能在很大程度上使新的开发者感到困惑。
  • 在React.js上,索引有时可能是个难题。

二、jQuery

发布年份 - 2006开发者 - jQuery团队

jQuery是一个快速、小型且以功能为中心的JavaScript库,它使动画和HTML文档遍历等任务变得容易。

它还提供了技术支持,以确保使用该框架开发的网站具有多功能性和可扩展性。简言之,它改变了开发者编写JavaScript的方式。

使用jQuery的优点和缺点

优点:

  • 开发灵活性较高的Ajax模板变得很容易。所以避免了闪屏刷新,使网站使用更丝滑。
  • 该网站有一套大型的文档和教程。这使得前端开发者可以轻松地学习网页开发的基础知识。
  • 不同的功能变得容易执行。

缺点:

  • 与其他CSS相比,表现缓慢。
  • 如果在没有强大的JS基础上使用jQuery,错误是不可避免的。
  • 由于jQuery的开放源码性质,不易拓展修改。

三、Angular

发布年份 - 2016年开发单位 - 谷歌

被称为现代网络开发人员的库,Angular为专业人士提供了灵活性,提高了网站的开发速度。它为开发专家提供技术支持,以获得对可扩展性的最终控制。因此,满足数据要求变得很容易。

Angular的优点和缺点

优点:

  • 拥有一个优秀而丰富的材料设计库,确保网站具有很高的质量。
  • 其中的代码是可读的,也是可以测试的。
  • 提高了开发的速度和性能。

缺点:

  • 对SEO爬虫的可访问性差,使其难以执行优化网站的任务。
  • 由于没有服务器授权和认证支持,授权等任务变得很困难。因此,用户授权和数据安全访问也成为了挑战。

四、Ember.js

发布年份 - 2011年开发单位 - Ember核心团队

Ember.js是一个开源的JavaScript网络框架,协助开发者创建单页网站。由于其中API的存在,开发任务得到简化。

使用Ember.js的优点和缺点

优点:

  • 理解写好的代码很容易,因此对所有的开发者来说,完成一个项目是一个简单的任务。
  • 通过它可以顺利地保证数据管理。
  • 提供双向的数据绑定支持。

缺点:

  • 拥有复杂的语法。
  • 拥有非常少的在线资源,因此学习使用它可能很困难。
  • 对配置的依赖性会更大。

五、ASP.NET CORE

发布年份 - 2016年开发者 - .NET基金会

作为微软在2016年推出的免费开源框架,ASP.NET Core有助于提高网络性能。它在运行不同的组件、API时以最稳定的速度提供支持。

使用ASP.NET Core的优点和缺点

优点:

  • 与旧版本(ASP.NET MVC)相比,它能提供约23倍的请求。
  • 由于其开源性质,它有助于提高总体质量。
  • 通过新集成的网络服务器Kestrel,简化了IT部门的工作。

缺点:

  • 学习该框架可能需要相当长的时间。
  • 工作流相关的服务,如Windows工作流基金会、工作流服务等,缺乏进入.NET核心的计划。
  • 第三方库支持缺失。因此,如果类库使用了可能不被支持的.NET框架API,那么兼容性可能成为一个问题。

六、Vue.js

发布年份 - 2014年开发者 - Evan You

一个开源的MVVM前端Web开发JS框架,它有助于建立互动的Web用户界面。它以高性能著称,也因使用反应式和编译器优化的渲染系统而闻名,几乎不需要依赖人工优化。它把object变成响应式对象:Object.defineProperty()允许精确地添加或修改对象上的属性,Object.defineProperty(obj, prop, descriptor);Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。const p = new Proxy(target, handler)。

Vue.js的优点和缺点

优点:

  • 在开发可能很复杂的项目时,使用方便。
  • 加速了整个开发过程。
  • 容易学习。具备良好的JavaScript知识就可以开始使用该框架了。

缺点:

  • 一个开发者所占比例小的小规模社区,不适合用于大型项目。
  • 拥有较少的插件,可能需要切换到其他语言。
  • 双向绑定可能是一项任务。因此,你需要扁平化代码以实现无感数据处理。

七、ASP.NET

发布年份 - 2022年

开发单位 - 微软

ASP.NET协助开发者使用C#创建直观和有吸引力的Web UI。.NET可以通过WebAssembly在浏览器中运行。

此外,它还确保了服务器和客户端之间的双向实时通信。它支持创建独立和易于部署的微服务,可以在Docker上顺利运行。

ASP .NET的优点和缺点

优点:

  • 编码时间大大减少。
  • 功能独特,具有高性能和高可扩展性。
  • 有通用语言运行时的框架语言基础,具有高灵活性。

缺点:

  • 服务器许可证和支付费用昂贵。
  • 文档理解困难。
  • 进行更新可能需要较长的时间。

了解了这些框架和它们不同的优缺点,让我们评估一下标准,以确保我们做出正确的选择。

如何正确选择前端框架

1、检查他们的核心功能并仔细阅读他们的文档。

2、选择一个可定制、可配置的框架。

3、分析它对服务器端渲染的支持。

一旦你了解到前端框架可以无缝地实现所有这些方面,你就爱上了使用它进行Web开发。

阅读这篇文章后,你可能对使用合适的前端框架有所了解。它将帮助你创建一个具有丰富用户界面的沉浸式网站,提供重要的商业价值。


http://www.mrgr.cn/p/84177720

相关文章

Mybatis入门——基础操作

介绍 什么是Mybatis?Mybatis是一款优秀的 持久层 框架,用于简化JDBC的开发。Mybatis本是Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了goole code,并且改名为Mybatis,2013年11月迁移到GitHub。 官网:https://mybatis.org/mybatis-3/zh_CN/index.html快速入…

C++必修:类与对象(一)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C学习 贝蒂的主页:Betty’s blog 1. 面向过程与面向对象 1.1. 面向过程 我们之前学习的C语言就是一种面向过程的语…

vscode侧边栏资源管理器重置

不知道点了哪里,资源管理器侧边栏只剩下一个npm脚本选项卡了,找解决方案找了好久,卸载了vscode都没用,还是因为我的搜索方式不对,最后终于找到了,记录下先 问题图:第一步:按curl + shilt + P 第二步:输入View: Reset View Locations

一文看懂什么是回调函数

文章目录一、什么是回调函数 二、回调示例 三、回调函数的应用场景 四、回调函数的优点 五、回调函数的注意事项一、什么是回调函数回调函数是一种在编程中常见的概念,它是指一个函数作为参数传递给另一个函数,并且在特定事件发生或条件满足时被调用执行的函数。 二、回调示例…

MySQL8.0.22安装

MySQL8.0.22安装及配置(超详细)大家好,今天我们来学习一下 MySQL8.0.22安装及配置,好好看,好好学,超详细的第一步进入MySQL官网下载,如下图所示:第二步进入下载完成后解压到除c盘以外的盘,如下图所示:第三步解压后的目录并没有的my.ini文件,没关系可以自行创建在安装根…

报错import build constraints exclude all Go files in

好久没用fyne突然报错 报错import ...go-gl.. build constraints exclude all Go files in go-gl .. 检查gcc --version正常输出 检查gcc版本正常,路径正常。 尝试解决的方法, 1.重新安装依赖,不行 2.重新配置下载地址,不…

Zephyr sensor子系统学习

一、背景 2023年7月份nRF Connect SDK 2.4.0最新版本,使用的Zephyr V3.3版本。从Zephyr 3.5版本在子系统中加入了sensing子系统。 现在最新的nRF Connect SDK 2.6.0 release支持v3.5.99-ncs1,已经支持sensing子系统 nRF52840现在官方支持两个传感器de…

数据库优化 索引(index)

介绍 索引是帮助数据库高效获取数据的数据结构优缺点: 优点:提高数据查询的效率,降低数据的IO成本。 通过索引列多数据进行排序,降低数据排序的成本,降低CPU消耗缺点:索引会占存储空间。 索引大大提高了查询效率,同时却也降低了insert、update、delete的效率结构 MySql数…

SpringMVC进阶(数据格式化以及数据校验)

文章目录 1.数据格式化1.基本介绍1.基本说明2.环境搭建 2.基本数据类型和字符串转换1.需求分析2.环境搭建1.data_valid.jsp首页面2.Monster.java封装请求信息3.MonsterHandler.java处理请求信息4.monster_addUI.jsp添加妖怪界面5.单元测试 3.保存妖怪信息1.MonsterHandler.java…

什么因素可以影响到代理IP稳定性?爬虫代理IP有哪些作用?

一、什么因素可以影响到代理IP稳定性 代理IP的稳定性受到多种因素的影响,以下是一些主要的因素: 代理IP的质量:不同的代理IP提供商提供的代理IP质量参差不齐,一些低质量的代理IP可能经常出现连接问题或速度慢的情况,…

5、Flink事件时间之Watermark详解

1)生成 Watermark 1.Watermark 策略简介 为了使用事件时间语义,Flink 应用程序需要知道事件时间戳对应的字段,即数据流中的每个元素都需要拥有可分配的事件时间戳。 通过使用 TimestampAssigner API 从元素中的某个字段去访问/提取时间戳。…

linux2-ls

lsls , list directory contents, 在命令行中, 以平铺的形式, 展示当前工作目录(默认为/home/用户名 目录)下的内容(文件和文件夹)ls # 默认为ls /home/用户名 lsls -h -h, human-readable, 表示以易于阅读的形式, 列出文件的大小(如K,M,G) 不能单独使用, 要和-l混合使用 ls -h…

穿越物联网的迷雾:深入理解MQTT协议

目录标题 1、MQTT简介核心特性 2、MQTT的工作原理通信过程 3、MQTT的消息质量(QoS)4、安全机制5、实践应用环境准备示例项目发布者客户端订阅者客户端 6、最佳实践7、结论8、参考资料 在物联网(IoT)的海洋中,数据像水流…

架构师系列- 消息中间件(12)-kafka基础

1、应用场景 1.1 kafka场景 Kafka最初是由LinkedIn公司采用Scala语言开发,基于ZooKeeper,现在已经捐献给了Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以 高吞吐、可持久化、可水平扩展、支持流处理等多种特性而被广泛应用…

ubutu ac68

1、直接去 https://github.com/morrownr/8814au 下载编译,运行 install-driver.sh,重启后 2、 3、 断开再连,然后usb拔掉再插,选择 虚拟机的系统 4 抓 https://blog.csdn.net/weixin_41856150/article/details/102327913

《痞子衡嵌入式半月刊》 第 98 期

痞子衡嵌入式半月刊: 第 98 期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :《…

刷题训练之前缀和

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟练掌握前缀和算法。 > 毒鸡汤:学习,学习,再学习 ! 学,然后知不足。 > 专栏选自:刷题…

瑞士轮——结构体(快速排序 or 归并排序?)

瑞士轮——结构体&&(快速排序 or 归并排序?)题目链接:https://www.luogu.com.cn/problem/P1309 题意应该非常明确了(这里就不细讲了):有2*N个人,首先根据成绩进行排序,相邻的两个人进行比赛,强的人成绩+1,输的人成绩不变,最后又根据成绩进行排序,进行r次操作,…

管理集群工具之LVS

管理集群工具之LVS 集群概念 将很多机器组织在一起,作为一个整体对外提供服务集群在扩展性、性能方面都可以做到很灵活集群分类 负载均衡集群:Load Balance高可用集群:High Availability高性能计算:High Performance Computing …