探索前端技术的无尽旅程从这里开始!每周精选前端领域的热门文章。
文章推荐:oclif 一款 cli 框架的使用指南,带你快速搭建一款属于你自己的 CLI 工具、HTML Dom 属性与节点属性之间的区别,以及各大框架是如何处理的、两篇关于 CSS 魔法:1)利用 CSS 实现对文档溢出处理;2)利用 CSS 的 grid 布局绘制出一款乐谱
工具推荐:AI 集成工具 -- MaxAi.me。一键快速使用各类 AI 工具
行业新闻:Bun 1.1 发布、Node V22 版本发布,快来看看它们的新特性吧如果觉得有收获,欢迎大家点赞👍🏻订阅
文章推荐
oclif 工具指南
这篇文章是一篇教程,在不使用 oclif 的脚手架的情况下,如何搭建一个使用 oclif 搭建一个命令行工具。文章从设置项目、初始化目录、配置 TypeScript 编译器的步骤,并通过创建和扩展 oclif 的 Command 类来展示如何添加命令、参数和标志 介绍了如何使用 TypeScript 和 oclif 框架从头开始构建一个命令行接口(CLI)应用程序。
附:cli 框架对比
| 特性/框架 | oclif | Commander.js | Caporal.js |
|---|---|---|---|
| 主要优点 | 强大的插件系统,功能丰富 | 简单直观,易于上手 | 参数验证,支持多语言 |
| 主要缺点 | 相对复杂,学习成本较高 | 子命令处理基础 | 社区较小,文档支持有限 |
| 社区和维护 | 由 Heroku 和 Salesforce 维护,社区活跃 | 社区非常活跃,维护良好 | 社区较小,更新可能不频繁 |
| 适用场景 | 大型、模块化的应用,需要可扩展性 | 快速开发简单到中等复杂度的 CLI 工具 | 需要内置参数验证和国际化支持的应用 |
| 自动化帮助 | 支持 | 支持 | 支持 |
| 性能 | 较重,不适合轻量级应用 | 性能良好,适合大多数应用 | 性能适中 |
👉🏻原文链接: oclif 工具指南
HTML属性 VS DOM属性
文章详细讲解了HTML属性和DOM属性的区别,这是Web开发中的基本概念,但经常被误解。以下是文章的几个关键点总结:
- 属性与属性的区别:HTML属性是直接在HTML中定义的,总是字符串形式,而DOM属性是DOM对象模型的一部分,可以是任何类型。属性在HTML标记中可见,但属性通过JavaScript以编程方式访问。
- 序列化与大小写敏感性:属性可以序列化到HTML中,即它们可以在标记中被看到,并且它们是不区分大小写的。相反,属性不会序列化到HTML中并且是区分大小写的。
- Reflection:某些属性在更改时会自动更新其相应的属性,反之亦然。但这并不总是如此,有些属性的更改不会反映到属性上。
- 验证、类型强制和默认值:属性可以强制执行验证规则和类型,自动将值转换为适当的类型或默认值。例如,如果为元素的类型属性设置了非有效类型,它将恢复为默认的有效类型。
- 框架和自定义元素:文章还讨论了不同的JavaScript框架如何处理属性和属性之间的区别。例如,React和Vue等框架在将组件渲染为字符串或处理自定义元素时,有特定的处理方式。
- Preact 和 VueJS:通常优先将属性设置为DOM属性,除非属性名不是元素的已知属性,这种情况下才设置为HTML属性。在服务器端渲染时,它们倾向于只处理HTML属性。
- React:React的默认策略是将大多数属性设置为HTML属性,除非这些属性被预定义为DOM属性。这种方式影响了自定义元素的功能实现,因为它们的属性可能不被识别为DOM属性。
- lit-html:要求开发者在设置DOM属性时,在属性名前加上点(.),如.value,以明确区分HTML属性和DOM属性。
👉🏻原文链接: HTML属性 VS DOM属性
纯 CSS 检测文本是否溢出
本文介绍了一种通过CSS滚动驱动动画和CSS样式查询实现文本溢出检测的技术方案。首先,使用CSS滚动驱动动画标识容器是否溢出的方法包括在容器内部设置动画,该动画与滚动事件相关联。具体实现方式是通过定义animation-timeline属性来依赖于容器本身的滚动状态,例如使用scroll(self)表示监听容器自身的滚动。当容器滚动时,动画被触发,通过动画中的关键帧更改如颜色等属性,可以视觉上标识出容器是否发生了溢出。一旦容器被识别为溢出,CSS样式查询(即容器查询)则用于进一步定制不同状态下的样式。例如,可以在检测到容器溢出时,使用@container规则来应用特定的样式变更,这些变更仅在满足特定条件(如文本溢出)时才生效。这种查询可以指定基于容器内部状态的样式,如在CSS中设置变量--trunc,然后在容器查询中检测这个变量的值,如果为真(表示溢出),则可以调整子元素的显示,比如显示“展开”按钮或改变背景色等。
👉🏻原文链接: 纯 CSS 检测文本是否溢出
使用 CSS 绘制乐谱
这篇文章详细介绍了使用CSS Grid来绘制网页上的音乐谱的方法。作者通过将音乐谱的每个部分(如五线谱、小节和音符)视为网格系统中的元素,利用CSS的属性来精确控制这些元素的布局和样式。文章中展示了如何定义CSS类和网格布局,以实现五线谱的横向和纵向对齐,以及如何使用CSS属性来调整音符的位置和大小。
👉🏻原文链接: 使用 CSS 绘制乐谱
工具推荐
MaxAi.me
可以在任何地方一键使用 AI,由ChatGPT、Claude 3、Gemini 1.5和GPT-4提供支持。您唯一需要的生成式AI扩展
行业新闻
Bun 1.1 发布
Bun 1.1 版本正式发布了,这是一个重大版本更新,进一步优化了这个高速的 JavaScript 运行时和工具集。以下是这个版本的简单概述:
- 性能提升:bun install 在 Windows 上的安装速度提升了50%,通过并行化文件复制和链接操作实现更快的性能 (Bun)。
- 新特性和API支持:
- 对 Date.parse() 函数进行了改进,以兼容 Node.js 的行为,解决了日期解析在不同 JavaScript 引擎间的不一致问题 (Bun)。
- 增加了对递归文件目录读取的支持,并显著提升了 fs.readdir() 的性能,使其比 Node.js 快22倍 (Bun)。
- Bug修复和稳定性改进:
- 解决了多个与 Bun Shell、fs.watch、和 bun build --compile 相关的bug,包括修正 bun build --compile 未正确处理输出文件路径的问题 (Bun) (Bun) (Bun)。
- 改善了 Bun 在处理带有无效文件路径的 tarballs 时的行为,现在与 Windows 上的 npm install 行为一致 (Bun)。
- 修复了使用 SvelteKit 时 fetch 方法的错误处理问题,确保正确调用重写的方法和属性 (Bun)。
- 跨平台和模块改进:
- 提升了 Array#sort 方法的性能,根据不同场景可提升 15% 至 135% (Bun)。
- 在 Bun for Windows 上修正了退出时重置控制台模式的问题,解决了在命令提示符中使用方向键可能出现的问题 (Bun)。
- 与 Node.js 的兼容性:增强了与 Node.js 的互操作性,包括支持 IPC 消息传递和解决了一些 Node.js 未文档化 API 的问题 (Bun)。
👉🏻 更多更新日志请看看原文链接:Bun 1.1 发布
NodeJS 22 发布
Node V22 版本正式发布了,新版本引入了几项重要的新特性和更新,旨在提高性能、增强安全性,并支持更现代的 JavaScript 功能。以下是这个版本的简单概述:
- V8 引擎更新:Node.js 22 更新了其 V8 JavaScript 引擎到最新版本,带来了性能改进和对新的 ECMAScript 特性的支持。
- 性能优化:此版本包括对 Node.js 核心部分的性能优化,例如模块加载和 HTTP 处理。
- 新的和改进的 API:
- 引入了对新的 ECMAScript 模块(ESM)加载器的支持,这些加载器现在可以在一个独立的线程中运行,从而避免干扰主线程。
- 提供了更多控制文件系统访问的功能,包括读写权限的细粒度控制。
- 强化了对 WebAssembly 和 Web Crypto API 的支持,使 Node.js 在处理网络安全和性能敏感型任务时更为有效。
- 实验性功能:引入了一些新的实验性功能,如单一可执行应用的支持,这可能在未来版本中成为稳定功能。
- 安全性增强:包括对特定安全性能的改进,如改进的错误处理和更新的安全协议支持。
👉🏻 更多更新日志请看看原文链接:NodeJS 22 发布