【博客之星评选】2024年度前端学习总结

故事的开端...始于2024年第一篇前端技术博客 

 那故事的终末...也该结束于陪伴了我一整年的前端知识了

踏入 2025 年,满心激动与自豪,我成功闯进了《2024 年度 CSDN 博客之星总评选》的 TOP300。作为一名刚接触技术写作不久的萌新,这次能走到这一步,属实出乎意料,也备受激励。借着这次机会,与大家一起分享一下我这一年对于前端领域这一年的深度学习总结,技术工具与平台的年度使用心得。

目录

一、引言  

二、框架与库的演进

2.1 React

2.2 Vue

2.3 Angular

三、新特性与规范的发展

3.1 JavaScript新特性

3.2 CSS新特性

四、性能优化的新策略

4.1 代码优化

4.2 资源优化

4.3 网络优化

五、跨端与移动端技术的发展

5.1 跨端开发框架

5.2 移动端性能优化

六、技术工具与平台年度使用心得 

开发工具

代码托管与协作平台

前端测试工具

七、个人心得体会

技术成长

团队协作

未来展望


一、引言  

在过去一年,前端技术领域持续保持着高速发展的态势,新技术、新规范、新工具不断涌现。从构建用户界面的框架,到优化性能的策略,再到与后端交互的方式,都发生了深刻的变革。这不仅为前端开发者带来了更多的机遇,也带来了更大的挑战。

二、框架与库的演进

2.1 React

React在过去一年依然是前端开发的热门框架之一,其核心思想和理念得到了进一步的巩固和发展。

React 18引入了并发模式,这一特性显著提升了应用的响应性和用户体验。在处理复杂任务时,并发模式能够将任务切片,使得浏览器在执行任务的同时,还能及时响应用户的交互操作,避免了页面卡顿。例如,在一个大型数据展示项目中,通过使用React 18的并发模式,在数据加载和处理的过程中,用户依然可以流畅地进行页面滚动和元素点击操作。

同时,React Server Components(RSC)也在不断发展。RSC允许在服务器端渲染React组件,并且可以直接在服务器上获取数据,减少了客户端的数据请求量,从而提升了页面的加载速度。在一个电商项目中,使用RSC实现了商品详情页面的快速加载,用户无需等待数据从客户端请求,直接在服务器端获取并渲染,大大提高了用户的购物体验。

