迷失在前端框架中的初级开发者,总觉得大厦要从二层开始建

知乎有人提问:现在是框架主导前端时代,还有必要学习Html,CSS和JavaScript吗?我看很愕然,框架可以节省力气,难道都可以替代前端基础了吗?

一、起因

因为贝格前端工场的主营业务就是前端开发,少不了和各类前端开发人员打交道,高手见过N多,新手也见过N多。

新手有个特点,每次和聊,言必称框架,框架,框架,还给我展示自己用框架做的案例,其实所谓案例,就照着教程把预制菜加热一下而已,压根就不了解框架背后来龙去脉,原理等,所谓的能有也就是跟着教程一步步走,场景略有变化,立马就歇菜了。

这些都可以理解,毕竟是新手嘛,啥都会还叫新手?

相比这种,大部分公司还是希望用基础扎实的人,哪怕你不懂框架,html,css,JavaScript扎实,学框架也是很容易的事情。

所以本文就聊一聊前端框架的一些常识。


二、当前的三大框架

当前比较流行的三大前端框架分别是:


 


 

  1. Angular:由 Google 推出的一款前端框架,使用 TypeScript 语言编写,采用组件化开发模式,具有强大的数据绑定和依赖注入功能,适用于大型应用的开发。
  2. React:由 Facebook 推出的一款前端框架,采用组件化开发模式,使用 JSX 语法,具有高效的虚拟 DOM 和优秀的性能表现,适用于构建高性能、可复用的 UI 组件。
  3. Vue:一款轻量级的前端框架,由尤雨溪开发,采用 MVVM 模式,具有响应式的数据绑定和组件化开发模式,易于上手和学习,适用于中小型应用的开发。

三、前端框架产生的背景

前端框架的产生是由于前端开发的需求和发展所促成的。在 Web 应用程序的早期,前端开发主要是基于 HTML、CSS 和 JavaScript 进行的,开发者需要手动编写大量的代码来实现各种功能,这样的开发模式效率低下,代码难以维护。

随着 Web 应用程序的复杂度不断提高,前端开发面临着越来越多的挑战,例如需求变更、代码维护、性能优化等。为了解决这些问题,前端开发者开始尝试使用一些工具和框架来提高开发效率和代码质量。

最早的前端框架是 Backbone.js,它于2010年发布,它提供了一套基于 MVC 模式的开发框架,可以帮助开发者更好地组织代码和数据。随着时间的推移,越来越多的前端框架陆续出现,例如 Angular、React、Vue 等,它们提供了更加丰富和高效的功能和组件,可以帮助开发者更快速地构建复杂的 Web 应用程序。

前端框架的产生是由于前端开发的需求和发展所促成的,它们为前端开发者提供了更加高效和规范的开发模式,提高了开发效率和代码质量,成为了前端开发中不可或缺的重要工具。


三、前端框架对前端开发带来的帮助

前端框架可以对前端开发者带来以下几方面的帮助:

  1. 提高开发效率:前端框架提供了许多现成的组件和功能,开发者可以直接调用这些组件和功能,避免了重复开发的工作,提高了开发效率。
  2. 统一开发标准:前端框架可以提供统一的开发标准和规范,避免了开发者之间的差异性,提高了代码的可读性和可维护性。
  3. 提高代码质量:前端框架可以帮助开发者更好地组织和管理代码,提高了代码的可维护性和可扩展性,减少了代码出错的可能性,提高了代码的质量。
  4. 优化用户体验:前端框架可以提供许多优化用户体验的功能,例如响应式设计、动画效果等,提高了用户的满意度和体验。
  5. 降低学习成本:前端框架可以提供许多现成的组件和功能,开发者可以直接调用这些组件和功能,降低了学习和掌握新技术的成本。

前端框架可以帮助前端开发者提高开发效率、统一开发标准、提高代码质量、优化用户体验、降低学习成本等方面。


四、前端框架对前端开发的禁锢

