#优质博文 #全栈 #course #Express #TypeScript #Node
How To Set Up Express 5 For Production In 2025
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
author Jan Hesters
How To Set Up Express 5 For Production In 2025
AI 摘要:本文从零开始搭建一个生产级别的 Express 5 应用,使用 TypeScript、ESLint + Prettier、Vitest + Supertest 进行规范和测试,展示了如何结构化 Express 项目(分层、按功能归档),如何实现 REST API 的路由、健康检查、日志、CRUD、JWT + cookie 的认证体系,并结合 Prisma + PostgreSQL 构建持久化层。文章采用 TDD(Test-Driven Development)的方法,通过分模块讲解与示例代码,让读者最终完成一个可扩展、可维护的现代 Express 应用。
[以下是方便搜索索引的大纲 (AI 生成),请读原文]
1. 项目初始化与基础配置
• 使用 npm 初始化 Express + TypeScript 项目
• 配置 tsconfig.json 以启用严格模式和 ES Module
• 运行脚本 (build、start、dev) 设置
2. 代码规范与开发工具
• ESLint、Prettier 用于一致性和规范化
• 配置 lint 规则,包括 unicorn、simple-import-sort
• 添加格式化和修复脚本
3. 测试驱动开发 (TDD)
• 使用 Vitest + Supertest 写单元测试和集成测试
• 初始化 Vitest 配置(Node 环境)
• 实现第一个健康检查 (health-check) 测试 → 控制器 → 路由
4. 架构拆分与中间件
• 将 app.ts 与 server.ts 分离
• 使用 morgan 日志中间件
• 功能分组 (features) + MVC 模式 (无 view 层)
• 编写自定义 asyncHandler 简化 error 处理
5. 数据库与数据层 (Prisma + PostgreSQL)
• 初始化 Prisma schema
• 使用 UserProfile 模型
• 实现数据库连接与 PrismaClient 管理
• Facade 模式封装数据库 CRUD
6. 测试数据与校验
• 使用 Factory Functions 快速生成模拟数据
• 使用 Zod 校验 body / query / params
• 对比 express-validator 的类型推断问题
7. 认证与授权 (Authentication & Authorization)
• 集成 cookie-parser 用于读取 cookies
• 使用 JWT + bcrypt 实现登录 / 注册 / 登出
• setJwtCookie、clearJwtCookie、getJwtTokenFromCookie helpers
• Middleware requireAuthentication 实现受保护路由
8. 用户功能与 REST API CRUD
• /user-profiles 列表(带分页)测试与实现
• 单条获取 (GET by ID)、更新 (PATCH)、删除 (DELETE) 的 TDD 流程
• 考虑异常处理:404、400、409
• 自定义 getErrorMessage 工具统一报错输出
9. 项目结构与总结
• 最终应用结构清晰:src/features/*
• Express + TypeScript 项目的完整生产级最佳实践
• 扩展性强,可直接应用于实际开发
author Jan Hesters
www.reactsquad.io
How To Set Up Express 5 For Production In 2025
Learn how to build an Express 5 app with TypeScript. You'll set up a production-ready project with tools for linting, testing and more.
#碎碎念
因为各种原因备了份之后,升级了 macOS 26……
这玩意每次唤出来都肉眼可见的卡一下好难受,还有这个 chrome 图标风格怎么看怎么不顺眼,唉。
然后扬声器开始偶尔会爆杂音了……好像说是老毛病了,问了下同事竟然有个同事一直都这样,找好几次售后都没好,解决办法是带耳机了……
https://www.mobile01.com/topicdetail.php?f=481&t=6585977
最后我在我的电脑上是 sudo killall coreaudiod 解决了,那应该是软件问题,但过一阵子又会偶发,目前除了这个大问题倒还没有别的槽点(设计上的槽点就不提了)
因为各种原因备了份之后,升级了 macOS 26……
这玩意每次唤出来都肉眼可见的卡一下好难受,还有这个 chrome 图标风格怎么看怎么不顺眼,唉。
然后扬声器开始偶尔会爆杂音了……好像说是老毛病了,问了下同事竟然有个同事一直都这样,找好几次售后都没好,解决办法是带耳机了……
https://www.mobile01.com/topicdetail.php?f=481&t=6585977
最后我在我的电脑上是 sudo killall coreaudiod 解决了,那应该是软件问题,但过一阵子又会偶发,目前除了这个大问题倒还没有别的槽点(设计上的槽点就不提了)
#优质博文 #npm #供应链攻击 #安全
太离谱了……
实时更新:Shai-Hulud——史上最危险的NPM漏洞,影响CrowdStrike及数百个流行软件包
[以下是方便搜索索引的大纲(AI 生成),请读原文]
author Idan Dardikman,Yuval Ronen
太离谱了……
实时更新:Shai-Hulud——史上最危险的NPM漏洞,影响CrowdStrike及数百个流行软件包
AI 摘要:文章报道了 2025 年 9 月爆发的 Shai-Hulud 恶意软件攻击,被认为是史上最大规模、最危险的 NPM 供应链攻击,已波及 CrowdStrike 及数百个流行 JavaScript 包。攻击者通过在维护者的包中注入恶意脚本(bundle.js)进行秘密凭据窃取和持久化后门植入,利用自动化工作流在 CI/CD 环境中持续外泄密钥。文中详细给出已确认被攻击的包清单、潜在影响范围及防护建议,包括立即停更、扫描环境、凭据轮换与审计 GitHub 工作流。
[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 攻击背景与规模
• Shai-Hulud 是迄今为止最严重的 NPM 供应链攻击
• 影响范围涵盖高人气的 @ctrl/tinycolor、CrowdStrike 官方包及数百个开源组件
• 恶意代码可自动触发,扩大横向传播
2. 攻击技术与机制
• 注入 bundle.js 脚本,在安装包时执行
• 使用 TruffleHog 扫描本地文件和代码库中的密钥(npm、GitHub、AWS、GCP、Azure 等)
• 创建隐藏的 GitHub Actions 工作流文件(shai-hulud-workflow.yml),用于在 CI/CD 阶段外泄凭据
• 双重目标:密钥窃取 + 持久后门部署
3. 影响与风险评估
• 大量开发者环境(本地 + 云端)已可能泄露敏感凭据
• 攻击持续性强,即便删除恶意包后,持久化机制仍可能存活
• 企业级安全厂商 CrowdStrike 受影响,进一步放大危机
4. 应对建议与缓解措施
• 立即扫描所有终端与构建环境,确认是否安装受影响包
• 暂时冻结 npm 包的更新,避免进一步扩散
• 轮换全部相关凭据(GitHub、npm、AWS、GCP、Azure 等)
• 审计 GitHub 工作流,排查 shai-hulud-workflow.yml 等异常文件
• 对流程与自动化管道进行全面安全加固
author Idan Dardikman,Yuval Ronen
www.koi.security
Live Updates: Shai-Hulud, The Most Dangerous NPM Breach In History Affecting CrowdStrike and Hundreds of Popular Packages
#优质博文 #CSS #前端 #新特性
What Can We Actually Do With corner-shape?
author Daniel Schwarz
What Can We Actually Do With corner-shape?
AI 摘要:本文介绍了 CSS 最新属性 corner-shape 的多种应用方式,它可以与 border-radius 配合,突破传统圆角与直角的限制,实现斜切、箭头、提示框、手绘风格、squircle(方圆形)等复杂的 UI 效果。目前仅 Chrome 139+ 支持,文章通过丰富实例展示其潜在的设计与交互价值。
author Daniel Schwarz
CSS-Tricks
What Can We Actually Do With corner-shape? | CSS-Tricks
When I first started messing around with code, rounded corners required five background images or an image sprite likely created in Photoshop, so when
👍1
#优质博文 #CSS #前端 #新特性
被低估的 linear() 函数 linear() 函数如何使用?了解下 linear() 函数的原理
author zhangxinxu
被低估的 linear() 函数 linear() 函数如何使用?了解下 linear() 函数的原理
AI 摘要:本文深入探讨了 CSS 新增的 linear() 函数,它突破 cubic-bezier() 的局限,能通过多个参数点实现复杂的分段线性动画,具有极高的可控性。作者还介绍了工具生成 linear() 代码的方法、与其他缓动函数的对比,以及实际应用场景,总结 linear() 在动画设计中的价值和独特作用。
author zhangxinxu
Zhangxinxu
使用CSS linear()函数实现更逼真的物理动画效果 « 张鑫旭-鑫空间-鑫生活
CSS新支持的linear()函数可以让我们实现任意速率动画,所以,无论是更加逼真的物理动画,还是特殊的阶梯式动画都不在话下,让CSS动画的能力进一步增强。
#优质博文 #AI #MCP #新动态 #开源
GitHub 推出官方 MCP Registry,统一入口快速发现和使用 MCP servers。
Meet the GitHub MCP Registry: The fastest way to discover MCP Servers
GitHub 推出官方 MCP Registry,统一入口快速发现和使用 MCP servers。
Meet the GitHub MCP Registry: The fastest way to discover MCP Servers
AI 摘要:本文介绍 GitHub 推出的 MCP Registry,旨在解决以往 MCP servers 分散、难以发现和管理的问题。通过集中托管与社区协作,开发者可以在一个统一平台上更快找到所需工具,与 GitHub Copilot、VS Code 等生态无缝集成。文章强调该平台对开放互操作标准的贡献,以及合作伙伴(如 Figma、Postman、HashiCorp、Dynatrace 等)所带来的典型应用场景,展示 MCP Registry 在推动 agentic workflows 与 AI 生态健康发展的重要性。
GitHub
MCP Registry
A faster, safer way to build with AI: the GitHub MCP Registry centralizes MCP servers for effortless discovery, integration, and open collaboration.
❤5
#优质博文 #css #webkit #ios #前端 #CSS
Apple has a private CSS property to add Liquid Glass effects to web content
author Alastair Coote
Apple has a private CSS property to add Liquid Glass effects to web content
AI 摘要:作者在研究 WebKit 更新日志时发现 Apple 正在引入一个私有 CSS 属性 -apple-visual-effect,它可以让 Web 内容利用 Liquid Glass 效果。虽然该功能目前既不能在 Safari 上使用,也无法通过常规 WKWebView 使用,除非启用私有设置 useSystemAppearance,因此开发者不能直接用于 App Store 应用。但这一变化揭示:Apple 自己已经在内部使用该功能,说明 webview 在系统应用中的整合比用户意识到的更深入,印证了所谓 “The Toupée Theory of In-App Webviews” —— 好的 webview 被无感知地使用,坏的才被用户注意。
author Alastair Coote
Alastair Writes Code
Apple has a private CSS property to add Liquid Glass effects to web content
I have an incredibly boring summer hobby: looking at the changelog for the WebKit Github repo. Why? Because I spend a chunk of my professional life working with webviews inside mobile apps and I like to get an early peek into what's coming in the next version…
#优质博文 #前端 #跨端
Lynx 3.4 正式发布
author Lynx 团队
Lynx 3.4 正式发布
AI 摘要:Lynx 3.4 按计划完成双月更新,带来 HarmonyOS 与 Windows 环境支持,推出 Trace 与 Recorder 开发者工具,新增 <input> 与 <textarea> 核心组件,同时改进 <list> 回收策略、动画控制与可变字体支持。这些升级旨在提升开发灵活性、渲染性能及多端兼容性,为开发者带来更完善的跨平台体验。
author Lynx 团队
#Newsletter #react #javascript #css #前端
React Status Issue 444: September 17, 2025
React Status Issue 444: September 17, 2025
AI 摘要:本期 React Status 报导了一个与 useEffect 使用不当导致 Cloudflare 仪表盘宕机的案例,提醒开发者谨慎处理副作用;同时探讨了控制 package.json 依赖膨胀的技巧;介绍了 AI 辅助的终端代码审查工具 CodeRabbit CLI;并整理了近期前端生态的更新,包括 React Canary 新特性、pnpm 安全机制、Expo 54 改进、TanStack 工具集更新,以及 JavaScript 社区内围绕 npm 供应链攻击、Safari 26.0 发布和 Bun 1.2.22 发布等动态。
#优质博文 #科研工具 #AI #文献管理 #学术搜索
WisPaper:搜、问、读,陪你一起搞科研的专业Agent
AI 摘要:WisPaper是复旦大学研发的一款免费AI学术工具,旨在帮助科研人员解决文献检索和阅读难题。它提供AI智能搜索功能,能精准查找海外权威期刊,并支持本地文件库的智能搜索。此外,WisPaper还能进行文献深度对话、精准翻译以及一键提炼文献核心论点、研究方法和关键结论,显著提高科研效率。
author 小众软件
WisPaper:搜、问、读,陪你一起搞科研的专业Agent
AI 摘要:WisPaper是复旦大学研发的一款免费AI学术工具,旨在帮助科研人员解决文献检索和阅读难题。它提供AI智能搜索功能,能精准查找海外权威期刊,并支持本地文件库的智能搜索。此外,WisPaper还能进行文献深度对话、精准翻译以及一键提炼文献核心论点、研究方法和关键结论,显著提高科研效率。
author 小众软件
WisPaper
WisPaper | Scholar Search, Literature Review, AI Research Feeds
WisPaper provides scholar search, literature review assistance, and AI-powered paper feeds. Screen 1,000 papers in seconds, find 20 must-read studies, and stay updated with research tailored to your interests.
#优质博文 #前端 #CSS #SVG #性能优化 #动画
Replace Your Animated GIFs with SVGs
author John Rhea
Replace Your Animated GIFs with SVGs
AI 摘要:文章介绍了使用 SVG 动画 作为 GIF 动画 替代方案的优势。与 GIF 相比,SVG 动画文件体积更小、分辨率无损放大、与部分 CSS 媒体查询兼容,还可以直接嵌入 img 标签或作为背景图使用。但也存在局限:如不支持 prefers-reduced-motion、无法触发交互事件(hover/click)、限制 JavaScript 等。整体上,SVG 动画是 GIF 的现代替代,尤其适用于形状移动或变换类动画,性能和画质优势明显。
author John Rhea
Frontend Masters
Replace Your Animated GIFs with SVGs
No one loves dancing hamster GIFs more than I do. But all those animated frames can add up to files so large you don’t even see the dancing hamster. Your other tab has already loaded and you’ve followed the dopamine hits down another social media rabbit hole.
#优质博文 #CSS #新特性 #前端
非常全的 CSS 新特性合集。
你需要知道的现代 CSS(2025版)
[以下是方便搜索索引的大纲(AI 生成),请读原文]
author Chris Coyier
非常全的 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
Frontendmasters
What You Need to Know about Modern CSS (2025 Edition)
If you thought 2024 was packed with amazing new CSS, well, you're right. But so is 2025 and it keeps looking bright. Check out our list of the best stuff with easy-to-reference examples.