import React, { useState, useEffect } from'react';function LongRunningTask() {const [data, setData] = useState(null);useEffect(() => {const fetchData = async () => {// 模拟一个长时间运行的任务,比如网络请求await new Promise(resolve => setTimeout(resolve, 3000));setData('任务完成,这是数据');};// 使用React的并发模式特性,标记为可中断任务React.unstable_startTransition(() => {fetchData();});}, []);return (<div>{data? (<p>{data}</p>) : (<p>正在加载数据,请稍候...</p>)}</div>);
}export default LongRunningTask;

2.2 Vue

Vue 3在性能和功能上都有了显著的提升,成为了许多开发者的首选框架之一。

Vue 3的Composition API为开发者提供了更灵活的代码组织方式。与传统的Options API相比,Composition API能够将相关的逻辑代码聚合在一起,使得代码的可维护性和复用性大大提高。在一个企业级项目中,使用Composition API将用户权限管理、数据请求等相关逻辑封装成独立的函数,在不同的组件中可以方便地复用这些逻辑,减少了代码的重复。

此外,Vue 3的响应式系统也进行了全面升级,采用了Proxy代替Object.defineProperty,使得响应式数据的处理更加高效和灵活。在一个实时数据监控项目中,利用Vue 3的新响应式系统,能够快速地响应数据的变化,及时更新页面展示,为用户提供了更准确的实时数据。

<template><div><button @click="increment">点击增加计数</button><p>计数: {{ count }}</p></div>
</template><script setup>
import { ref } from 'vue';// 使用Composition API定义响应式数据和方法
const count = ref(0);
const increment = () => {count.value++;
};
</script>

2.3 Angular

Angular在企业级应用开发中一直占据着重要地位,这一年也在不断发展和完善。

Angular 14引入了一些新的特性,如独立组件和信号(Signals)。独立组件允许开发者在不依赖NgModule的情况下创建和使用组件,简化了组件的开发和使用流程。在一个大型项目中,使用独立组件减少了模块之间的依赖关系,提高了组件的可维护性。

// 独立组件定义
import { Component } from '@angular/core';@Component({selector: 'app-my - component',templateUrl: './my - component.html',styleUrls: ['./my - component.css']
})
export class MyComponent {message = '这是一个独立组件';
}

信号(Signals)则是Angular 14的一个重要新特性,它提供了一种更高效的状态管理方式。信号可以自动追踪数据的变化,并在数据变化时自动更新相关的视图,减少了手动触发更新的繁琐操作。在一个实时协作应用中,使用信号实现了多人实时编辑文档的功能,用户在编辑文档时,其他用户的页面能够实时同步更新。

三、新特性与规范的发展

3.1 JavaScript新特性

ES2022带来了一些实用的新特性,进一步提升了JavaScript的开发效率和功能。

类字段的公共实例字段和私有实例字段的正式标准化,使得类的封装性更好。在一个面向对象的项目中,使用私有实例字段可以有效地隐藏类的内部实现细节,保护数据的安全性。

Object.hasOwn方法的引入,提供了一种更可靠的方式来判断对象是否拥有某个自身属性,避免了在原型链上查找属性时可能出现的问题。在一个数据处理项目中,使用Object.hasOwn方法可以准确地判断对象是否包含某个自定义属性,提高了数据处理的准确性。

class User {// 公共实例字段name = '默认名字';// 私有实例字段#password = '123456';getPassword() {return this.#password;}
}const user = new User();
console.log(user.name);
// console.log(user.#password); // 报错,无法直接访问私有字段
console.log(user.getPassword());const obj = { key: 'value' };
console.log(Object.hasOwn(obj, 'key')); // true
console.log(Object.hasOwn(obj, 'nonexistentKey')); // false

3.2 CSS新特性

CSS也在不断发展,新的特性和规范为前端开发者提供了更多的设计和布局选择。

container queries(容器查询)是CSS的一个重要新特性,它允许开发者根据容器的大小来调整元素的样式,而不是像传统的媒体查询那样根据视口的大小来调整。在一个自适应布局的项目中,使用容器查询可以让元素在不同大小的容器中呈现出不同的布局和样式,提高了页面的灵活性和适应性。

scroll snapping(滚动捕捉)特性则为用户提供了更流畅的滚动体验。通过设置滚动捕捉点,用户在滚动页面时,元素会自动对齐到指定的位置,增强了页面的交互性和可用性。在一个图片展示项目中,使用滚动捕捉特性可以让用户在滚动图片列表时,图片能够自动对齐,方便用户查看和比较。

.container {width: 50%;/* 设置容器查询的条件 */container - type: inline - size;container - name: my - container;
}@container my - container (min - width: 600px) {p {font - size: 20px;}
}@container my - container (max - width: 600px) {p {font - size: 16px;}
}

四、性能优化的新策略

4.1 代码优化

代码优化是提升前端性能的基础。在过去一年,出现了一些新的代码优化策略和工具。

Tree Shaking技术得到了更广泛的应用和优化。Tree Shaking可以去除未使用的代码,减少打包后的文件体积。在一个大型JavaScript项目中,通过配置Webpack启用Tree Shaking,成功将打包后的文件体积减少了30%,大大提高了页面的加载速度。

同时,ESBuild等新一代的构建工具也逐渐崭露头角。ESBuild使用Go语言编写,具有极快的构建速度,比传统的Webpack构建速度快数倍。在一个快速迭代的项目中,使用ESBuild作为构建工具,显著缩短了构建时间,提高了开发效率。

4.2 资源优化

资源优化是提升前端性能的关键环节。在这一年,资源优化方面也有了一些新的进展。

图像优化方面,除了继续推广WebP格式图片外,还出现了一些新的图像压缩和优化工具。例如,ImageOptim可以在不损失图像质量的前提下,大幅压缩图像文件的大小。在一个图片密集型的项目中,使用ImageOptim对图片进行预处理,有效地减少了图片资源的加载时间,提升了页面的加载速度。

字体优化方面,通过使用@font-face规则和字体加载策略,可以更好地控制字体的加载和显示。例如,使用font-display: swap可以在字体加载过程中,先显示系统默认字体,字体加载完成后再切换,避免了字体闪烁的问题,提高了用户体验。

4.3 网络优化

网络优化对于提升前端性能也至关重要。在过去一年,网络优化方面有了一些新的技术和策略。

HTTP/3协议的逐渐普及,为前端应用带来了更快的网络传输速度。HTTP/3基于UDP协议,采用了QUIC协议来实现可靠传输,减少了连接建立的延迟和丢包重传的时间。在一个全球化的项目中,使用HTTP/3协议,使得不同地区的用户都能够快速地访问应用,提高了应用的可用性和用户满意度。

同时,服务端渲染(SSR)和静态站点生成(SSG)技术也得到了更广泛的应用。SSR可以在服务器端生成HTML页面,然后发送给客户端,减少了客户端的渲染时间。SSG则是在构建阶段生成静态HTML页面,适合内容更新不频繁的网站。在一个新闻资讯类项目中,使用SSG技术生成静态页面,大大提高了页面的加载速度和搜索引擎的友好性。

五、跨端与移动端技术的发展

5.1 跨端开发框架

跨端开发框架在过去一年得到了进一步的发展和完善,成为了许多开发者实现多平台应用开发的首选方案。

Flutter是一款由Google开发的跨端开发框架,使用Dart语言进行开发。Flutter采用了自绘引擎,能够在不同平台上实现高性能的渲染,提供了接近原生应用的用户体验。在一个跨平台的移动应用项目中,使用Flutter开发,实现了在iOS和Android平台上的快速部署和运行,并且保持了一致的界面风格和性能表现。

React Native也在不断发展,通过优化底层架构和性能,提升了应用的运行效率和稳定性。在一个电商移动应用中,使用React Native结合Native模块,实现了部分功能的原生调用,提高了应用的性能和用户体验。

5.2 移动端性能优化

移动端性能优化一直是前端开发的重点和难点。在过去一年,移动端性能优化方面有了一些新的策略和技术。

在移动设备上,由于硬件资源有限,优化内存使用和减少CPU占用尤为重要。通过使用内存分析工具,如Chrome DevTools的Memory面板,可以检测和优化应用的内存泄漏和内存占用过高的问题。在一个移动游戏项目中,通过使用Memory面板对游戏内存进行分析和优化,成功解决了游戏在长时间运行后出现的卡顿和闪退问题。

同时,优化移动网络请求也是提升移动端性能的关键。通过使用缓存策略、压缩数据传输、优化请求并发等技术,可以减少移动网络请求的次数和数据量,提高应用的响应速度。在一个移动社交应用中,通过设置合理的缓存策略,将常用的数据缓存到本地,减少了网络请求的次数,提高了应用的加载速度和用户体验。

六、技术工具与平台年度使用心得 

开发工具

VS Code 凭借其丰富的插件生态和强大的代码编辑功能,成为了前端开发的首选工具。例如,ESLint 插件可以实时检查代码规范,Prettier 插件则能自动格式化代码,保持代码风格的一致性。在团队开发中,这两个插件的配合使用,大大减少了代码风格相关的冲突。

Webpack 作为前端构建工具,在项目的打包和优化过程中起着核心作用。通过配置不同的 loader 和 plugin,可以实现对各种文件类型的处理,如将 Sass 转换为 CSS,压缩 JavaScript 和 CSS 文件等。在一个大型项目中,通过合理配置 Webpack 的代码拆分和缓存策略,使得项目的构建速度和运行性能都得到了显著提升。

代码托管与协作平台

GitHub 是全球最大的代码托管平台,它不仅提供了安全可靠的代码存储服务,还通过 Pull Request 和 Issue 等功能,极大地促进了团队成员之间的协作和代码审查。在一个开源项目中,通过 GitHub 的 Pull Request 机制,接收了来自世界各地开发者的贡献,共同完善了项目的功能。

前端测试工具

Jest 是一款由 Facebook 开发的 JavaScript 测试框架,它具有简洁的 API 和强大的断言库,能够轻松编写单元测试和集成测试。在一个 React 组件库的开发中,使用 Jest 和 React Testing Library 对组件进行了全面的测试,确保了组件在不同场景下的正确性和稳定性。

Cypress 则是一款新兴的前端自动化测试工具,它具有直观的界面和强大的调试功能,能够方便地进行端到端测试。在一个电商项目中,使用 Cypress 编写了一系列的用户行为测试用例,模拟用户在购物流程中的操作,确保了系统的稳定性和用户体验。

七、个人心得体会

技术成长

过去一年,在前端技术领域的不断学习和实践中,我深刻体会到技术的快速发展和更新换代。从新的框架特性到性能优化技巧,每一次的学习和应用都让我对前端开发有了更深入的理解。同时,通过参与开源项目和技术社区的交流,我不仅拓宽了技术视野,还结识了许多优秀的开发者,从他们身上学到了宝贵的经验和思维方式。

团队协作

在项目开发过程中,团队协作的重要性不言而喻。一个高效的团队需要良好的沟通、明确的分工和相互信任。在与团队成员合作的过程中,我学会了倾听他人的意见和建议,积极参与讨论和解决问题,共同推动项目的进展。同时,通过代码审查和技术分享,我也从团队成员身上学到了不同的编程风格和技巧,提升了自己的技术水平。

未来展望

展望未来,我将继续关注前端技术的发展趋势,深入学习新兴技术,如 WebAssembly、渐进式 Web 应用(PWA)等。同时,我也希望能够参与更多具有挑战性的项目,将所学知识应用到实际开发中,不断提升自己的技术能力和解决问题的能力。此外,我还计划在技术社区中更加活跃,分享自己的技术经验和心得,与更多的开发者共同成长。

总之,过去一年在前端领域的经历让我收获颇丰,也为未来的发展奠定了坚实的基础。我相信,在不断学习和实践的道路上,我将在前端开发领域取得更大的进步。

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

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

相关文章

Ubuntu 24.04 LTS 服务器折腾集

目录 Ubuntu 更改软件源Ubuntu 系统语言英文改中文windows 远程链接 Ubuntu 图形界面Windows 通过 openssh 连接 UbuntuUbuntu linux 文件权限Ubuntu 空闲硬盘挂载到 文件管理器的 other locationsUbuntu 开启 SMB 服务&#xff0c;并通过 windows 访问Ubuntu安装Tailscale&am…

《TikTok停服:信息安全警钟长鸣》

一、TikTok 停服事件回顾 2025 年 1 月 18 日晚&#xff0c;TikTok 通知美国用户&#xff0c;由于美官方禁令于 19 日起生效&#xff0c;TikTok 软件将暂时对用户停止服务。这一消息犹如一颗重磅炸弹&#xff0c;瞬间在全球范围内掀起轩然大波。美国用户对此猝不及防&#xff0…

1166 Summit (25)

A summit (峰会) is a meeting of heads of state or government. Arranging the rest areas for the summit is not a simple job. The ideal arrangement of one area is to invite those heads so that everyone is a direct friend of everyone. Now given a set of tenta…

图论DFS:黑红树

我的个人主页 {\large \mathsf{{\color{Red} 我的个人主页} } } 我的个人主页 往 {\color{Red} {\Huge 往} } 往 期 {\color{Green} {\Huge 期} } 期 文 {\color{Blue} {\Huge 文} } 文 章 {\color{Orange} {\Huge 章}} 章 DFS 算法&#xff1a;记忆化搜索DFS 算法&#xf…

C++,设计模式,【目录篇】

文章目录 1. 简介2. 设计模式的分类2.1 创建型模式&#xff08;Creational Patterns&#xff09;&#xff1a;2.2 结构型模式&#xff08;Structural Patterns&#xff09;&#xff1a;2.3 行为型模式&#xff08;Behavioral Patterns&#xff09;&#xff1a; 3. 使用设计模式…

掌握提示词工程:大模型使用入门指南

掌握提示词工程&#xff1a;大模型使用入门指南 近年来&#xff0c;大语言模型&#xff08;如 GPT、Claude 等&#xff09;的强大能力令人印象深刻&#xff0c;但要想充分发挥这些模型的潜力&#xff0c;仅仅依靠其预训练能力还不够。提示词工程&#xff08;Prompt Engineerin…

如何使用 useMemo 和 memo 优化 React 应用性能?

使用 useMemo 和 memo 优化 React 应用性能 在构建复杂的 React 应用时&#xff0c;性能优化是确保应用流畅运行的关键。React 提供了多种工具来帮助开发者优化组件的渲染和计算逻辑&#xff0c;其中 useMemo 和 memo 是两个非常有用的 Hook。本文将详细介绍这两个工具的使用方…

Agent Laboratory: Using LLM Agents as Research Assistants 论文简介

加速机器学习研究的智能实验室——Agent Laboratory 1. 引言 随着人工智能技术的飞速发展&#xff0c;机器学习领域正以前所未有的速度推进科学发现和技术创新。然而&#xff0c;传统的科学研究模式往往受到时间、资源和专业知识限制&#xff0c;阻碍了研究者们探索新想法的能…

【网络协议】【http】【https】ECDHE-TLS1.2

【网络协议】【http】【https】ECDHE-TLS1.2 ECDHE算法 1.客户端和服务器端事先确定好使用哪种椭圆曲线&#xff0c;和曲线上的基点G&#xff0c;这两个参数都是公开的&#xff0c; 双方各自随机生成一个随机数作为私钥d&#xff0c;并与基点 G相乘得到公钥Q(QdG)&#xff0c…

规避路由冲突

路由冲突是指在网络中存在两个或多个路由器在进行路由选择时出现矛盾&#xff0c;导致网络数据包无法正确传输&#xff0c;影响网络的正常运行。为了规避路由冲突&#xff0c;可以采取以下措施&#xff1a; 一、合理规划IP地址 分配唯一IP&#xff1a;确保每个设备在网络中都有…

项目实战--网页五子棋(游戏大厅)(3)

我们的游戏大厅界面主要需要包含两个功能&#xff0c;一是显示用户信息&#xff0c;二是匹配游戏按钮 1. 页面实现 hall.html <!DOCTYPE html> <html lang"ch"> <head><meta charset"UTF-8"><meta name"viewport"…

大模型UI:Gradio全解11——Chatbot:融合大模型的聊天机器人(4)

大模型UI&#xff1a;Gradio全解11——Chatbot&#xff1a;融合大模型的聊天机器人&#xff08;4&#xff09; 前言本篇摘要11. Chatbot&#xff1a;融合大模型的多模态聊天机器人11.4 使用Blocks创建自定义聊天机器人11.4.1 简单聊天机器人演示11.4.2 立即响应和流式传输11.4.…

【线性代数】行列式的概念

d e t ( A ) ∑ i 1 , i 2 , ⋯ , i n ( − 1 ) σ ( i 1 , ⋯ , i n ) a 1 , i 1 a 2 , i 2 , ⋯ , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1​,i2​,⋯,in​∑​(−1)σ(i1​,⋯,in​)a1…

关于php语言api接口开发的流程

确定接口需求&#xff1a;首先明确接口的功能和需求&#xff0c;包括输入参数、输出结果以及接口的业务逻辑。 设计接口路由&#xff1a;根据接口需求&#xff0c;设计具体的接口路由&#xff0c;即URL路径&#xff0c;用于访问接口。 搭建PHP环境&#xff1a;确保你的服务器上…

STM32 FreeRTOS内存管理简介

在使用 FreeRTOS 创建任务、队列、信号量等对象时&#xff0c;通常都有动态创建和静态创建的方式。动态方式提供了更灵活的内存管理&#xff0c;而静态方式则更注重内存的静态分配和控制。 如果是1的&#xff0c;那么标准 C 库 malloc() 和 free() 函数有时可用于此目的&#…

【Linux系统编程】—— 深度解析进程等待与终止:系统高效运行的关键

文章目录 进程创建再次认识fork()函数fork()函数返回值 写时拷贝fork常规⽤法以及调用失败的原因 进程终⽌进程终止对应的三种情况进程常⻅退出⽅法_exit函数exit函数return退出 进程等待进程等待的必要性进程等待的⽅法 进程创建 再次认识fork()函数 fork函数初识&#xff1…

国产编辑器EverEdit -重复行

1 重复行 1.1 应用场景 在代码或文本编辑过程中&#xff0c; 经常需要快速复制当前行&#xff0c;比如&#xff0c;给对象的多个属性进行赋值。传统的做法是&#xff1a;选中行-> 复制-> 插入新行-> 粘贴&#xff0c;该操作有4个步骤&#xff0c;非常繁琐。 那有没…

基于VSCode+CMake+debootstrap搭建Ubuntu交叉编译开发环境

基于VSCodeCMakedebootstrap搭建Ubuntu交叉编译开发环境 1 基于debootstrap搭建目标系统环境1.1 安装必要软件包1.2 创建sysroot目录1.3 运行debootstrap1.4 挂载必要的虚拟文件系统1.5 进入目标系统1.6 使用目标系统&#xff08;以安装zlog为例&#xff09;1.7 清理和退出 2 基…

NiceFish(美人鱼)

前端有 3 个版本&#xff1a; 浏览器环境移动端环境Electron 环境 服务端有 2 个版本&#xff1a; SpringBoot 版本&#xff08;已实现基于 Apache Shiro 的 RBAC 权限控制&#xff09;SpringCloud 版本 1.主要依赖 名称版本描述Angular16.2.0Angular 核心库。PrimeNG16.2…

华为ENSP:STP和链路聚合的管理与配置

这里将不再过度阐述STP和链路聚合的理论知识&#xff0c;不清楚的同学可以去观看Cisco文章中的理论知识 理论知识https://blog.csdn.net/2301_76341691/article/details/145166547?fromshareblogdetail&sharetypeblogdetail&sharerId145166547&sharereferPC&…