前端框架可以提高前端开发效率,但同时也会对前端开发带来一些禁锢,主要表现为以下几个方面:

  1. 限制了创新:前端框架的设计思想和架构是由框架作者或团队预设的,开发者需要按照框架的规范来开发,这可能会限制开发者的创新能力,导致应用的创新程度不足。
  2. 依赖太多:前端框架通常依赖于许多其他的库和工具,这些依赖可能会导致开发者需要掌握更多的知识和技能,增加学习成本和开发难度。
  3. 性能问题:一些前端框架可能会导致应用性能下降,例如加载速度变慢、CPU 占用率过高等问题,这可能会影响用户体验和应用的可用性。
  4. 可维护性下降:前端框架通常会引入许多抽象层和中间件,这可能会导致代码的可读性和可维护性下降,增加了调试和维护的难度。
  5. 过度依赖框架:一些开发者可能会过度依赖前端框架,而忽略了对底层技术和原理的掌握,这可能会导致开发者的技术水平停滞不前,无法适应新的技术和需求。

前端框架对前端开发带来了一定的禁锢,开发者需要权衡使用框架的利弊,避免过度依赖框架,保持对底层技术和原理的掌握,以提高开发效率和代码质量。

五、可取的态度:打牢基础,使用框架但不迷失。

前端开发者对待框架的态度应该是理性和客观的。框架是一种工具,它可以帮助开发者提高开发效率、降低开发成本、提高代码质量等,但它并不是万能的,也不是解决所有问题的银弹。

因此,前端开发者应该具有以下正确的态度:

  1. 熟练掌握框架的使用:前端开发者应该深入了解所使用的框架的各种功能和组件,熟练掌握其使用方法和技巧,以便更好地利用框架提高开发效率和代码质量。
  2. 理性选择框架:前端开发者应该根据项目需求和自身技能水平,理性选择适合的框架,不要盲目跟风或者追求新潮流,因为每个框架都有其优缺点和适用场景。
  3. 理解框架的原理和机制:前端开发者应该深入理解框架的原理和机制,而不是仅仅会使用框架提供的 API,这样可以更好地发挥框架的优势,同时也可以更好地解决框架的问题和缺点。
  4. 不断学习和更新:前端开发者应该不断学习和更新自己的知识和技能,了解最新的前端技术和框架,以便更好地适应不断变化的前端开发环境。

后记

回到前面那个人的提问,有了框架是不是就不用学html,css和JavaScript了,恰恰相反,这些框架都在指出,学习之前要具备html、css和JavaScript的基础。

有位网友直接回复了题主一句话:你见过那栋楼是从二层开始盖的。
说的十分贴切。

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

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

相关文章

【中英双语】OpenAI Sora文本转视频模型的技术分析!全新的AI视频叙事时代即将到来!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

Shellcode免杀对抗(C/C++)

Shellcode C/C免杀,绕过360安全卫士、火绒安全、Defender C/C基于cs/msf的上线 首先是测试一下shellcode上线,主要是俩种方法 测试环境 攻击机:kali2023 靶机:win10 msf方法 首先是启动msf msfconsole 然后msf生成一个sh…

【C语言】linux内核tcp/ip协议代码

一、linux内核tcp/ip协议源码有哪些? Linux内核中实现TCP/IP协议栈的源代码主要位于内核源码树的net/ipv4和net/ipv6目录下,针对IPv4和IPv6协议。不单是TCP/IP协议,还包含了UDP以及其他相关的网络层协议实现。 这里是一些与TCP/IP协议栈相关…

云计算基础-存储虚拟化(深信服aSAN分布式存储)

什么是存储虚拟化 分布式存储是利用虚拟化技术 “池化”集群存储卷内通用X86服务器中的本地硬盘,实现服务器存储资源的统一整合、管理及调度,最终向上层提供NFS、ISCSI存储接口,供虚拟机根据自身的存储需求自由分配使用资源池中的存储空间。…

对账中心系统架构设计与实现的实践总结

随着数字化时代的到来,越来越多的企业开始使用对账中心系统来管理其财务交易。对于一个成功的对账中心系统,其架构设计和实现非常关键。本文将探讨对账中心系统架构设计与实现的重要性、关键原则和实施过程中需要考虑的要点,帮助企业构建强大…

模型训练 —— AI算法初识

一、背景 AI算法中模型训练的主要目的是为了让机器学习算法从给定的标注数据中学习规律、特征和模式,并通过调整模型内部参数,使模型能够对未见过的数据进行准确预测或决策。具体来说: 1. **拟合数据**:模型通过训练来识别输入数…

【Spring篇】 项目加盐加密处理

目录 1. MD5 加密算法 2. 加盐加密流程 3. Spring Security 实现加盐加密 1. 添加 Spring Security 框架 2. 关闭 Spring Security 认证 3.实现加盐加密 1. MD5 加密算法 MD5 是 Message Digest Algorithm 的缩写,译为信息摘要算法,它是 Java …

