一边做业务一边做重构:将真实债务项目重构成 AI 可维护项目
在 AI 很强的现在,依然很多人会认为,AI 更适用于新项目快速迭代,但很难在一个背负着沉重的历史包袱的项目中起到很大的用处。 最近大半年都在重构项目,从前期使用 AI 依然困难重重,到如今 AI 能高效定位问题、给到十分贴合项目需要的解决方案,中间特别明显的一个转折点,在于开始
在 AI 很强的现在,依然很多人会认为,AI 更适用于新项目快速迭代,但很难在一个背负着沉重的历史包袱的项目中起到很大的用处。 最近大半年都在重构项目,从前期使用 AI 依然困难重重,到如今 AI 能高效定位问题、给到十分贴合项目需要的解决方案,中间特别明显的一个转折点,在于开始
写了很多年的技术博客,终于快要迎来了它的终章。
2025 年大概是 AI 在各个场景的应用很让人吃惊的一年了。
前面在《如何设计与管理一个前端项目》一文中,提到过需要做风险把控、事后复盘、数据量化,但具体怎么执行呢?本文主要结合以前的实战经验进行说明。
关于复杂度,相信所有开发都了解这个词。毕竟准备面试过程中,多少都会刷刷题,了解过算法复杂度这个词。 今天想聊的,是关于网页复杂度的一些想法。 怎样算复杂?相信经常看我写的性能相关文章的小伙伴都知道,复杂的前端应用、大型前端应用这个词经常会出现在我的文章里。 是的,我经常说像在线文
提到网页得分,相信很多做过性能的前端同学,也都有用过 Lighthouse 的性能评分。 而在更复杂的业务场景下,类似 Lighthouse 这样的工具只能提供打开相关的性能数据。对于重度使用的前端网页来说,或许我们还需要更详细的参考标准。 Lighthouse 性能得分其实我们
上一篇《前端基础补齐–有关 JavaScript 代码执行》我给大家介绍了 JavaScript 代码的运行过程。如果说运行过程中的语法分析阶段、编译阶段和执行阶段属于微观层面的运行逻辑,那么本文将了解宏观角度下的 JavaScript 运行过程,包括 JavaScript 的单
上一篇《前端基础补齐–有关 JavaScript 继承》我们介绍了 JavaScript 的原型和继承,JavaScript 作为基于对象的编程语言,原型和继承是它的一大特点,理解 JavaScript 的继承方式有助于我们对代码进行更好的设计和优化。 除此之外,JavaScri
我们都知道,前端页面中HTML用于描述页面结构,CSS用于装饰页面样式,这两者结合得到一个暂时还没办法和用户交互的静态页面。为了使得页面能接收用户的输入,然后进行相应的反馈,我们需要用到JavaScript。 如今前端项目规模越来越大,架构也越来越复杂,甚至在一些项目中我们都接触
前面我们在《复杂渲染引擎架构与设计–6.增量计算》一文中介绍了滚动过程中的增量渲染方案,通过减少渲染计算量或绘制量的方式,来提升页面滚动的流畅度。 除此之外,当滚动距离较远时,增量渲染并不能达到预期的优化效果,此时我看还需要考虑降级渲染。 页面内的元素优先级划分当用户打开一个大的
前面我们在《复杂渲染引擎架构与设计–5.分片计算》一文中介绍了分片计算,即将需要计算的内容进行拆分,拆分成约每 50 ms 一个的任务。 在这个方案中,我们维护了一个待计算区域,将页面中所有未完成的计算任务放在里面,等待异步每个计算任务进行计算。 全量计算的性能瓶颈《复杂渲染引擎
随着互联网的迅速发展,现在我们前端应用能做的事情也越来越多了。随之而来的便是复杂和大数据内容的网页渲染,因此很多时候我们为了尽快给用户看到网页内容,会将页面加载拆分成首屏和其他内容。 当首屏内容渲染完后,我们会进行后续内容的预加载处理。 页面预加载对于重文本、列表、表格等网页内容
之前分享过不少关于前端卡顿检测的内容,实际上在前端应用里,FPS 也是我们常用的一个页面流畅度的指标。 除了前面介绍的卡顿检测之外,我们还可以使用 FPS 来辅助定义用户体验。 前端页面 FPS我们都知道,帧率(英语:frame rate)是用于测量显示帧数的度量。 FPS 则是
# 或许你在做性能优化的时候有听说过——尽量避免使用delete,但是为什么呢? 这涉及到 v8 引擎的几个概念:快属性(fast properties)、隐藏类(hidden Classes)、内联缓存(IC)等。讲述 v8 引擎的文章很多,因此本文会简单进行介绍,然后以此说
今天也是来介绍一种性能优化的具体方式,使用二进制存储特定数据,来降低内存占用、后台存储和传输成本。 二进制数据设计当我们需要描述某种数据的许多状态时,可以考虑使用二进制的方式优化。 简单来说,就是使用二进制数字1和0来表示单个状态,然后使用二进制数字来表示多种状态的组合,比如10