前端到全栈进阶之“前端框架”

这篇具有很好参考价值的文章主要介绍了前端到全栈进阶之“前端框架”。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从前端入门到全栈-系列介绍

  • 你会学到什么?

可能学不到什么东西,该系列是作者本人工作和学习积累,用于复习

  • 系列介绍

现在的 Web 前端已经离不开 Node.js,我们广泛使用的 Babel、Webpack、工程化都是基于 Node 的,各个互联网大厂也早已大规模落地 Node 项目。因此,想要成为一名优秀的前端工程师,提升个人能力、进入大厂,掌握 Node.js 技术非常有必要。

Node.js 不仅可以用来完善手头的开发环境,实现减少代码和 HTTP 请求,降低网页请求消耗的时间,提升服务质量。还可以扩展前端工程师的工作领域,用作 HTTP 服务,让前端也能完成一部分后端的工作,减少对后端的依赖,降低沟通成本,提升开发效率。

而且,Node.js 和浏览器的 JavaScript 只是运行时环境不同,编程语言都是 JavaScript ,所以掌握 Node.js 基础对前端工程师来说并不难,难点在于应用。由于浏览器的 JavaScript 主要是负责内容呈现与交互,而 Node.js 应用领域包括工具开发、Web 服务开发和客户端开发,这些都与传统的Web前端领域不一样,用来应对不同的问题。

  • 适宜人群
  • 对 Node.js 感兴趣的 JavaScript 程序员

  • 希望拓展知识边界,往全栈方向发展的前端工程师

  • 知识面涉及,前端,后端,运维,脚本

前端框架的核心概念主要包括以下几点,不同的框架可能有所不同,但大多数前端框架都通常包含以下概念:

组件

组件化思想就是将界面划分为一些独立的、可复用的部分,每部分被称之为一个"组件"。每个组件都可以包含自己的布局(HTML)、样式(CSS)和逻辑(JavaScript)。组件可以独立存在,也可以与其他组件组合,形成完整的应用。

前端到全栈进阶之“前端框架”,前端,程序员,技术,全栈

这种方式的优点包括:

  1. 复用性:组件可以在多个地方多次使用,减少了代码量和维护成本。只要维护好一个组件,那么所有使用该组件的地方都会得到更新。
  2. 可维护性:因为每个组件都是独立的,所以修改单个组件不会影响到其他组件,这使得维护起来更加容易。
  3. 清晰的结构:应用的结构更加清晰,每个部分都对应一个组件,这样比单一的HTML、CSS和JS文件更加容易理解。

在前端开发中,React、Vue 和 Angular 等主流框架都广泛使用了组件化。

例如,一个简单的 React 组件可能是这样的:

import React from 'react';

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}

// 使用Welcome组件
<Welcome name="Sara" />

一个简单的 Vue 组件可能是这样的:

// Welcome.vue
<template>
  <div>
    <p>hello, {{ name }}</p>
  </div>
</template>

<script>
export default {
  props: ['name']
}
</script>

<style scoped>
p {
  color: blue;
}
</button>

这样,我们就可以在多个地方使用<Welcome />这个组件,并且传入不同的name属性,显示不同的欢迎信息。这就是组件化思想的简单应用。

数据绑定

数据绑定是前端框架中一个非常重要的概念,它可以让我们将数据与视图连接起来。在很多前端框架中,你不需要手动操作 DOM 来更新页面,只需要更新数据,视图就会自动变化。按照数据与视图的更新关系,数据绑定通常可以分为单向数据绑定和双向数据绑定。

  1. 单向数据绑定:也被称为单向数据流,就是数据只能从一端改变,然后流向另一端。在这种模式中,模型 (Model) 数据会自动更新到视图 (View),但是视图不会影响模型。也就是说,当我们的数据模型变化时,将会引起视图的更新,但是视图的变化并不会影响数据模型。React 就是采用的单向数据流。