QGIS004:【08图层工具箱】-导出到电子表格、提取图层范围

摘要:QGIS图层工具箱常用工具有导出到电子表格、提取图层范围等选项,本文介绍各选项的基本操作。 实验数据: 链接:https://pan.baidu.com/s/1ZK4_ShrQ5BsbyWfJ6fVW4A?pwdpiap 提取码:piap 一、导出到电子表格 工具…

【Web】CTFSHOW java刷题记录(全)

目录 web279 web280 web281 web282 web283 web284 web285 web286 web287 web288 ​web289 web290 web291 web292 web293 web294 web295 web296 web297 web298 web299 web300 web279 题目提示 url里告诉我们是S2-001 直接进行一个exp的搜 S2-001漏洞分析…

文件夹删不掉,显示在另一个文件中打开怎么办

问题: 一、想要删掉这个文件夹,却因为文件夹中的文件打开了删不掉,这里我因为做的测试,所以是知道打开了什么 二、一般情况下文件比较多时,是不知道打开了什么的,长这个样子 解决: 一、打开任…

JAVA面试题并发篇

1. 线程状态 要求 掌握 Java 线程六种状态 掌握 Java 线程状态转换 能理解五种状态与六种状态两种说法的区别 六种状态及转换 分别是 新建 当一个线程对象被创建,但还未调用 start 方法时处于新建状态 此时未与操作系统底层线程关联 可运行 调用了 start 方法…

初识数据库:探索数据的世界

初识数据库:探索数据的世界 1. 什么是数据库?2. 数据库的类型2.1 关系型数据库(RDBMS)2.2 非关系型数据库(NoSQL) 3. 为什么使用数据库?4. 如何选择合适的数据库?5. 结语 在信息技术…

【TC3xx芯片】TC3xx芯片SMU模块详解

目录 前言 正文 1.SMU功能概述 1.1 SMU架构 1.2 SMU_core 1.3 SMU_stdby 2. SMU功能详述 2.1 SMU_core 2.1.1 Reset类型 2.1.2 接口(Interfaces)概述 2.1.2.1 SMU_core到SCU的接口 2.1.2.2 SMU_core到IR的接口 2.1.2.3 SMU_core到Ports(Err…

Python绘制折线图、散点图...Pyplot库功能使用示例大全

matplotlib.pyplot库功能使用示例,Python绘制折线图、散点图... 1、简单折线图示例2、设置中文字符,解决乱码问题3、添加标记格式4、添加y值标记5、添加图例6、设置字体大小7、设置坐标轴起点数值8、绘制多条折线9、散点图基础示例 matplotlib.pyplot库是…

解析工信部印发的《工业控制系统网络安全防护指南》

文章目录 前言工业控制系统网络安全防护指南一、安全管理(一)资产管理(二)配置管理(三)供应链安全(四)宣传教育 二、技术防护(一)主机与终端安全(…

tf.linspace时出现Could not find valid device for node.

背景: 在使用tensorflow2.x的时候,当使用tf.linspace的时候会出现如下的报错: import os os.environ[TF_CPP_MIN_LOG_LEVEL] 2import tensorflow as tf from tensorflow import keras import numpy as npdef out():# x tf.constant(np.arange(12).re…

Python爬虫之Splash详解

爬虫专栏:http://t.csdnimg.cn/WfCSx Splash 的使用 Splash 是一个 JavaScript 渲染服务,是一个带有 HTTP API 的轻量级浏览器,同时它对接了 Python 中的 Twisted 和 QT 库。利用它,我们同样可以实现动态渲染页面的抓取。 1. 功…

【51单片机】AD模数转换DA数模转换(江科大)

1.AD/DA介绍 AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号 AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理…

常用的正则表达式,收藏必备!!!

正则表达式是一种强大的文本模式匹配工具,用于在字符串中查找、替换和验证特定模式的文本。下面是一些常用的正则表达式示例: 匹配Email地址: ^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$匹配URL: ^(https?|ftp)://[^\s/$.?#…

【python】python入门(变量名)

Hi~ o(* ̄▽ ̄*)ブ今天一起来看看python入门之变量名吧~~ 变量名的规定: 举个例子: “违法”的变量名们 my love/my !love错误:中间不能是空格或者其他符号1my_love错误:不能数字开头"my_l…