Dvorak
Dvorak

Dvorak Chen

All Posts in 2023.5


为什么我在css里使用功能类优先

这篇文章讨论了在前端开发中选择使用语义类还是功能类的问题,并提出了“功能类优先”的方法。作者指出,由于HTML结构的不同会影响CSS的表现,使得很多情况下无法有效重用语义类,因此更推荐使用功能类写法。功能类将原本在CSS文件中的样式直接写入到HTML的class属性中,减少了对CSS文件的依赖,并使代码更加直观和易于调试。作者还提到,对于能够充分发挥其重用效果、与HTML结构无关的地方(如全局设置和按钮),语义类仍然适用。文章最后推荐了Tailwind CSS作为实现功能类优先写法的有效工具,并解答了一些常见的疑问,例如功能类是否会增加阅读难度、是否必须使用第三方库等。--DeepSeek

css Functional First Semantic vs Utility Tailwind CSS UI Libraries CSS Best Practices

KMP 算法

文章介绍了KMP(Knuth-Morris-Pratt)算法在字符串匹配中的应用。首先通过构建`next`数组来记录模式字符串的最长前缀后缀匹配长度,避免重复比较字符以提高效率;然后利用该数组在目标字符串中查找子串。`getNext`函数采用双指针技术构建`next`数组,时间复杂度为O(n),其中n为模式字符串的长度。主函数`strStr`通过遍历目标字符串并结合`next`数组调整匹配位置,最终实现高效查找,避免暴力搜索的时间浪费。--DeepSeek

Algorithms KMP KMP Algorithm String Matching Next Array Efficient Search

浅谈 Javascript 事件循环

这篇文章通过优化一个原本会导致页面卡顿的JavaScript函数foo(),详细讲解了如何利用事件循环和宏任务队列来实现页面渲染的优化。作者首先解释了原始版本的foo()函数是如何导致长时间卡顿的原因,然后展示了如何将一次性渲染大量元素的操作改为分批处理,并通过setTimeout将每一批的任务安排到宏任务队列中执行。这种方法使得每次渲染的数量减少,从而让浏览器有时间执行其他重要的操作如渲染和用户交互,最终实现了页面的流畅显示。 文章进一步分析了事件循环的工作原理,包括宏任务队列、微任务队列以及渲染阶段的执行顺序,并通过具体的代码示例展示了如何将一个可能引发卡顿的操作拆分成多个可管理的任务。作者还讨论了劣质优化方法的潜在问题,比如一次性向宏任务队列中塞入过多任务可能导致其他关键操作被延迟执行,从而影响用户体验。 通过这篇文章,读者可以理解到事件循环在JavaScript中的重要性,以及如何合理利用宏任务和微任务来优化代码性能。作者强调,优化的目标不仅是减少代码量,更是要理解并利用浏览器的工作机制,以实现更流畅的用户体验。--DeepSeek

Javascript DOM Manipulation Event Loop Macrotask Queue Browser Rendering Performance Optimization

鸣谢

这篇博客通过对Anduin Xue的感谢与祝福,展现了合作与支持在创作过程中的重要意义。作者不仅表达了对合作伙伴的感激之情,还通过提及身体健康这一细节,引发了关于创作背后个人状态与作品质量之间关系的思考。这篇文章提醒我们,在关注最终成果的同时,也要重视背后默默付出和支持的力量,同时也让我们思考:一个人的身体健康如何影响其创造力与贡献?这种支持是否会对整个项目的发展产生深远的影响?这些问题促使读者进一步反思合作在创作过程中的重要性以及个人状态对集体成就的潜在影响。--DeepSeek

Gratitude Anduin Xue Health Tips Wellness Journey Public Health Mindful Living