前端到全栈进阶之“前端框架”,前端,程序员,技术,全栈

  1. 双向数据绑定:双向数据绑定不仅可以做到从 Model 到 View 的数据自动更新,同时也可以做到从 View 到 Model 的同步。也就是说,不仅视图会响应数据的变化,数据也会响应视图的变化。Angular 和 Vue 都有全方位的双向数据绑定体验。

前端到全栈进阶之“前端框架”,前端,程序员,技术,全栈

数据绑定的主要优点是减轻了开发者手动操作 DOM 的负担,简化了代码,帮助开发者专注于业务逻辑的实现。同时,数据绑定带来了更好的用户体验,减少了页面闪烁和不必要的页面重载,提高了应用的响应速度。

路由

路由在 web 开发中是非常重要的一个概念,无论是前端还是后端。但这两者中的路由有一些不同的地方。在这里,我会专门讲解一下前端路由。

在前端开发中,路由主要用于控制视图(页面或组件)之间的导航。当你点击一个链接,或者在地址栏输入一个 URL 时,路由系统会决定哪个视图将被渲染到浏览器。

前端路由主要分为两种类型:Hash路由 和 History路由

  1. Hash路由:基于锚链接(URL中的#标签)和 onhashChange 事件。当锚点值改变时,页面不会重新加载。
  2. History路由:基于HTML5中的History API(pushState、replaceState、popState事件)。这种模式相比于 Hash 模式,URL 更加美观。

前端路由的出现,使得单页面应用(SPA)得以快速发展。因为在 SPA 中,页面不会因为链接的改变而重新加载,只是组件的切换,这就需要前端路由系统来控制这个组件的切换。

诸如 React Router(React)、Vue Router(Vue.js)、@reach/router(React)等,这些路由库就提供了在前端环境中创建路由的能力。

所以,理解和掌握前端路由对于前端开发者来说,是非常关键和重要的。

状态管理

在前端开发中,状态管理是一项非常重要的工作。首先,我们需要明确什么是状态(state)。在前端开发中,状态通常是指影响应用行为或者 UI 的数据 —— 比如用户是不是已经登录了,购物车里有哪些商品,用户搜索的关键词是什么等等,都可以被认为是状态,这些数据会影响应用的行为和界面表现。

状态管理就是指管理这些状态,包括状态的读取、修改、删除等操作,以及这些操作引发的应用的变化。

状态管理的需要主要来源于以下原因:

  1. 复杂性 - 当应用的规模变大以后,状态的数量和复杂度会增加,如果没有一个好的状态管理方案,开发和维护都会变得非常困难。
  2. 多组件共享状态 - 在实际开发中,很多状态需要在不同的组件之间共享。如果不使用状态管理库,我们可能需要通过组件的 props 进行繁琐的传递,而且很难保证状态的一致性。
  3. 异步操作 - 很多情况下,我们需要处理异步操作,比如网络请求。如果没有好的状态管理方案,处理这些异步操作会非常复杂。

在 JavaScript 中,常见的状态管理方案有 redux,vuex(用于 vue.js)、mobx等。

举个例子,redux 是一个常见的状态管理库,它提供了一个中心化的存储容器,所有的状态都存储在这里,通过定义 action 和 reducer 我们可以对状态进行操作。action 是描述状态改变的对象,而 reducer 则是根据 action 来实际进行状态改变的函数。使用 redux,我们可以方便地在多个组件之间共享状态,处理异步操作,同时 redux 也提供了一系列的中间件和工具方便我们调试应用和优化性能。

生命周期

在前端开发中,特别是在使用一些流行的前端框架如 React 或 Vue 时,我们经常会听到 "生命周期" 这个词。组件的生命周期,简单来说,就是组件从创建到销毁的过程。在这个过程中会经历如初始化、更新、销毁等多个阶段,每一个阶段都会对应特定的生命周期方法,这些方法给我们提供了在某一时刻操作组件的机会。

以 React 为例,其生命周期主要分为三个阶段:

  1. 挂载阶段(Mounting):这个阶段是指组件实例被创建并插入 DOM 的阶段,在这个阶段 React 会调用如构造函数(constructor)、静态初始化方法(static getDerivedStateFromProps)、渲染方法(render)以及挂载结束方法(componentDidMount)等生命周期方法。这个阶段只会发生一次,它们按照刚刚提到的顺序被调用。
useEffect(() => {
  // 对应 componentDidMount
}, [])
  1. 更新阶段(Updating):这个阶段发生在当 props 或 state 发生改变时,组件会重新渲染。在这个阶段会调用如静态更新方法(static getDerivedStateFromProps)、shouldComponentUpdate、渲染方法(render)、获取快照方法(getSnapshotBeforeUpdate)和更新结束方法(componentDidUpdate)等生命周期方法。这个阶段可以发生多次。
useEffect(() => {
  // 对应 componentDidUpdate
}, [var1, var2])
  1. 卸载阶段(Unmounting):当组件将要从 DOM 中移除时会进入卸载阶段,此时会调用卸载方法(componentWillUnmount)进行一些清理工作,例如清理定时器、取消网络请求或者清理在 componentDidMount 中创建的任何 DOM 元素。
useEffect(() => {
  return () => {
    // 对应 componentWillUnmount
  }
}, [])

理解每个生命周期方法的作用以及何时会被调用,能够帮助我们更好地管理和控制组件的行为以及性能。

虚拟 DOM

虚拟 DOM 是一个很重要的概念,在很多现代的前端框架,比如 React 和 Vue 中,它们都在使用虚拟 DOM 来提高页面渲染的性能。

在传统的开发方式中,当我们需要更新页面上的某一个元素,通常会直接操作真实的 DOM,这样就会引起页面的重绘和重排,通常会消耗大量的性能。这并不是一个问题,如果我们的页面很简单,或者操作很少。然而,随着 Web 应用的复杂度的提高,频繁的直接操作 DOM 将会大大影响应用的性能,导致用户体验下降。

这个时候,虚拟 DOM 就派上了用场。虚拟 DOM,并不是真实 DOM 在浏览器中的表现,而是在 JavaScript 中的一种抽象概念,通常表现为一个对象,这个对象就是更为轻量级的对真实 DOM 的描述。

当状态(state)发生变化需要更新 DOM 时,前端框架会先基于新的状态生成新的虚拟 DOM,然后通过比较新旧虚拟 DOM 的差异(这个过程叫做 Diffing),计算出最小的修改步骤,然后才将这些修改应用到真实的 DOM 上,这个过程叫做 Reconciliation(协调)。

因此,虚拟 DOM 可以减少不必要的真实 DOM 操作,从而提高性能。虽然构建和比较虚拟 DOM 本身需要一些开销,但是由于 JavaScript 执行速度的提高,这些开销通常小于直接进行大量的 DOM 操作。也就是说,虚拟 DOM 提升了性能,同时因为虚拟 DOM 是 JS 对象,更方便开发和管理,从而提高了开发效率。

这只是简单概括了一些前端框架的核心概念,例如 React、Vue 和 Angular 常用的一些概念,不同的框架可能会有其他特定的概念和功能。文章来源地址https://www.toymoban.com/news/detail-859617.html

到了这里,关于前端到全栈进阶之“前端框架”的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 首个AI程序员诞生!已通过公司面试,掌握全栈技能,可独自开发完整项目

    3 月 13 日,由华人团队创立的 Cognition Labs 推出了第一个 AI 软件工程师 Devin,从目前公布的信息来看,说它是目前最强的 AI 软件工程师似乎一点也不过分,今天直接在 X 上刷屏。 在 SWE-Bench 基础测试中,无需人类协助,Devin 就可以解决 13.86% 的问题。而目前的 SOTA 模型,在没

    2024年04月11日
    浏览(57)
  • 猿创征文|前端到全栈,一名 IT 初学者的学习与成长之路

    2021 年 7 月 18 日我在 CSDN 发布了第一篇技术文章,距现在已有一年,这也意味着我在 CSDN 创作已经一年了。这一年创作历程对我来说,无疑是在 IT 方面技术成长与收获最大的一年,毫不夸张的说,从来没有过在一年时间内能学到这么多,能提升这么多。 其实如标题中所说,

    2023年04月08日
    浏览(37)
  • 程序员进阶之路:程序环境和预处理

      目录   前言 程序的翻译环境和执行环境 翻译环境 运行环境 预处理(预编译) 预定义符号 #define #define 定义标识符 #define 定义宏  #define 替换规则  #和##  #的作用 ##的作用  带副作用的宏参数  宏和函数对比 命名约定  #undef 命令行定义 条件编译  文件包含  嵌套文件包

    2024年02月16日
    浏览(41)
  • Android程序员向音视频进阶,有前景吗

    随着移动互联网的普及和发展,Android开发成为了很多人的就业选择,希望在这个行业能获得自己的一席之地。然而,随着时间的推移,越来越多的人进入到了Android开发行业,就导致目前Android开发的工作越来越难找,内卷非常严重,最近听说音视频开发是Android未来的一个出口

    2023年04月24日
    浏览(55)
  • 黑马程序员——javase进阶——day01——匿名对象 , 继承 , 抽象类

    目录: 面向对象回顾 面向对象的核心思想是什么? 现有的类还是先有的对象? Java类的创建? 类中的组成成分? 创建对象所使用的? 创建对象的格式? 调用对象的成员? 定义构造方法的格式? 定义构造方法的特点? 构造方法的作用? 面向对象三大特征是什么? 封装的思想及其作

    2024年01月24日
    浏览(40)
  • 黑马程序员前端学习接口变更

    VUE 刘老师离职了,VUE的接口失效的,一律换为黑马官方接口 axios.defaults.baseURL = \\\'https://www.escook.cn\\\' 换成 axios.defaults.baseURL = \\\'https://applet-base-api-t.itheima.net\\\'    微信小程序 https://api-ugo-web.itheima.net https://www.uinav.com 刘老师博客简介为不再讲课的程序员,但他真的是一位不错的老师

    2024年02月09日
    浏览(49)
  • 黑马程序员SSM框架-SpringBoot

    视频连接:SpringBoot-01-SpringBoot工程入门案例开发步骤_哔哩哔哩_bilibili 入门程序 也可以基于官网创建项目。  基于阿里云创建项目 基于手工创建项目 隐藏指定文件/文件夹 SpringBoot项目快速启动 下面的插件将项目运行所需的依赖jar包全部加入到了最终运行的jar包中,并将入口

    2024年02月03日
    浏览(61)
  • 【C++】程序员的屠龙母鸡:二叉树进阶OJ题详解

    不会自动生成,还是我自己写目录吧  -.- 文章目录 前言 一、稍微简单一点的二叉树OJ题 二、相对困难一点的二叉树OJ题 总结 在看这篇文章前希望大家是学过二叉树的,不然理解起来可能会比较费劲,但我会尽自己的努力让大家学会这些题(都是往年大厂必考题哦~),本次一

    2024年02月01日
    浏览(34)
  • 前端程序员和后端程序员有什么不同?我来告诉你薪资待遇差多少

    在过去,前端程序员的工资可能需要几倍于后端程序员才能相当。因为前端程序员需要处理的是看得见的部分,而且需要兼顾不同的浏览器、设备和操作系统,工作量较大。但是,随着H5的盛行和现代浏览器对HTML5、JavaScript和CSS的支持越来越好,前端程序员可以开发一次代码

    2023年04月22日
    浏览(85)
  • 程序员的职场,光有技术是不行的,送给每个即将工作的程序员

    又是一年五月份,大批量学计算机的学生又要涌入职场了,牛皮的已经早早找到了工作, 但不管你技术再牛,在程序员的职场,光有技术是不行的,你还要懂得一些职场的雷坑和上升技巧。 我做了二十多年程序员,踩过不少雷,今天就把我的经验分享给大家,希望你们能在

    2024年02月04日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包