Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on null in /var/www/tgoop/function.php on line 65
2927 - Telegram Web
Telegram Web
#优质博文 #前端 #CSS #SVG #性能优化 #动画
Replace Your Animated GIFs with SVGs

AI 摘要:文章介绍了使用 SVG 动画 作为 GIF 动画 替代方案的优势。与 GIF 相比,SVG 动画文件体积更小、分辨率无损放大、与部分 CSS 媒体查询兼容,还可以直接嵌入 img 标签或作为背景图使用。但也存在局限:如不支持 prefers-reduced-motion、无法触发交互事件(hover/click)、限制 JavaScript 等。整体上,SVG 动画是 GIF 的现代替代,尤其适用于形状移动或变换类动画,性能和画质优势明显。


author John Rhea
#优质博文 #CSS #新特性 #前端
非常全的 CSS 新特性合集。
你需要知道的现代 CSS(2025版

AI 摘要:本文梳理了 2025 年现代 CSS 的最新进展,包括动画到 auto、@function、if()、text-wrap、linear() easing、 shape()、增强的 attr()、reading-flow 等特性。这些新功能大多提升了样式抽象能力、响应式设计的灵活性和排版的可控性,同时展现了 Chrome 为主、Safari/Firefox 跟进的支持现状,并给出 Polyfill 和渐进增强的可行性建议。


[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 动画与尺寸控制
- Animate to Auto:首度支持从固定数值过渡到 `auto`、`min-content` 等关键字,解决了长久以来无法动画到内在高度的问题。
- field-sizing:表单元素可根据内容自动扩展,高度自适应不再依赖 JS。

2. HTML 与交互增强
- Popovers & Invokers:新增 `popover` 和 `invoker` 属性,原生支持弹出层及控制呼叫,提升可访问性与无 JS 支持的友好性。
- Custom Selects:允许开发者完全自定义 `<select>` 的 UI,不再局限于操作系统原生样式。

3. 函数与逻辑能力
- @function:允许开发者在 CSS 内自定义函数,提升逻辑复用与避免重复代码。
- if():原生条件语法,类似 `switch`,用于条件性的样式应用。
- linear() easing:支持更复杂的动画缓动效果,可实现多点定义的动态曲线,而非仅限于 `cubic-bezier()`。
- shape():改良版路径函数,用 CSS 单位定义 `clip-path`、`offset-path` 等,实现复杂图形与路径动画。
- random()(预览特性):Safari 已支持,用于随机化样式值(实验性)。

4. 属性与排版优化
- text-wrap:新增 `balance`、`pretty`,提升文字换行的美观性与可读性,特别优化标题与段落排版。
- 增强的 attr():可将 HTML 属性值解析为数字、颜色等数据类型,提升数据驱动的 CSS 表达能力。
- reading-flow:重新映射视觉顺序与键盘导航顺序,避免因布局重排导致的 Tab 键焦点错乱。

5. 值得关注的趋势
- Masonry 布局:提案逐步接近规范化,用于实现瀑布流布局。
- margin-trim:Safari 首发,期待跨浏览器可用。
- sibling-index() / sibling-count():有助于顺序动画和灵活选择。
- View Transitions:Firefox 正在实现,进一步统一页面过渡体验。
- calc() 扩展:将支持单位间的乘除运算。

6. 经典与延续
- Container queries / container units:继承 `media queries` 的伟大进步。
- :has() 伪类:极大强化选择器能力。
- 滚动驱动动画 / Anchor Positioning / View Transition:现代 CSS 交互特性逐步进入主流支持。
- 额外视口单位(如 dvh) 已进入 baseline。


author Chris Coyier
Forwarded from 余弦&妲喵の养喵日常🐱 (Hyacine🦄)
cos 昨天语重心长跟我这个北方人科普台风有多可怕,拉着我把山竹历史战绩的视频刷了一遍,然后又打算囤点自热食品防停水停电。
(我内心os:馋了就直说
然后刚才拆完海底捞自热锅的包装,俩猫就把箱子占了
🥰2
#优质博文 #前端 #依赖管理 #React #工程化
当然是选择 node-modules-inspector 啦!
How to keep package.json under control

AI 摘要:本文结合 Val Town 的实际开发经验,探讨了在复杂 React 应用中如何避免依赖臃肿、保证 package.json 的可控性。作者强调理解依赖、避免不必要引入、分析依赖大小、借助工具管理更新与清理,并推荐学习优秀开发者的模块。核心观点是:依赖管理是前端开发的必修课,需在技术现实和理想简洁之间找到平衡。


[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 理解依赖与选择
• 在引入新依赖时应阅读源码和 README,而不是盲目安装
• 小型依赖可直接 vendor(复制进项目)而非整个 npm 安装
• 需要权衡依赖体积与使用场景,避免冗余引入

2. 工具与方法论
• 使用 npm ls、package-lock.json、pnpm why 等追踪依赖树与冗余
• 分析依赖的实际体积(开发环境 node_modules 和生产构建大小双维度)
• 借助 rollup-plugin-visualizer、Next.js bundle analyzer 等工具可视化构建产物

3. 模块评估标准
• 好的模块:有维护历史、TypeScript 类型支持、完整测试、文档清晰
• 坏的模块:不符合实际问题、缺乏维护或质量低劣
• 重点在于理解问题本身与模块实现的契合度

4. 清理与升级
• 借助 Renovate 持续更新依赖,避免积压
• 借助 Knip 清理未使用的依赖和文件,保持项目整洁
• 渐进式更新比“年度大升级”风险更低

5. 社群与开发者生态
• 推荐关注优秀开发者如 Sindre Sorhus、isaacs、Matteo Collina、Mafintosh、wooorm、unjs、Rich Harris 等
• 持续追踪他们的作品,有助于找到高质量依赖

6. 哲学与实践
• 依赖不可避免,是现代 Web 开发的本质
• 需要在“必要复杂性”与“依赖治理”之间找到平衡
• 依赖管理是一种长期的“gardening”(园艺)工作


author Tom MacWright
👍2
#demo #codepen #CSS #动画
这个是真的酷!
Gallery Button:纯 CSS 相册预览动画,具备折叠展开的纸张效果
#优质博文 #CSS #前端 #动画 #新特性
The Big Gotcha With @starting-style

AI 摘要:本文介绍了 CSS 的新特性 @starting-style,它允许使用 transition 实现入场动画,但作者指出该特性存在严重的 specificity(优先级)陷阱,使得动画常常无法按预期运行。作者对比了 @starting-style 与传统的 keyframes,分析了具体问题案例,并提出三类解决方案:使用 !important、借助 CSS custom properties(变量)、退回到 keyframes。整体结论是:虽然 @starting-style 看似简化了写法,但 keyframe 动画依然更稳定、通用且易于维护。


author Josh W. Comeau
#碎碎念
话说有没有人笑一笑这个,昨天点进小米的直播间,开幕雷击。
这个我是真服了,手持小米 14pro 感觉还能再苟一年,换哪家好呢 🥺 要不考虑考虑 ov 系?
(PS:iPhone 有了,主力机还是安卓)
👍2
#优质博文 #AI #PromptEngineering
GPT-5-Codex Prompting Guide | OpenAI Cookbook

AI 摘要:本文介绍了 GPT-5-Codex 的特点与最佳提示实践,强调该模型在交互式与代理型编程任务中的独特优化。与通用 GPT-5 相比,其提示设计遵循“少即是多”,减少额外指令和冗余说明。文档详细说明了 CLI 环境下的开发者消息规范、工具权限设置、代码审查方法,以及避免过度提示的反向调优策略,帮助开发者更高效利用 GPT-5-Codex 进行真实世界的软件工程。

[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 模型介绍与定位
• GPT-5-Codex 并非 GPT-5 的直接替代品,而是为 agentic coding 与交互式任务优化。
• 在 Responses API 下支持使用,但不支持 verbosity 参数。
• 专注于真实软件工程场景:快速交互与长时段独立任务皆擅长。

2. 模型核心优势
• 改进的可控性(steerability):在功能开发、调试、测试、重构和代码评审中更高效。
• 自适应推理(adaptive reasoning):根据任务复杂度调整响应速度与深度。
• 出色的代码评审能力:能检查代码库并运行测试以验证正确性。

3. 提示词设计原则
• 遵循“less is more”策略:提示词应尽量简洁。
• 移除不必要的序言(preambles),避免模型提前中止输出。
• 工具使用应限制在 terminal tool 与 apply_patch,并保持描述简洁。
• Codex CLI 的开发者提示比 GPT-5 标准提示精简约 40%。

4. Codex CLI 使用规范
• Shell 调用规范:推荐使用 bash -lc,设置 workdir 参数,优先使用 rg。
• 编辑约束:默认 ASCII,谨慎处理非 ASCII 字符,避免回退用户未要求的改动。
• 规划工具使用:非简单任务才使用,避免生成单步骤计划。
• 沙箱(sandbox)与权限策略:详细定义了文件系统、网络与命令权限的审批机制。

5. 特殊请求处理
• 简单查询用 shell 命令直接解决(如 date)。
• 代码评审流程:先列出问题、风险与缺陷,再简要总结。
• 呈现结果时避免冗余输出,注重可读性与协作感。

6. 输出与风格规范
• 输出为纯文本,适当使用代码块、斜体、行内代码。
• 遵循简洁、协作的语气;优先逻辑清晰而非机械化格式。
• 文件路径引用需独立,遵循特定格式(src/app.ts:42)。

7. Anti-Prompting(避免额外提示的策略)
• 自适应推理已内置,无需额外提示“思考更深”或“快速回答”。
• 长任务规划能力已训练,不需额外计划引导。
• 不生成 preamble,只有必要时才总结。
• 前端默认采用现代最佳实践,可通过短指令指定框架与库(如 React + TypeScript + Tailwind CSS)。


author OpenAI Cookbook Team
#优质博文 #安全 #npm #开源

Our plan for a more secure npm supply chain

AI 摘要:GitHub 针对 npm 供应链近年来遭受的攻击(如基于账户劫持和自我复制恶意软件的事件),提出一系列安全强化措施,包括推进 Trusted Publishing、强制 2FA、多层次 Token 管理以及渐进式改造工作流。这些举措旨在提高整个开源生态系统的韧性,重塑开发者与社区对 npm 的信任。


[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 开源软件与供应链风险
• 开源是现代软件的基石,但规模庞大的生态也带来攻击面扩大与安全风险。
• 最近持续发生基于账户劫持的攻击,导致恶意代码通过知名 npm 包传播。

2. Shai-Hulud 攻击事件回顾
• 2025 年 9 月发生的自我复制蠕虫攻击,利用维护者被攻破的账号传播。
• 注入恶意 post-install 脚本,可窃取多类敏感信息。
• GitHub 与社区紧急响应,移除 500+ 受影响包,并封锁 IoCs 传播链。

3. npm 安全加固路线图
• 引入更严格的身份验证与发布策略:
• 本地发布需强制 2FA。
• Granular Token(细粒度令牌)有效期缩至 7 天。
• 推行 Trusted Publishing(可信发布)。
• 废弃旧的 classic token 和 TOTP 式 2FA,推广 FIDO 2FA。
• 默认禁止基于 token 的发布,要求使用可信发布或强制 2FA。
• 扩展可信发布支持的生态与厂商。

4. Trusted Publishing 与行业协作
• Trusted Publishing 免去在构建流程中管理 API token,被 OpenSSF 推荐。
• 已在 PyPI、RubyGems、crates.io、npm、NuGet 等平台逐步普及。
• GitHub 强调应加快推广,避免攻击者利用过渡期漏洞。

5. npm 维护者可采取的行动
• 优先启用 npm Trusted Publishing,替代 token。
• 在账号、组织、包层面启用并强制 2FA。
• 使用 WebAuthn 替代 TOTP 以提升安全强度。
• 积极参与社区治理,共建韧性更强的供应链安全。
#优质博文 #Chrome #DevTools #AI #MCP #前端 #CSS #浏览器
最近比较忙,这个发的有点晚了~不过大家应该都看到了~
Chrome DevTools (MCP) for your AI agent

AI 摘要:本文介绍了 Chrome 新发布的 DevTools MCP 服务,它通过 Model Context Protocol (MCP) 将大型语言模型 (LLM) 与 Chrome DevTools 连接,使 AI 编程助手能够实时调试网页、诊断错误、模拟用户操作、分析性能问题等,从而提升生成代码的可用性和准确性。文章同时提供了使用场景示例、配置方法以及社区参与途径。

[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 背景与意义
• AI 编程助手生成代码时往往无法看到运行效果,相当于“蒙着眼睛编程”。
• Chrome DevTools MCP 服务解决了这一问题,直接让 AI 编程助手接入浏览器调试环境。

2. Model Context Protocol (MCP) 概述
• MCP 是一个开源标准,用于连接大型语言模型 (LLM) 与外部工具和数据源。
• Chrome DevTools MCP server 将调试与性能分析能力引入 AI agent。
• 示例工具:performance_start_trace,可自动启动 Chrome 并记录性能数据以供分析。

3. 应用场景与示例
实时验证代码修改:AI agent 可直接在浏览器中确认修改是否生效。
诊断网络与控制台错误:AI 可检查网络请求和日志,排查如 CORS 问题。
模拟用户行为:自动执行表单填写、点击测试,复现功能性 bug。
调试样式与布局问题:实时检查 DOM 和 CSS,解决复杂样式错误。
自动化性能审计:运行性能追踪,分析如 LCP (Largest Contentful Paint) 等指标。

4. 使用与配置方法
• 配置方式:在 MCP client 中添加 chrome-devtools 服务。
• 测试示例:运行 prompt "Please check the LCP of web.dev."。
• 更多工具参考:见 tool reference documentation

5. 社区参与与后续发展
• 当前为公测版本,功能会逐步增加。
• 欢迎开发者与厂商反馈需求与问题。
• 参与方式:通过 GitHub issue 提交建议或 bug。


author Mathias Bynens, Michael Hablich
#优质博文 #编程语言 #AI #软件工程
有点子感慨呢,不过话说回来 JS 和 TS 是不是得看合起来的排行(x)
(这种榜单基本上图一乐,真用啥是无所谓的,语言都是相通的)

IEEE 发布了 2025 年顶级编程语言的榜单,Python 再次蝉联第一,JavaScript 和 TypeScript 分别位列第 6 和第 7。

The Top Programming Languages 2025

AI 摘要:文章介绍了 2025 年最新的编程语言排行榜,并指出 Python 继续保持第一;与此同时,JavaScript 的影响力下降。作者进一步探讨了 AI(尤其是大型语言模型 LLM)的崛起如何改变了编程生态,使程序员更少依赖公共知识平台,导致传统衡量语言“流行度”的指标逐步失效。更深层次的趋势是:随着编程被 AI 辅助或部分取代,编程语言的差异性和重要性正在逐渐削弱,程序员未来的价值或将转向算法设计、系统架构与领域知识,而非语言本身。


[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 2025 年编程语言排行榜与现状
• Python 再次蝉联第一,且在 Jobs 排名中超越 SQL 位列首位
• JavaScript 从第三名跌至第六,或受 AI 辅助网站开发的影响
• SQL 技能依然是职场硬通货

2. 流行度测量的困境
• 排行使用多源指标:Google 搜索、Stack Exchange、GitHub 开源活跃度、论文提及等
• AI 助手 (Claude, ChatGPT, Cursor) 改变了程序员获取知识的方式
• Stack Exchange 提问量锐减至去年同期的 22%,公开数据信号衰弱

3. AI 对语言的重要性削弱
• AI 承担语法、结构甚至函数编写,弱化了语言细节的意义
• 未来选择语言可能等同于选择 CPU 指令集般无关紧要
• 新语言难以获取足够的训练数据支撑,不易突破 AI 劣势

4. 新语言诞生的障碍
• 过去依靠书籍、教程与社区 evangelism 推动采用
• LLM 需要海量样本,小众语言表现不佳
• AI 消融了过去促使新语言诞生的“语言痛点”

5. 编程语言的未来角色
• 高级语言本质是抽象与防止“自废武功”,历史源于结构化编程运动
• 硬件层仍然是“Go To”逻辑,AI 或直达中间表示 (intermediate representation)
• 未来可能不需要传统高级语言,转向 prompt → 中间语言 → 编译

6. 程序员角色与教育转变
• 程序员未来关注点转向算法选择、软件架构、系统接口
• 计算机科学教育因注重基本原理而更具价值,相对高于短期 bootcamp 培训
• 未来衡量流行度需探索全新指标
#优质博文 #React #工程化 #前端
好东西啊。
NickvanDyke/eslint-plugin-react-you-might-not-need-an-effect

AI 摘要:这是一个 ESLint 插件,用来帮助开发者发现并避免在 React 项目中错误或不必要使用 useEffect 的场景。通过提供多条规则,它能让代码逻辑更清晰、性能更高、Bug 更少,尤其对初学者有帮助,同时对有经验的开发者也可能带来新的启发。

[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 插件介绍与背景
• 核心思想是减少不必要的 React useEffect 使用
• 改善代码可读性,提高性能,减少逻辑错误
• 推荐新手使用,同时对老手也有价值

2. 安装与配置
• 提供 npm 和 yarn 的安装方法
• 支持 .eslintrc 旧版配置与 eslint.config.js 新版配置
• 可与 eslint-plugin-react-hooks 一起使用以获得更精准的依赖分析

3. 核心规则(Rules)
• no-derived-state:禁止在 effect 中存储衍生 state
• no-chain-state-updates:禁止在 effect 中链式更新 state
• no-event-handler:禁止用 effect 来做事件处理逻辑
• no-adjust-state-on-prop-change:禁止在 prop 改变时用 effect 调整 state
• no-reset-all-state-on-prop-change:禁止在 prop 改变时通过 effect 重置所有 state
• no-pass-live-state-to-parent & no-pass-data-to-parent:禁止在 effect 中向父组件传递 state 或数据
• no-initialize-state:禁止在 effect 中初始化 state
• no-manage-parent:禁止纯依赖 props 的 effect
• no-empty-effect:禁止空的 effect 定义
• 默认推荐配置会启用全部规则作为 warning

4. 测试与实践
• 项目中包含 (in)valid 例子用于规则验证
• 强调插件并非覆盖所有情况,但尽量减少误报

5. 社区与反馈
• 鼓励开发者提出问题和改进建议
• 插件以减少 false positives(误报)为设计目标,即时存在偶发的漏报 (false negatives)

6. 学习资源
React useEffect 官方文档
You Might Not Need an Effect
Synchronizing with Effects
Separating Events from Effects
Lifecycle of Reactive Effects
#优质博文 #JavaScript #ES2023 #前端 #新特性
虽然但是,传统是这么做的吗(?)
Stop using .reverse().find(): meet findLast() - Matt Smith

AI 摘要:本文介绍了 JavaScript 新增的 findLast() 与 findLastIndex(),它们能高效地从数组末尾开始查找元素,解决传统 .slice().reverse().find() 的性能与可读性问题。文章展示了实际应用场景(如日志查找、消息列表、React 组件状态管理等),并详细说明了使用注意事项、最佳实践和浏览器支持情况。


author Matt Smith
#优质博文 #React #JavaScript #前端 #course #SSR
当你用 useEffect + useState 写订阅逻辑时,其实可能应该用 useSyncExternalStore 来避免客户端渲染抖动 (jank)。
You may be looking for a useSyncExternalStore

AI 摘要:作者通过对常见的 React 状态订阅写法 (useEffect + useState) 进行剖析,指出该模式在服务端渲染 (SSR) 下可能引发抖动 (jank),并介绍了 useSyncExternalStore 的优势:它提供了更简洁的 API,支持订阅机制和服务端默认值,从而提升 SSR 渲染体验并减少 UI 闪烁。


[以下是方便搜索索引的大纲(AI 生成),请读原文]

1. 常见的 useEffect + useState 订阅模式
• 使用 useEffect 在组件挂载时订阅事件源 (event source)。
• 更新 useState 来触发组件重渲染,卸载时清理订阅。
• 常见于绑定 ResizeObserver、DOM 引用、外部事件等场景。

2. 该模式在服务端渲染 (SSR) 下的问题
• 初始渲染使用默认值,SSR 时无法订阅浏览器事件。
• 浏览器接管 (hydration) 后才启动订阅并更新状态。
• 导致界面多次渲染,出现 UI 闪烁、过渡不平滑的现象 (jank)。

3. 使用 useSyncExternalStore 的改进方案
• 提供显式的 subscribe 函数实现监听与取消订阅。
• 第二个参数为获取当前值的方法,确保 UI 与外部状态同步。
• 第三个参数允许定义服务端默认值,提升 SSR 初始化体验。
• 案例对比表明,useSyncExternalStore 渲染更平稳,减少 UI 抖动。

4. 开发实践与思考
• 在涉及外部状态订阅 (API、事件、可观察对象) 场景下,应优先考虑 useSyncExternalStore。
• 默认值的设计影响 SSR 渲染体验,可以通过合理设置来降低不适感。
• 对数据可视化、实时 UI 交互等高频场景尤其重要。


author Swizec
👍1
#优质博文 #CSS #前端 #Web标准 #浏览器兼容
蛮有意思的。
The Web’s Most Tolerated Feature - Bocoup

AI 摘要:本文讲述了 CSS zoom 属性如何从 IE 5.5 的非标准功能开始,被开发者滥用、误解、依赖,进而导致兼容性困境。随着 CSS transform 出现,zoom 一度被各浏览器忽略或不一致实现。但由于其在布局层面的独特作用,开发者持续呼声使其最终被纳入 W3C 规范,并在 Interop 2025 得到统一支持。这段历程反映了 Web 标准在兼顾创新与兼容中如何形成共识。

[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 非标准的起点
• 2000 年 IE 5.5 引入 zoom,允许元素放大或缩小,但缺乏正式规范。
• 各浏览器厂商竞相差异化实现,造成碎片化问题,开发者不得不写兼容代码。

2. 替代与取舍
• Mozilla 坚持标准化,未支持 zoom,转而推动 CSS transform。
• Safari 同时实现 transform 与 zoom,导致实现差异与兼容问题。
• zoom 因缺乏标准,处于既流行又边缘的尴尬位置。

3. 使用误区与“伪流行”
• 后续研究发现 zoom 使用率虚高,原因多是用 zoom:1 修复 IE 的 layout bug。
• 通过 HTTP Archive 数据分析,排除 zoom:1 后,实际真实使用率下降约 94%。
• 意味着 zoom 的高排名不过是兼容遗留问题,而非开发者真正需求。

4. 开发者诉求与再度回归
• 部分高流量 Web 应用(如 Excel Web、Gmail 移动端)需要 zoom 的布局影响特性。
• 2023 年 CSS Working Group 提出重新定义 zoom,简化并规范化语义。
• 2025 年进入 Interop 计划,获得主要浏览器支持,终于成为标准化功能。

5. 经验与启示
• Web 的共识虽慢,但能孕育开放与长期可持续的方案。
• 避免依赖专有技术,因短期便利可能导致长期维护成本与兼容困境。
• Web 标准的推进常与社区反馈、开发者需求紧密相关。


author Mike Pennisi
2025/10/21 09:47:57
Back to Top
HTML Embed Code: