<?xml version="1.0" encoding="UTF-8"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>印记中文 - 深入挖掘国外前端新领域，为国内 Web 前端开发人员提供优质文档！</title><link>https://docschina.org/news/weekly/js</link><atom:link href="http://rss.144-124-237-35.sslip.io/docschina/weekly" rel="self" type="application/rss+xml"></atom:link><description>印记中文 - 深入挖掘国外前端新领域，为国内 Web 前端开发人员提供优质文档！ - Powered by AtomRSS</description><generator>AtomRSS</generator><webMaster>contact@atomgroup.dev (AtomRSS)</webMaster><language>en</language><lastBuildDate>Wed, 12 Aug 2026 11:32:34 GMT</lastBuildDate><ttl>5</ttl><item><title>690 期 -</title><description>&lt;hr&gt;
&lt;p&gt;title: 690 期 -&lt;br&gt;
editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yucohny&lt;br&gt;
description:&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.1password.com/new-extension-build-system/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ldkxapzrw5xv3wyknkyw.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;🔥 本周热门&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.1password.com/new-extension-build-system/&quot; title=&quot;blog.1password.com&quot;&gt;How 1Password Used esbuild to Cut Browser Extension Build Times&lt;/a&gt;&lt;/strong&gt; —— 1Password is a popular password management tool that relies upon a browser extension to fill out passwords on the Web. At over a minute for a single build, things were starting to drag for the devs. Could &lt;a href=&quot;https://esbuild.github.io/&quot;&gt;esbuild&lt;/a&gt; help? A fun story with plenty of technical&amp;nbsp;details.&lt;/p&gt;
&lt;p&gt;Jarek Samic&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://nextjs.org/blog/next-15-rc&quot; title=&quot;nextjs.org&quot;&gt;Next.js 15 Release Candidate&lt;/a&gt;&lt;/strong&gt; —— The popular React meta framework gets ready for a major new release with a RC giving you an opportunity to experiment with React 19 (and React Compiler) support, executing code &lt;em&gt;after&lt;/em&gt; a response with &lt;code&gt;next/after&lt;/code&gt;, and a few potentially breaking&amp;nbsp;changes.&lt;/p&gt;
&lt;p&gt;Delba de Oliveira and Zack Tanner&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://aem1k.com/&quot; title=&quot;aem1k.com&quot;&gt;aem1k: A Variety of JS Hacks and Creative Coding&lt;/a&gt;&lt;/strong&gt; —— This is a fun one. Martin really captures the joy and expressiveness of JavaScript and the Web with his collection of projects, whether it’s offering a &lt;a href=&quot;https://jsfuck.com/&quot;&gt;NSFW-named tool&lt;/a&gt; to convert your JavaScript into just six characters, rendering &lt;a href=&quot;https://aem1k.com/world/&quot;&gt;a spinning globe in 1KB of JS&lt;/a&gt;, the &lt;a href=&quot;https://aem1k.com/life/&quot;&gt;Game of Life in 176 bytes&lt;/a&gt;, and &lt;em&gt;many more&lt;/em&gt; such&amp;nbsp;experiments.&lt;/p&gt;
&lt;p&gt;Martin Kleppe&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快讯：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The folks behind the long standing &lt;a href=&quot;https://gulpjs.com/&quot;&gt;Gulp&lt;/a&gt; build tool &lt;a href=&quot;https://www.surveyhero.com/c/dbdqqnrp&quot;&gt;are running a survey&lt;/a&gt; to help make Gulp better and suit modern needs. It closes tomorrow.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🫠 JavaScript&#39;s creator Brendan Eich &lt;a href=&quot;https://x.com/BrendanEich/status/1795865137317908739&quot;&gt;popped up on Twitter/X&lt;/a&gt; to refute a claim that JS is &quot;the most slop&quot; by saying it&#39;s only 50% so.. I don&#39;t get it&amp;nbsp;either.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you haven&#39;t gone down the &lt;a href=&quot;https://jsr.io/&quot;&gt;JSR&lt;/a&gt; rabbit hole yet, let &lt;a href=&quot;https://www.youtube.com/watch?v=MFCn4ce5dVc&quot;&gt;▶️ Ryan Dahl convince you&lt;/a&gt; through his DevWorld 2024 talk. &lt;em&gt;(29&amp;nbsp;minutes.)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Three.js introduces &lt;a href=&quot;https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language&quot;&gt;its own &#39;TSL&#39; shader language&lt;/a&gt; as a way to write WebGPU shaders with JavaScript rather than the WebGPU Shading&amp;nbsp;Language.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📒&amp;nbsp; 教程与趣事&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://snyk.io/blog/10-modern-node-js-runtime-features/&quot; title=&quot;snyk.io&quot;&gt;10 Modern Node.js Runtime Features to Start Using in 2024&lt;/a&gt;&lt;/strong&gt; —— If it ever feels like the new feature spotlight shines too much on &lt;a href=&quot;https://bun.sh/&quot;&gt;Bun&lt;/a&gt; or &lt;a href=&quot;https://deno.com/blog&quot;&gt;Deno&lt;/a&gt;, never fear - Node.js has been taking huge strides forward too. Liran looks at lots of what’s&amp;nbsp;new.&lt;/p&gt;
&lt;p&gt;Liran Tal&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://2ality.com/2024/05/proposal-symbols-as-weakmap-keys.html&quot; title=&quot;2ality.com&quot;&gt;ECMAScript 2023 Feature: Symbols as WeakMap keys&lt;/a&gt;&lt;/strong&gt; —— Dr. Axel continues his look at language features by explaining what WeakMaps are for and why using symbols for keys has added&amp;nbsp;benefits.&lt;/p&gt;
&lt;p&gt;Dr. Axel Rauschmayer&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;▶&amp;nbsp;&lt;a href=&quot;https://www.youtube.com/watch?v=L8wGnaFM_Kw&quot; title=&quot;www.youtube.com&quot;&gt;uBlock Origin: Let&#39;s Read the Code&lt;/a&gt;&lt;/strong&gt; —— A prolific code reader spends some time digging into the popular ad blocker that’s almost entirely built in&amp;nbsp;JavaScript.&lt;/p&gt;
&lt;p&gt;Ants Are Everywhere&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://thenewstack.io/why-we-need-a-standard-javascript-orm-for-sql-databases/&quot; title=&quot;thenewstack.io&quot;&gt;Why We Need a Standard JavaScript ORM for SQL Databases&lt;/a&gt;&lt;/strong&gt; —— ..and is it &lt;a href=&quot;https://orm.drizzle.team/&quot;&gt;Drizzle?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Paul Scanlon (The New Stack)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://thenewstack.io/want-out-of-react-complexity-try-vues-progressive-framework/&quot; title=&quot;thenewstack.io&quot;&gt;Want Out of React Complexity? Try Vue&lt;/a&gt;&lt;/strong&gt; —— A high level piece that may provide some context if you haven’t dabbled with Vue&amp;nbsp;yet.&lt;/p&gt;
&lt;p&gt;Richard MacManus (The New Stack)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://wasp-lang.dev/blog/2024/05/29/why-we-dont-have-laravel-for-javascript-yet&quot;&gt;Why We Don&#39;t Have a Laravel For JavaScript... Yet&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vince Canger（Wasp）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://www.propelauth.com/post/nextjs-challenges&quot;&gt;It’s Not Just You, Next.js is Getting Harder to Use&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Andrew Israel&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://spacejelly.dev/posts/how-to-create-a-modal-in-react-with-html-dialog&quot;&gt;How to Create a Modal in React with HTML&#39;s &lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Colby Fayock&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://www.angularaddicts.com/p/whats-new-in-angular-18&quot;&gt;What&#39;s New in Angular 18&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Gergely Szerovay&lt;/p&gt;
&lt;h2&gt;🛠&amp;nbsp; 代码与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://regexper.com/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/aboahlfwziq2t9nrhjko.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://regexper.com/&quot; title=&quot;regexper.com&quot;&gt;Regexper: Display JavaScript Regular Expressions as Railroad&amp;nbsp;Diagrams&lt;/a&gt;&lt;/strong&gt; —— Might come in handy for learning regular expressions or if you have a complex regular expression and you don’t know what it does (not an uncommon&amp;nbsp;situation..!)&lt;/p&gt;
&lt;p&gt;Jeff Avallone&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/honojs/hono/releases/tag/v4.4.0&quot; title=&quot;github.com&quot;&gt;Hono v4.4: The Standards-Based JS Web App Framework for Everywhere&lt;/a&gt;&lt;/strong&gt; —— &lt;a href=&quot;https://hono.dev/&quot;&gt;Hono&lt;/a&gt; is a small, fast web framework with a straightforward API, middleware support, and that runs pretty much on anything (Deno, Bun, Node, Cloudflare, and more). v4.4 brings it &lt;a href=&quot;https://javascriptweekly.com/link/155808/web&quot;&gt;to JSR&lt;/a&gt;, adds timeout middleware, and a helper to get information about connected&amp;nbsp;clients.&lt;/p&gt;
&lt;p&gt;Yusuke Wada and Contributors&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://inertiajs.com/&quot; title=&quot;inertiajs.com&quot;&gt;Inertia.js v1.1: Build SPAs for Any Backend&lt;/a&gt;&lt;/strong&gt; —— Inertia acts as ‘glue’ between various frontend libraries (React, Vue, or Svelte, say) and server-side frameworks (e.g. Rails or&amp;nbsp;Laravel).&lt;/p&gt;
&lt;p&gt;Jonathan Reinink&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/share/sharedb&quot; title=&quot;github.com&quot;&gt;ShareDB v5.0: Realtime Database Backend Based on Operational Transformation&lt;/a&gt;&lt;/strong&gt; —— For when you need real time synchronization of JSON documents (such as for behind a real time collaboration&amp;nbsp;app).&lt;/p&gt;
&lt;p&gt;ShareJS&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://aem1k.com/qlock/&quot; title=&quot;aem1k.com&quot;&gt;Qlock: A JavaScript Quine Clock&lt;/a&gt;&lt;/strong&gt; —— We linked to Martin&#39;s array of creative JavaScript experiments earlier, but why not finish with one that particularly tickled us? A &lt;a href=&quot;https://en.wikipedia.org/wiki/Quine_(computing)&quot;&gt;quine&lt;/a&gt; is a program that takes no input but manages to produce, as output, its own source code. Here’s a fun JavaScript example that isn’t merely a quine, but a clock&amp;nbsp;too.&lt;/p&gt;
&lt;p&gt;Martin Kleppe&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;版本发布：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://astro.build/blog/astro-490/&quot;&gt;Astro v4.9&lt;/a&gt;&lt;/strong&gt; – The framework that does everything now does even more, gaining React 19 enhancements, plus a Container API for rendering Astro components &lt;em&gt;outside&lt;/em&gt; of Astro&amp;nbsp;apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.rspack.dev/blog/announcing-0-7&quot;&gt;Rspack v0.7&lt;/a&gt;&lt;/strong&gt; – Fast Rust-based web&amp;nbsp;bundler.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://storybook.js.org/blog/storybook-8-1/&quot;&gt;Storybook v8.1&lt;/a&gt;&lt;/strong&gt; – The frontend component workshop.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://deno.com/blog/v1.44&quot;&gt;Deno v1.44&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://bpcreech.com/post/mini-racer-v0.12.2/&quot;&gt;PyMiniRacer v0.12.2&lt;/a&gt;&lt;/strong&gt; – Call your Python from your JavaScript from your&amp;nbsp;Python.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://knip.dev/&quot;&gt;Knip v5.17.0&lt;/a&gt;&lt;/strong&gt; – Finds and removes unused files, dependencies and exports. Now &lt;a href=&quot;https://x.com/webprolific/status/1794995970561704446&quot;&gt;with&amp;nbsp;&lt;em&gt;more.&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://pm2.keymetrics.io/&quot;&gt;PM2 v5.4&lt;/a&gt;&lt;/strong&gt; – Popular Node.js-based process manager for&amp;nbsp;production.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://melange.re/blog/posts/melange-4-is-here&quot;&gt;Melange v4.0&lt;/a&gt;&lt;/strong&gt; – OCaml compiler for JavaScript&amp;nbsp;developers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://neutralino.js.org/docs/release-notes/framework/&quot;&gt;Neutralinojs v5.2&lt;/a&gt;&lt;/strong&gt; – Lightweight cross-platform desktop app&amp;nbsp;framework.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://netil.medium.com/billboard-js-3-12-release-new-funnel-chart-a66368804ce4&quot;&gt;Billboard.js v3.12&lt;/a&gt;&lt;/strong&gt; – The popular chart library gets funnel&amp;nbsp;charts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/bbc/peaks.js&quot;&gt;Peaks.js v3.4&lt;/a&gt;&lt;/strong&gt; – BBC-created audio waveform UI&amp;nbsp;component.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/capricorn86/happy-dom/releases/tag/v14.12.0&quot;&gt;Happy DOM v14.12&lt;/a&gt;&lt;/strong&gt; – JS implementation of a web browser &lt;em&gt;sans&lt;/em&gt;&amp;nbsp;UI.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/RetireJS/retire.js&quot;&gt;Retire.js v5.0&lt;/a&gt;&lt;/strong&gt; – Scans for JS libraries with known&amp;nbsp;vulnerabilities.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/thecodingmachine/react-native-boilerplate&quot;&gt;React Native Boilerplate v4.2&lt;/a&gt;&lt;/strong&gt; – A starter template for RN&amp;nbsp;apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/redom/redom&quot;&gt;RE:DOM v4.1&lt;/a&gt;&lt;/strong&gt; – Tiny library for creating user interfaces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/AlaSQL/alasql&quot;&gt;AlaSQL.js v4.4&lt;/a&gt;&lt;/strong&gt; – Isomorphic JavaScript SQL&amp;nbsp;database.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/mesqueeb/is-what&quot;&gt;is-what v5.0&lt;/a&gt;&lt;/strong&gt; – Simple, small JS type check&amp;nbsp;functions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://fxts.dev/&quot;&gt;FxTS v1.0&lt;/a&gt;&lt;/strong&gt; – Functional programming&amp;nbsp;library.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://docschina.org/news/weekly/js/690</link><guid isPermaLink="false">https://docschina.org/news/weekly/js/690</guid><author>Yucohny</author><itunes:image href="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ldkxapzrw5xv3wyknkyw.jpg"></itunes:image></item><item><title>689 期 - SolidStart v1.0 发布：未来框架的形态？</title><description>&lt;hr&gt;
&lt;p&gt;title: 689 期 - SolidStart v1.0 发布：未来框架的形态？&lt;br&gt;
editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yucohny&lt;/li&gt;
&lt;li&gt;Zhper&lt;/li&gt;
&lt;li&gt;TimLi&lt;br&gt;
description: SolidJS 是一个受 React 启发的声明式 UI 库，但注重性能，模板被编译为直接接收 DOM 更新的真实 DOM 节点——因此无需虚拟 DOM。SolidStart 是一个用于构建和部署 SolidJS 应用程序的框架，开箱即用的众多强大功能使其非常吸引人。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://www.amygoodchild.com/blog/cursive-handwriting-in-javascript&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/itlesgqryzibpq5ejtgy.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;🔥 本周热门&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.amygoodchild.com/blog/cursive-handwriting-in-javascript&quot; title=&quot;www.amygoodchild.com&quot;&gt;使用 p5.js 创建真实的手写效果&lt;/a&gt;&lt;/strong&gt; —— Amy 想要在她制作的一些图表中以编程方式加入她的（连笔）手写效果，并找到了使用 &lt;a href=&quot;https://p5js.org/&quot;&gt;p5.js&lt;/a&gt; 实现这一目标的方法。这篇文章介绍了她的实现过程。&lt;/p&gt;
&lt;p&gt;Amy Goodchild&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.solidjs.com/blog/solid-start-the-shape-frameworks-to-come&quot; title=&quot;www.solidjs.com&quot;&gt;SolidStart v1.0 发布：未来框架的形态？&lt;/a&gt;&lt;/strong&gt; —— &lt;a href=&quot;https://www.solidjs.com/&quot;&gt;SolidJS&lt;/a&gt; 是一个受 React 启发的声明式 UI 库，但注重性能，模板被编译为直接接收 DOM 更新的真实 DOM 节点——因此无需虚拟 DOM。SolidStart 是一个用于构建和部署 SolidJS 应用程序的框架，开箱即用的众多强大功能使其非常吸引人。&lt;/p&gt;
&lt;p&gt;SolidJS 核心团队&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.angular.dev/angular-v18-is-now-available-e79d5ac0affe?gi=c7982932c99c&quot; title=&quot;blog.angular.dev&quot;&gt;Angular v18 发布&lt;/a&gt;&lt;/strong&gt; —— 这个大型框架在去年通过 &lt;a href=&quot;https://blog.angular.dev/introducing-angular-v17-4d7033312e4b?gi=4e7d097e9726&quot;&gt;Angular 17&lt;/a&gt; 和其 &lt;a href=&quot;https://angular.dev/&quot;&gt;新主页&lt;/a&gt; 得到了大规模的公众复兴。进展继续，增加了对无 zone 变更检测的实验性支持，以及新的内置控制流方法的稳定实现。&lt;/p&gt;
&lt;p&gt;Minko Gechev&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快讯：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;是否曾考虑尝试 &lt;a href=&quot;https://go.dev/&quot;&gt;Go&lt;/a&gt; 编程语言？一位 JavaScript 开发者尝试了并 &lt;a href=&quot;https://gebna.gg/blog/javascript-developer-tries-golang&quot;&gt;分享了他们的第一印象&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Remix 的 Ryan Florence &lt;a href=&quot;https://remix.run/blog/incremental-path-to-react-19&quot;&gt;发布了新博客&lt;/a&gt;，回答了一些针对 React Router 和 Remix “合并”的问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ldapjs/node-ldapjs#readme&quot;&gt;Node LDAP 库的维护者在遭受恶意辱骂后停用了此项目&lt;/a&gt;。如果您在使用一个开源项目时遇到问题，请保持友善。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📒&amp;nbsp; 教程与趣事&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://frankforce.com/city-in-a-bottle-a-256-byte-raycasting-system/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/y12gberpkkivfsubmlb6.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://frankforce.com/city-in-a-bottle-a-256-byte-raycasting-system/&quot; title=&quot;frankforce.com&quot;&gt;瓶中的城市：256 字节的光线投射&lt;/a&gt;&lt;/strong&gt; —— Frank 以使用最少量的 JavaScript 组合出令人惊叹的视觉演示而闻名，这个演示也不例外。他详细介绍了演示的工作原理。&lt;/p&gt;
&lt;p&gt;Frank Force&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://developer.chrome.com/docs/devtools/console/understand-messages&quot; title=&quot;developer.chrome.com&quot;&gt;Chrome DevTools 提供 AI 工具来理解错误和警告&lt;/a&gt;&lt;/strong&gt; —— 不是每个人都喜欢，但它是可选的。另外：第一个需要年满 18 岁的 Chrome 功能是什么？&lt;/p&gt;
&lt;p&gt;Guo，Emelianova 与 Yeen（Google）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📊&amp;nbsp;&lt;a href=&quot;https://blog.jiayihu.net/comprenhensive-guide-chrome-performance/&quot; title=&quot;blog.jiayihu.net&quot;&gt;使用 Chrome DevTools 进行 JavaScript 性能分析的指南&lt;/a&gt;&lt;/strong&gt; —— 如果你更喜欢没有 AI 的调试体验，请放心。这是使用 Chrome DevTools 探索性能问题的实用全面的练习。&lt;/p&gt;
&lt;p&gt;Jiayi Hu&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://2ality.com/2024/05/proposal-duplicate-named-capturing-groups.html&quot;&gt;ECMAScript 提案：正则表达式的重复命名捕获组&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dr. Axel Rauschmayer&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://codeanlabs.com/blog/research/cve-2024-4367-arbitrary-js-execution-in-pdf-js/&quot;&gt;挖掘 PDF.js 中的任意 JavaScript 执行漏洞&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Codean Labs&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://github.com/andrico1234/the-dilemmas-youll-face&quot;&gt;创建组件库时面临的困境&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Andrico Karoulla&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://www.carlos-menezes.com/post/branded-types&quot;&gt;TypeScript 的品牌类型&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Carlos Menezes&lt;/p&gt;
&lt;h2&gt;🛠&amp;nbsp; 代码与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://szimek.github.io/signature_pad/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/iitzswapahq2m5hcvzvh.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🖋️&amp;nbsp;&lt;a href=&quot;https://szimek.github.io/signature_pad/&quot; title=&quot;szimek.github.io&quot;&gt;Signature Pad v5.0：平滑的签名绘制控制板&lt;/a&gt;&lt;/strong&gt; —— 如果你需要人们在网上给你签名，用这个让他们写出难以理解但具有法律约束力的涂鸦。这是 &lt;a href=&quot;https://github.com/szimek/signature_pad&quot;&gt;GitHub&amp;nbsp; 仓库&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Szymon Nowak&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;版本发布：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://nextjs.org/blog/next-15-rc&quot;&gt;Next.js v15 发布候选版本&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://eslint.org/blog/2024/05/eslint-v9.3.0-released/&quot;&gt;ESLint v9.3.0&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://nodejs.org/en/blog/release/v18.20.3&quot;&gt;Node.js v18.20.3（LTS）&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/neuroneural/brainchop&quot;&gt;Brainchop v4.0&lt;/a&gt;&lt;/strong&gt; – 一个在浏览器使用的 3D MRI 渲染系统。这是 &lt;a href=&quot;https://brainchop.org/&quot;&gt;演示&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/redwoodjs/redwood/releases/tag/v7.6.0&quot;&gt;Redwood v7.6&lt;/a&gt;&lt;/strong&gt; – GraphQL 驱动的 React&amp;nbsp; 框架，现在有实验性的 React Compiler 支持。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/axios/axios&quot;&gt;Axios v1.7&lt;/a&gt;&lt;/strong&gt; – 基于 promise 的同构 HTTP 客户端。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🖋️ &lt;strong&gt;&lt;a href=&quot;https://github.com/jakubfiala/atrament&quot;&gt;Atrament v4.4&lt;/a&gt;&lt;/strong&gt; – 在 HTML Canvas 上平滑绘图的库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/komarovalexander/ka-table&quot;&gt;ka-table v10.0&lt;/a&gt;&lt;/strong&gt; – 轻量级 React 表格组件。这是 &lt;a href=&quot;https://komarovalexander.github.io/ka-table/#/overview&quot;&gt;演示&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/jcubic/jquery.terminal&quot;&gt;jQuery Terminal Emulator v2.42&lt;/a&gt;&lt;/strong&gt; – 面向 web 的终端体验。这是 &lt;a href=&quot;https://terminal.jcubic.pl/#demo&quot;&gt;演示&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=nicoespeon.abracadabra#abracadabra&quot;&gt;Abracadabra v9.2&lt;/a&gt;&lt;/strong&gt; – 面向 VS Code 的 JavaScript 和 TypeScript 自动重构。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://docschina.org/news/weekly/js/689</link><guid isPermaLink="false">https://docschina.org/news/weekly/js/689</guid><author>Yucohny,Zhper,TimLi</author><itunes:image href="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/itlesgqryzibpq5ejtgy.jpg"></itunes:image></item><item><title>688 期 - Google 发布 Web Platform Dashboard</title><description>&lt;hr&gt;
&lt;p&gt;title: 688 期 - Google 发布 Web Platform Dashboard&lt;br&gt;
editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yucohny&lt;br&gt;
description: 在 Google I/O 大会上，Google 团队发布了 Web Platform Dashboard，这是一种查看作为一组功能的 Web 平台的方法，以及它们的跨浏览器支持情况。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://deno.com/blog/document-javascript-package&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ibvym0ua1mtof3iplk1q.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;🔥 本周热门&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://deno.com/blog/document-javascript-package&quot; title=&quot;deno.com&quot;&gt;为 JavaScript 包编写文档&lt;/a&gt;&lt;/strong&gt; —— Deno 团队在这篇文章展示了 &lt;a href=&quot;https://jsdoc.app/&quot;&gt;JSDoc&lt;/a&gt; 的价值，并说明了如何将文档与常规源码一起编写。&lt;/p&gt;
&lt;p&gt;Deno 团队&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://2ality.com/2024/05/proposal-promise-with-resolvers.html&quot; title=&quot;2ality.com&quot;&gt;深入研究 &lt;code&gt;Promise.withResolvers()&lt;/code&gt; 提案&lt;/a&gt;&lt;/strong&gt; —— Dr. Axel 深入研究了提案中的 &lt;a href=&quot;https://github.com/tc39/proposal-promise-with-resolvers&quot;&gt;&lt;code&gt;Promise.withResolvers&lt;/code&gt;&lt;/a&gt; 功能（现已达到 Stage 4），并解释了为什么可能会更喜欢使用它来更优雅地创建 Promise。&lt;/p&gt;
&lt;p&gt;Dr. Axel Rauschmayer&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://react.dev/learn/react-compiler&quot; title=&quot;react.dev&quot;&gt;现在可以开始尝试 React 编译器&lt;/a&gt;&lt;/strong&gt; —— 本周 &lt;a href=&quot;https://conf.react.dev/&quot;&gt;React Conf&lt;/a&gt; 的一个重要项目是 React 实验性编译器的开源，用于在构建时优化 React 代码。他们还创建了一个 &lt;a href=&quot;https://playground.react.dev/&quot;&gt;React 编译器游乐场&lt;/a&gt; 供大家试验。&lt;/p&gt;
&lt;p&gt;React 团队&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快讯：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在 Google I/O 大会上，Google 团队 &lt;a href=&quot;https://web.dev/blog/web-platform-dashboard?hl=zh-cn&quot;&gt;发布&lt;/a&gt; 了 &lt;a href=&quot;https://webstatus.dev/&quot;&gt;Web Platform Dashboard&lt;/a&gt;，这是一种查看作为一组功能的 Web 平台的方法，以及它们的跨浏览器支持情况。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;⭐ &lt;a href=&quot;https://remix.run/&quot;&gt;Remix&lt;/a&gt; 和 &lt;a href=&quot;https://reactrouter.com/en/main&quot;&gt;React Router&lt;/a&gt; 有着共同的历史（并且功能越来越多），这最终导致 &lt;a href=&quot;https://remix.run/blog/merging-remix-and-react-router&quot;&gt;Remix 和 React Router 的合并&lt;/a&gt;：“我们计划发布的 Remix v3 现在将作为 React Router v7 发布。”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;现在 &lt;a href=&quot;https://deno.com/blog/std-on-jsr&quot;&gt;可以在 JSR 上获取 Deno 标准库&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📒&amp;nbsp; 教程与趣事&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://tduyng.github.io/blog/dynamic-github-profile-with-bun-typescript/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/fj4f5qwg6qh0umgzqd3s.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://tduyng.github.io/blog/dynamic-github-profile-with-bun-typescript/&quot; title=&quot;tduyng.github.io&quot;&gt;使用 Bun 和 TypeScript 让 GitHub 个人资料动态化&lt;/a&gt;&lt;/strong&gt; —— GitHub 提供了上传 &lt;a href=&quot;https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme&quot;&gt;个人资料 README 文件&lt;/a&gt; 的功能，该文件会显示在用户页面顶部。如果想让它动态更新为最新的博客文章链接、统计数据或其他信息，可以使用一些 JavaScript 和 GitHub Action 来实现。&lt;/p&gt;
&lt;p&gt;Duy Ng&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;▶ &lt;a href=&quot;https://www.youtube.com/watch?v=gY-TK33G6kQ&quot; title=&quot;www.youtube.com&quot;&gt;和我一起学习 Hono&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Takuya Matsuyama&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://toddle.dev/blog/the-carcinization-of-web-frameworks&quot;&gt;Web 框架的癌化&lt;/a&gt;&lt;/strong&gt; —— 框架是否都开始变得相似了？&lt;/p&gt;
&lt;p&gt;Jacob Kofoed&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://frontendmasters.com/blog/5-things-designers-can-do-with-javascript/&quot;&gt;帮助非 JavaScript 重点网页设计师了解 JavaScript 的五个基本知识&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Chris Coyier&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://bhmt.dev/blog/scraping/&quot;&gt;为了乐趣和利润进行个人规模的网络爬虫&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sean Morrissey&lt;/p&gt;
&lt;h2&gt;🛠&amp;nbsp; 代码与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://cpojer.net/posts/athena-crisis-open-source&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/kecm1ybrbztpf7djmajv.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🕹️ &lt;a href=&quot;https://cpojer.net/posts/athena-crisis-open-source&quot; title=&quot;cpojer.net&quot;&gt;雅典娜危机：一个由 JavaScript 驱动的高质量游戏&lt;/a&gt;&lt;/strong&gt; —— 一款可在 &lt;a href=&quot;https://store.steampowered.com/app/2456430/Athena_Crisis/&quot;&gt;Steam 商店&lt;/a&gt; 上购买的商业回合制策略游戏，&lt;strong&gt;但现在拥有开源的引擎和工具&lt;/strong&gt;。该游戏由 GitHub 联合创始人 Chris Wanstrath 创立的独立游戏发行商 &lt;a href=&quot;https://null.com/&quot;&gt;Null&lt;/a&gt; 发行。&lt;/p&gt;
&lt;p&gt;Christoph Nakazawa&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/farzher/fuzzysort&quot; title=&quot;github.com&quot;&gt;fuzzysort v3.0：快速模糊搜索库&lt;/a&gt;&lt;/strong&gt; —— 查看 &lt;a href=&quot;https://rawgit.com/farzher/fuzzysort/master/test/test.html&quot;&gt;在线示例&lt;/a&gt; —— 它确实感觉很快。&lt;/p&gt;
&lt;p&gt;Stephen Kamenar&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://vue-fluid-dnd.netlify.app/&quot; title=&quot;vue-fluid-dnd.netlify.app&quot;&gt;Vue Fluid DnD：一个用于 Vue 的动画拖放库&lt;/a&gt;&lt;/strong&gt; —— 专为项目列表设计，现在可以在此处查看各种 &lt;a href=&quot;https://vue-fluid-dnd.netlify.app/example/vertical-list/single-vertical-list/&quot;&gt;示例&lt;/a&gt;，包括一个可以使用手柄拖动项目的示例。这是 &lt;a href=&quot;https://github.com/carlosjorger/vue-fluid-dnd&quot;&gt;GitHub 仓库&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Carlos Jorge Rodriguez&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=Vkrsi.code-screenshot#codescreenshot&quot; title=&quot;marketplace.visualstudio.com&quot;&gt;Code Screenshot：一个用于创建代码截图的 VS Code 扩展&lt;/a&gt;&lt;/strong&gt; —— 它会将代码加载到 &lt;a href=&quot;https://cs.vkrsi.com/&quot;&gt;此网站&lt;/a&gt;（如果不想安装扩展，可以直接使用该网站），可以在该网站调整设置/主题，并导出为 PNG 或 SVG。&lt;/p&gt;
&lt;p&gt;Vkrsi / Visual Studio Marketplace&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;版本发布：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/google/zx/releases/tag/8.1.0&quot;&gt;zx v8.1&lt;/a&gt;&lt;/strong&gt; – Google 的更好 Node shell 脚本工具。现在支持 CommonJS 和 ESM，增加了对 Node 版本的支持，并支持 Deno 1.x。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://medium.com/@sfryan95/introducing-reactype-v21-lowering-the-barrier-to-entry-and-raising-the-bar-in-react-development-945173a9f3b8&quot;&gt;ReacType v21&lt;/a&gt;&lt;/strong&gt; – React 应用的可视化原型工具。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.alphatab.net/&quot;&gt;alphaTab v1.3&lt;/a&gt;&lt;/strong&gt; – 音乐符号和吉他指法表渲染库。它还能播放音乐，虽然机器上的吉他颤音听起来有点奇怪。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/ukrbublik/react-awesome-query-builder&quot;&gt;React Awesome Query Builder v6.5&lt;/a&gt;&lt;/strong&gt; – 逻辑查询构建器控件。这是 &lt;a href=&quot;https://ukrbublik.github.io/react-awesome-query-builder/&quot;&gt;演示&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;🎨 &lt;a href=&quot;https://github.com/jquery/jquery-color&quot;&gt;jquery-color v3.0&lt;/a&gt;&lt;/strong&gt; – 用于颜色操作和过渡的 jQuery 插件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://jdenticon.com/&quot;&gt;Jdenticon v3.3&lt;/a&gt;&lt;/strong&gt; – 生成几何“identicons”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://kingsora.github.io/OverlayScrollbars/&quot;&gt;OverlayScrollbars v2.8&lt;/a&gt;&lt;/strong&gt; – JavaScript 自定义滚动条插件。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://docschina.org/news/weekly/js/688</link><guid isPermaLink="false">https://docschina.org/news/weekly/js/688</guid><author>Yucohny</author><itunes:image href="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ibvym0ua1mtof3iplk1q.jpg"></itunes:image></item><item><title>687 期 - 从愚人节项目中学习酷炫的多人合作戈德堡机械模拟器</title><description>&lt;hr&gt;
&lt;p&gt;title: 687 期 - 从愚人节项目中学习酷炫的多人合作戈德堡机械模拟器&lt;br&gt;
editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yucohny&lt;/li&gt;
&lt;li&gt;TimLi&lt;/li&gt;
&lt;li&gt;Zhper&lt;br&gt;
description: xkcd 今年又制作了一个酷炫的愚人节项目，一个巨大的、带物理引擎的合作戈德堡机械模拟器。Figma 团队也介绍了如何从 Skew 平滑迁移到 TypeScript。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://chromakode.com/post/xkcd-machine/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/dax5ctgzt6sjnrsbisq7.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;🔥 本周热门&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://chromakode.com/post/xkcd-machine/&quot; title=&quot;chromakode.com&quot;&gt;来自 xkcd 的“机器”开发笔记&lt;/a&gt;&lt;/strong&gt; —— 为了今年的愚人节笑话，他们发布了 &lt;a href=&quot;https://xkcd.com/2916/&quot;&gt;“机器”&lt;/a&gt;，一种巨大的戈德堡机械模拟器。在技术上，它主要使用了大量的 TypeScript 和 Haskell。这是 &lt;a href=&quot;https://github.com/xkcd/incredible&quot;&gt;GitHub 仓库&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Max Goodhart&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.figma.com/blog/figmas-journey-to-typescript-compiling-away-our-custom-programming-language/&quot; title=&quot;www.figma.com&quot;&gt;Figma 迁移到 TypeScript 的历程&lt;/a&gt;&lt;/strong&gt; —— Figma 团队介绍了他们是如何将自己编写的 &lt;a href=&quot;https://evanw.github.io/skew-lang.org/&quot;&gt;Skew 编程语言&lt;/a&gt; 的代码自动迁移到 TypeScript 的，而不会中断任何一天的开发。&lt;/p&gt;
&lt;p&gt;Brandon Lin（Figma）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://medium.com/gulpjs/introducing-the-gulp-developer-survey-cc227fc2fb6d&quot; title=&quot;medium.com&quot;&gt;Gulp 从未消失；参与 Gulp 开发者调查&lt;/a&gt;&lt;/strong&gt; —— 许多在多年前引起轰动的优秀工具现在虽然被很少提到，但是仍然运作良好。这也包括 &lt;a href=&quot;https://gulpjs.com/&quot;&gt;Gulp&lt;/a&gt;，一个最初于 2013 年发布的构建系统和工具包。&lt;a href=&quot;https://github.com/gulpjs/gulp/releases/tag/v5.0.0&quot;&gt;Gulp v5.0&lt;/a&gt; 在上月发布，他们团队正在致力于使其变得更好。如果你想帮忙，可以 &lt;a href=&quot;https://www.surveyhero.com/c/ctrpnqkr&quot;&gt;在这里参与他们的调查&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Clarissa Abidog&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快讯：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ben Hong 为我们收集了一些 2024 年 &lt;a href=&quot;https://frontendmasters.com/blog/the-vue-ecosystem-in-2024/&quot;&gt;Vue 生态系统的优秀工具和库&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Node.js 核心团队邀请你 &lt;a href=&quot;https://linuxfoundation.surveymonkey.com/r/nodenext10survey24&quot;&gt;参与最新的 Node.js Next 10 调查&lt;/a&gt;，帮助他们决定 Node 接下来的发展方向。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上周我们推荐了一个有趣的 &lt;a href=&quot;https://www.epicweb.dev/talks/let-me-be&quot;&gt;▶️ 关于使用 &lt;code&gt;let&lt;/code&gt; vs &lt;code&gt;const&lt;/code&gt; 的讨论&lt;/a&gt;，但 Jack Herrington 对这种方法不太感兴趣，所以他 &lt;a href=&quot;https://www.youtube.com/watch?v=UiUPb-SYDxM&quot;&gt;▶️ 花了 10 分钟分析了这次讨论及其观点&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://bun.sh/&quot;&gt;Bun&lt;/a&gt; 团队正在 &lt;a href=&quot;https://apply.workable.com/oven/j/A7A1388873/&quot;&gt;寻找一名系统工程师&lt;/a&gt; 加入他们的团队，作为他们推动 Bun 更加适用于生产环境的一部分。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📒 教程与趣事&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=E4l4MBO-Bwg&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/qmu7mokrrzicrurg70v1.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;▶&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://www.youtube.com/watch?v=E4l4MBO-Bwg&quot; title=&quot;www.youtube.com&quot;&gt;无缝拖放应用程序间的交互&lt;/a&gt;&lt;/strong&gt; —— 这是一个使用浏览器 API 创建更优雅的拖放体验的绝佳演示，甚至可以在不同的浏览器窗口或 IFRAMEs 之间工作，由 Atlassian 的 &lt;a href=&quot;https://javascriptweekly.com/link/154967/web&quot;&gt;Pragmatic Drag and Drop&lt;/a&gt; 库进行重度支持。&lt;/p&gt;
&lt;p&gt;Alex Reardon&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://kettanaito.com/blog/why-patching-globals-is-harmful&quot; title=&quot;kettanaito.com&quot;&gt;为何全局补丁是有害的&lt;/a&gt;&lt;/strong&gt; —— 修改全局 API 以扩展其功能是常见的，但如果你喜欢可读性、维护性和可预测性，那么这并不可取。&lt;/p&gt;
&lt;p&gt;Artem Zakharchenko&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://jonbeebe.net/2024/05/javascript-got-good/&quot; title=&quot;jonbeebe.net&quot;&gt;“在某个时刻，JavaScript 变得很好”&lt;/a&gt;&lt;/strong&gt; —— 作者指出 JavaScript 在 ES6 中得到了“大提升”，并赞扬了自那时以来的持续改进。或许并不令人惊讶，&lt;a href=&quot;https://news.ycombinator.com/item?id=40256600&quot;&gt;在 Hacker News 上的一场热烈讨论&lt;/a&gt; 强调了一些持续存在的总体不满。&lt;/p&gt;
&lt;p&gt;Jonathan Beebe&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://webdeveloper.beehiiv.com/p/securely-send-request-closing-tabs&quot;&gt;如何在关闭标签页时安全地发送请求&lt;/a&gt;&lt;/strong&gt; —— 经常被遗忘的 &lt;code&gt;sendBeacon()&lt;/code&gt; 来拯救。&lt;/p&gt;
&lt;p&gt;Zachary Lee&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://tympanus.net/codrops/2024/05/08/exploring-a-3d-text-distortion-effect-with-react-three-fiber/&quot;&gt;使用 React Three Fiber 探索 3D 文本扭曲效果&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nine / Codrops&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://ajcwebdev.com/autogen-shownotes/&quot;&gt;使用 yt-dlp、Whisper.cpp 和 Node 自动生成播客节目笔记&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Anthony Campolo&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://www.stashpad.com/blog/react-developer-guide-to-solid-js&quot;&gt;React 开发者学习 SolidJS 的指南&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tristan Dyer&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://ui.dev/why-react-query&quot;&gt;为什么选择 React Query？&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;UI․dev&lt;/p&gt;
&lt;h2&gt;🛠 代码与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://pintorajs.vercel.app/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/zjsaau7tlhigb8o7ja3y.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://pintorajs.vercel.app/&quot; title=&quot;pintorajs.vercel.app&quot;&gt;Pintora：一个可扩展的文本-图表渲染库&lt;/a&gt;&lt;/strong&gt; —— 和 &lt;a href=&quot;http://mermaid.js.org/&quot;&gt;Mermaid&lt;/a&gt; 的想法类似，但对待扩展性的态度不同，同时不需要无头浏览器的服务端。&lt;a href=&quot;https://pintorajs.vercel.app/docs/intro/&quot;&gt;介绍文档&lt;/a&gt; 同时有可视化示例和代码示例。&lt;/p&gt;
&lt;p&gt;Hikerpig&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.lightgalleryjs.com/jquery-to-js-converter/&quot; title=&quot;www.lightgalleryjs.com&quot;&gt;jQuery 到 JavaScript 的转换器&lt;/a&gt;&lt;/strong&gt; —— 一个基于浏览器的工具，可以快速地将 jQuery 脚本转换为非 jQuery 代码。&lt;a href=&quot;https://github.com/sachinchoolur/jquery-to-javascript-converter&quot;&gt;这里是 GitHub 仓库&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;lightGallery&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://derbyjs.com/&quot; title=&quot;derbyjs.com&quot;&gt;DerbyJS 4：成熟的 MVC Web 框架&lt;/a&gt;&lt;/strong&gt; —— Derby 经历了 Node.js 的大部分历史，并且在某些情况下依然是 &lt;strong&gt;构建实施性、交互性应用程序&lt;/strong&gt; 可行选择。&lt;a href=&quot;https://github.com/derbyjs/derby&quot;&gt;这里是 GitHub 仓库&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Nate Smith et al.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/jasonkuhrt/graphql-request&quot; title=&quot;github.com&quot;&gt;graphql-request v7.0：极小的 GraphQL 客户端&lt;/a&gt;&lt;/strong&gt; —— 现在是完全的 ESM 包，对客户端和服务端都有一流的 TypeScript 支持。&lt;/p&gt;
&lt;p&gt;Jason Kuhrt&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/fabricjs/fabric.js&quot; title=&quot;github.com&quot;&gt;Fabric.js：SVG-to-Canvas 和 Canvas-to-SVG 的库&lt;/a&gt;&lt;/strong&gt; —— 在 HTML 画布之上提供了一个交互式对象模型，以便更容易地处理多个可视化元素。这是一个长期存在的项目，v6 已经筹备了一段时间，并且最近发布了 &lt;a href=&quot;https://github.com/fabricjs/fabric.js/releases/tag/v6.0.0-rc1&quot;&gt;第一个候选版本&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Fabric.js&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;版本发布：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;⭐ &lt;strong&gt;&lt;a href=&quot;https://github.com/evanw/esbuild/releases/tag/v0.21.0&quot;&gt;esbuild v0.21.0&lt;/a&gt;&lt;/strong&gt; – 这个版本的发布比版本号所暗示的更为重要，因为它引入了对 &lt;a href=&quot;https://github.com/tc39/proposal-decorators&quot;&gt;decorators 提案&lt;/a&gt; 的支持（所以建议你在升级时进行额外的测试）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://ionic.io/blog/announcing-ionic-8-1&quot;&gt;Ionic v8.1&lt;/a&gt;&lt;/strong&gt; – 用于构建原生质量应用的跨平台 UI 工具包。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/pnpm/pnpm/releases/tag/v9.1.0&quot;&gt;pnpm v9.1&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://adonisjs.com/&quot;&gt;AdonisJS v6.9&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://javascriptweekly.com/link/154964/web&quot;&gt;Playwright v1.44.0&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://bun.sh/blog/bun-v1.1.7&quot;&gt;Bunv 1.1.7&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://mswjs.io/&quot;&gt;MSW (Mock Service Worker) v2.3&lt;/a&gt;&lt;/strong&gt; – API 模拟库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://mantine.dev/changelog/7-9-0/&quot;&gt;Mantine v7.9&lt;/a&gt;&lt;/strong&gt; – 流行的 React 组件库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://medium.com/oracledevs/node-oracledb-6-5-now-supports-the-new-vector-search-capabilities-of-oracle-database-23ai-2a504d2fb279&quot;&gt;node-oracledb v6.5&lt;/a&gt;&lt;/strong&gt; – Oracle 自家的官方 Node.js 数据库驱动，现在支持 Oracle 最新的向量搜索功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/mongodb/js-bson/releases/tag/v6.7.0&quot;&gt;js-bson v6.7&lt;/a&gt;&lt;/strong&gt; – 适用于 Node 和浏览器的 MongoDB BSON 解析器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/magjac/d3-graphviz&quot;&gt;d3-graphviz v5.4&lt;/a&gt;&lt;/strong&gt; – 从 Graphviz DOT 图形渲染 SVG。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/validatorjs/validator.js&quot;&gt;validator.js v13.12.0&lt;/a&gt;&lt;/strong&gt; – 字符串验证函数。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://docschina.org/news/weekly/js/687</link><guid isPermaLink="false">https://docschina.org/news/weekly/js/687</guid><author>Yucohny,TimLi,Zhper</author><itunes:image href="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/dax5ctgzt6sjnrsbisq7.jpg"></itunes:image></item><item><title>686 期 - TypeScript v5.5 测试版发布</title><description>&lt;hr&gt;
&lt;p&gt;title: 686 期 - TypeScript v5.5 测试版发布&lt;br&gt;
editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yucohny&lt;/li&gt;
&lt;li&gt;Zhper&lt;br&gt;
description: 它不会是最终版本（预计在一两个月内），但 v5.5 版本受许多人的期待，因为它有许多增强，包括推断类型谓词、通过注释在 JSDoc 中导入类型的能力、regex 语法检测、独立声明等等。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://react.dev/blog/2024/04/25/react-19&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wnz4lsoqs6ne2jhma2yi.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;🔥 本周热门&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;▶ &lt;a href=&quot;https://www.epicweb.dev/talks/let-me-be&quot; title=&quot;www.epicweb.dev&quot;&gt;“为什么不推荐用&lt;code&gt;const&lt;/code&gt;以及你很可能用错了&quot;&lt;/a&gt;&lt;/strong&gt; —— 这是一场 12 分钟的关于 &lt;code&gt;const&lt;/code&gt; 和 &lt;code&gt;let&lt;/code&gt; 错误用法的有趣演讲。这肯定会激起一些强烈的反应（在 &lt;a href=&quot;https://javascriptweekly.com/link/154648/web&quot;&gt;Twitter 的帖子&lt;/a&gt; 上可以看到），但请让他表达自己的观点！&lt;/p&gt;
&lt;p&gt;Ryan Florence&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://devblogs.microsoft.com/typescript/announcing-typescript-5-5-beta/&quot; title=&quot;devblogs.microsoft.com&quot;&gt;TypeScript v5.5 测试版发布&lt;/a&gt;&lt;/strong&gt; —— 它不会是最终版本（预计在一两个月内），但 v5.5 版本受许多人的期待，因为它有许多增强，包括 &lt;a href=&quot;https://devblogs.microsoft.com/typescript/announcing-typescript-5-5-beta/#inferred-type-predicates&quot;&gt;推断类型谓词&lt;/a&gt;、通过注释在 &lt;a href=&quot;https://devblogs.microsoft.com/typescript/announcing-typescript-5-5-beta/#type-imports-in-jsdoc&quot;&gt;JSDoc 中导入类型&lt;/a&gt; 的能力、regex 语法检测、&lt;a href=&quot;https://devblogs.microsoft.com/typescript/announcing-typescript-5-5-beta/#isolated-declarations&quot;&gt;独立声明&lt;/a&gt; 等等。如果你需要更多实际的示例，Matt Pocock &lt;a href=&quot;https://twitter.com/mattpocockuk/status/1783760853700956178&quot;&gt;🐦 写了一篇很好的 Twitter 帖子&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Microsoft&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快讯：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The New Stack&lt;/strong&gt; 有 &lt;a href=&quot;https://thenewstack.io/ryan-dahl-from-node-js-and-deno-to-the-modern-jsr-registry/&quot;&gt;一个关于 Ryan Dahl 的专题以及他对打包、JSR 和 TypeScript 的看法&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;MoonBit 是一个 WebAssembly 驱动的云平台，&lt;a href=&quot;https://www.moonbitlang.com/blog/js-support&quot;&gt;它现在也可以使用 JavaScript 作为后端&lt;/a&gt; 并声称速度非常快。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你是否注意到 &lt;a href=&quot;https://www.jsdelivr.com/&quot;&gt;JSDelivr&lt;/a&gt; CDN 早些时候出了问题，&lt;a href=&quot;https://www.jsdelivr.com/blog/jsdelivr-may-outage-postmortem/&quot;&gt;原因如下&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Zachary Lee 有 &lt;a href=&quot;https://javascript.plainenglish.io/react-19-beta-release-a-quick-guide-05678e2ed571?gi=8351a8d8931d&quot;&gt;一个 React v19 测试版的快速指南&lt;/a&gt;，更多的采用代码指导的方法而非文字说明。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📒 教程与趣事&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://konfigthis.com/blog/htmx/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/u2o7e3u46kgltsrxathf.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://konfigthis.com/blog/htmx/&quot; title=&quot;konfigthis.com&quot;&gt;“我回顾了 1000 个关于 HTMX 的观点”&lt;/a&gt;&lt;/strong&gt; —— &lt;a href=&quot;https://htmx.org/&quot;&gt;htmx&lt;/a&gt; 是一种越来越流行的，通过创造性地使用 HTML 属性来使用现代的、动态的浏览器功能的方式，而非手动使用 JavaScript 编写一切。Dylan 主要从社区情绪的角度看待利弊。&lt;/p&gt;
&lt;p&gt;Dylan Huang&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://javascriptweekly.com/link/154663/web&quot; title=&quot;zacharylee.substack.com&quot;&gt;Node v22 开始原生支持 CJS/ESM 的互操作性 &lt;/a&gt;&lt;/strong&gt; —— 这是 Node 开发人员在使用 CommonJS 和 ECMAScript 模块时的新时代概述。&lt;/p&gt;
&lt;p&gt;Zachary Lee&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.jameskerr.blog/posts/javascript-sort-comparators/&quot; title=&quot;www.jameskerr.blog&quot;&gt;终于理解了 &lt;code&gt;Array.sort(comparator)&lt;/code&gt; 是如何工作的&lt;/a&gt;&lt;/strong&gt; —— &lt;strong&gt;“在学习了 13 年的 JavaScript 之后，我终于有办法记住 &lt;code&gt;Array.sort()&lt;/code&gt; 中的 comparator 函数是如何工作的……”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;James Kerr&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://ryanmulligan.dev/blog/detect-js-support-in-css/&quot; title=&quot;ryanmulligan.dev&quot;&gt;检测 CSS 中 JavaScript 的支持&lt;/a&gt;&lt;/strong&gt; —— 一种根据用户浏览器中是否有 JavaScript 并提供替代 CSS 规则的方法。&lt;/p&gt;
&lt;p&gt;Ryan Mulligan&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://secfault-security.com/blog/deno.html&quot;&gt;深入 JavaScript 沙盒&lt;/a&gt;&lt;/strong&gt; —— “发掘 Deno 中几个不同漏洞的旅程。”&lt;/p&gt;
&lt;p&gt;Secfault Security&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.heroku.com/build-openapi-apis-nodejs-fastify&quot;&gt;如何使用 Node 和 Fastify 构建文档优良且经过认证的 API&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Julían Duque (Heroku)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://prosopo.io/articles/using-vite-to-rebuild-local-dependencies-in-an-npm-workspace/&quot;&gt;使用 Vite 在 NPM 工作区中重建本地依赖&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Prosopo&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.stackblitz.com/posts/what-is-vite-introduction/&quot;&gt;Vite 是什么(并且为什么如此流行）？&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Eric Simons&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://tobiasahlin.com/blog/move-from-jquery-to-vanilla-javascript/&quot;&gt;从 jQuery 到 Vanilla JavaScript 的小窍门&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tobias Ahlin&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.appsignal.com/2024/05/01/when-to-use-bun-instead-of-nodejs.html&quot;&gt;何时使用 Bun 而非 Node.js&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Antonello Zanini&lt;/p&gt;
&lt;h2&gt;🛠 代码与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://extension.js.org/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/rdfl9mjouaoqvrddec4z.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://extension.js.org/&quot; title=&quot;extension.js.org&quot;&gt;extension.js：零配置、跨浏览器扩展开发入门&lt;/a&gt;&lt;/strong&gt; —— 我们的目标是使它像使用一句 &lt;code&gt;npx extension create my-extension&lt;/code&gt; 就能开始构建自己的浏览器扩展一样简单。&lt;a href=&quot;https://github.com/cezaraugusto/extension.js&quot;&gt;这是 GitHub&amp;nbsp; 仓库&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cezar Augusto&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://layercake.graphics/&quot; title=&quot;layercake.graphics&quot;&gt;Layer Cake：一个面向 Svelte 的图形框架&lt;/a&gt;&lt;/strong&gt; —— 该库为你提供了一个通过普通元素（例如坐标系统和比例）创建响应式 web 图形的基准。在这里查看 &lt;a href=&quot;https://layercake.graphics/components&quot;&gt;许多示例组件&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Layer Cake&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://yaireo.github.io/tagify/&quot; title=&quot;yaireo.github.io&quot;&gt;Tagify v4.2：一个优雅的标签输入组件&lt;/a&gt;&lt;/strong&gt; —— 这个精选的演示可见已经投入了大量的努力。&lt;a href=&quot;https://github.com/yairEO/tagify&quot;&gt;这是 GitHub&amp;nbsp; 仓库&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Yair Even-Or&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.william-troup.com/journey-js/&quot; title=&quot;www.william-troup.com&quot;&gt;Journey.js：零依赖库创建交互式导览&lt;/a&gt;&lt;/strong&gt; —— 在线演示十分基础，但对可访问性的关注和 51 种语言的内置支持是加分项。&lt;/p&gt;
&lt;p&gt;William Troup&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📺&amp;nbsp;&lt;a href=&quot;https://github.com/LuanRT/YouTube.js&quot; title=&quot;github.com&quot;&gt;YouTube.js：非官方的 YouTube API 客户端库&lt;/a&gt;&lt;/strong&gt; —— “InnerTube” 是 YouTube 客户端使用的 API，你也可以使用它，尽管他们可能不喜欢这个 API。它可以运行在 Node.js、Deno 和现代浏览器上。&lt;/p&gt;
&lt;p&gt;LuanRT&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://copy.sh/v86/&quot; title=&quot;copy.sh&quot;&gt;Virtual x86：基于 JavaScript 和 WASM 的 x86 虚拟化&lt;/a&gt;&lt;/strong&gt; —— 在浏览器中运行 Linux、许多旧版本的 Windows、BSD、MS-DOS 和其他系统(而且速度很快)。这不是一个新项目，但我总是会对它不断更新的方式印象深刻。&lt;a href=&quot;https://github.com/copy/v86&quot;&gt;这是 GitHub&amp;nbsp; 仓库&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fabian Hemmer&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/missive/emoji-mart&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/dum0h0eyvzwjpxhbtk0k.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;版本发布：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;⭐️ &lt;a href=&quot;https://svelte.dev/blog/svelte-5-release-candidate&quot;&gt;Svelte v5 发布候选版本&lt;/a&gt;&lt;/strong&gt; - &lt;strong&gt;&quot;从现在到稳定版本之间没有预期的突破性变化。&quot;&lt;/strong&gt; 在一个简短的谈话种，&lt;a href=&quot;https://www.youtube.com/watch?v=xCeYmdukOKI&quot;&gt;▶️ Rich Harris 解释了新的改变&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://bun.sh/blog/bun-v1.1.6&quot;&gt;Bun v1.1.6&lt;/a&gt;&lt;/strong&gt; – 现在支持 UDP 套接字，&lt;code&gt;Array#sort&lt;/code&gt; 快了许多。并且 &lt;a href=&quot;https://bun.sh/blog/bun-v1.1.5&quot;&gt;v1.1.5&lt;/a&gt; 引入了独立可执行文件的交叉编译。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://astro.build/blog/astro-470/&quot;&gt;Astro v4.7&lt;/a&gt;&lt;/strong&gt; – 还有一个关于项目整体新内容的 &lt;a href=&quot;https://astro.build/blog/whats-new-april-2024/&quot;&gt;综述&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;😀 &lt;a href=&quot;https://github.com/missive/emoji-mart&quot;&gt;Emoji Mart v5.6&lt;/a&gt;&lt;/strong&gt; – 用于 web 的表情符号选择组件（如上图）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;✍️ &lt;a href=&quot;https://www.fiala.space/atrament/demo/&quot;&gt;Atrament v4.2&lt;/a&gt;&lt;/strong&gt; – 原生 javascript 实现的 canvas 画板框架。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://github.com/wojtekmaj/react-pdf&quot;&gt;React-PDF v8.0&lt;/a&gt;&lt;/strong&gt; – 展示 PDF 的 React 组件。现在支持 React&amp;nbsp;v19。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/TanStack/virtual&quot;&gt;TanStack Virtual v3.5&lt;/a&gt;&lt;/strong&gt; – 用于虚拟可滚动元素的无头 UI。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/DevExpress/testcafe/releases/tag/v3.6.0&quot;&gt;TestCafe v3.6&lt;/a&gt;&lt;/strong&gt; – 自动化的端到端 web 测试框架。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/preactjs/preact/releases/tag/10.21.0&quot;&gt;Preact v10.21&lt;/a&gt;&lt;/strong&gt; - 3KB 的 React 兼容性代替方案。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.jqueryui.com/2024/04/jquery-ui-1-13-3-released/&quot;&gt;jQuery UI v1.13.3&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://docschina.org/news/weekly/js/686</link><guid isPermaLink="false">https://docschina.org/news/weekly/js/686</guid><author>Yucohny,Zhper</author><itunes:image href="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wnz4lsoqs6ne2jhma2yi.jpg"></itunes:image></item><item><title>685 - Node、Deno 的作者详细介绍了 JSR 的诞生理念和目标</title><description>&lt;hr&gt;
&lt;p&gt;title: 685 - Node、Deno 的作者详细介绍了 JSR 的诞生理念和目标&lt;br&gt;
editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TimLi&lt;/li&gt;
&lt;li&gt;loveloki&lt;br&gt;
description: Node、Deno 的作者不久之前发布了 JSR ，并写了篇文章详细介绍了它的诞生理念和目标。Node 在这周发布了 v22，带来了一些重要的增强功能。pnpm 也发布了 v9.0，放弃了对 Node 16 和 17 的兼容性。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://deno.com/blog/jsr-is-not-another-package-manager&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/w7s2mi67kd3de45tfmay.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;🔥 本周热门&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://deno.com/blog/jsr-is-not-another-package-manager&quot; title=&quot;deno.com&quot;&gt;JSR 不是另一个包管理器&lt;/a&gt;&lt;/strong&gt; —- 当 Ryan 创建 Node 时，JavaScript 还没有包或标准模块系统。随着 npm 和 CommonJS 的流行，又诞生了像 Yarn 或 pnpm 这样在某些领域扩展了 npm 的工具，但在今天的 ES 模块时代，是时候进行转变了。&lt;a href=&quot;https://jsr.io/&quot;&gt;JSR&lt;/a&gt; 不是一个新的 npm，而是 npm 的一种补充，使之更加安全且为现代开发量身定制。&lt;/p&gt;
&lt;p&gt;Ryan Dahl&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://openjsf.org/blog/nodejs-22-available&quot; title=&quot;openjsf.org&quot;&gt;Node.js v22（Current）发布&lt;/a&gt;&lt;/strong&gt; —- 最新的、尖端的、主要版本的 Node 带来了一些关键的增强功能。v22 成为新的 ‘Current’ 发布版本（在 10 月份成为活跃的 LTS）。它增加了对 &lt;code&gt;require&lt;/code&gt;-ing ESM 的支持，获得了一个内置的 WebSocket 客户端，升级到 V8 12.4，并包括了 &lt;a href=&quot;https://polar.sh/anonrig/posts/node-js-task-runner&quot;&gt;一个任务运行器&lt;/a&gt;（例如 &lt;code&gt;node --run task_name&lt;/code&gt;）。&lt;a href=&quot;https://coderoasis.com/nodejs-22-released/&quot;&gt;这篇博客文章&lt;/a&gt; 对此进行了更深入的探讨。&lt;/p&gt;
&lt;p&gt;Rafael Gonzaga&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/pnpm/pnpm/releases/tag/v9.0.0&quot; title=&quot;github.com&quot;&gt;pnpm v9.0：以效率为中心的包管理器&lt;/a&gt;&lt;/strong&gt; —- &lt;a href=&quot;https://pnpm.io/&quot;&gt;pnpm&lt;/a&gt; 长期以来一直是那些希望节省磁盘空间和 CPU 周期（或者因为它的优秀的 &lt;a href=&quot;https://pnpm.io/workspaces&quot;&gt;monorepo 支持&lt;/a&gt;）的人们的一个绝佳选择，同时保持了 npm 的大部分优点。v9.0 放弃了对 Node 16 和 17 的兼容性、尊重 &lt;code&gt;package.json&lt;/code&gt; 中的 &lt;code&gt;packageManager&lt;/code&gt; 字段、做了一些默认配置的更改以及采用了 Lockfile v9。&lt;/p&gt;
&lt;p&gt;pnpm&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快讯：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🙈 4 月 24 日是 &lt;a href=&quot;https://js-naked-day.org/&quot;&gt;无 JavaScript 日&lt;/a&gt;，这是一个完全没有 JavaScript 的日子。目的是测试下你的网站能不能脱离 JavaScript 运行。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇫🇷 &lt;a href=&quot;https://www.dotjs.io/&quot;&gt;dotJS 2024&lt;/a&gt; 是一个将于 6 月 27 日在法国巴黎举行的 JavaScript 会议。到目前为止，演讲者名单相当吸引人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://primatejs.com/blog/introducing-rcompat&quot;&gt;rcompat&lt;/a&gt; 是一个有趣的服务器 JS 互操作性和运行时兼容性层，让你可以避免 Node、Deno 和 Bun 之间的差异。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📒&amp;nbsp; 教程与趣事&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://render.com/blog/hello-bun-deploy-2x-faster-on-github-render&quot; title=&quot;render.com&quot;&gt;迁移项目到 Bun 的故事&lt;/a&gt;&lt;/strong&gt; —- Render 的一位工程师 Eric，详细介绍了他如何将他的 &lt;a href=&quot;https://github.com/carbon-design-system/sveld&quot;&gt;Sveld&lt;/a&gt; 项目迁移到 &lt;a href=&quot;https://bun.sh/&quot;&gt;Bun&lt;/a&gt;（在过程中替换了 Yarn 和 Vitest），包括他遇到的一些小问题，以及最后的性能提升测试结果。&lt;/p&gt;
&lt;p&gt;Eric Liu&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://frontendmasters.com/guides/front-end-handbook/2024/&quot; title=&quot;frontendmasters.com&quot;&gt;2024 年前端开发者/工程师手册&lt;/a&gt;&lt;/strong&gt; —- 一份关于当前 webdev 景观的指南，涵盖了如何快速掌握编辑器、CSS、UX、UI、命令行、工具和框架、性能、可访问性等主题。&lt;/p&gt;
&lt;p&gt;Cody Lindley&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://jakearchibald.com/2024/attributes-vs-properties/&quot; title=&quot;jakearchibald.com&quot;&gt;HTML 属性 vs DOM 属性&lt;/a&gt;&lt;/strong&gt; —- 它们是不同的，但经常被捆绑在一起。Jake 描述了它们的区别，以及为什么这很重要。&lt;/p&gt;
&lt;p&gt;Jake Archibald&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://kilianvalkhof.com/2024/javascript/the-problem-with-new-url-and-how-url-parse-fixes-that/&quot;&gt;使用 &lt;code&gt;new URL()&lt;/code&gt; 的问题，以及 &lt;code&gt;URL.parse()&lt;/code&gt; 如何解决这个问题&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://web.dev/blog/intl-segmenter&quot;&gt;&lt;code&gt;Intl.Segmenter&lt;/code&gt; 对象现在是基线的一部分&lt;/a&gt;&lt;/strong&gt; – 可互操作的，区域敏感的文本分割。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://blog.angular.io/event-dispatch-in-angular-89d868d2351c?gi=694e57095c19&quot;&gt;Angular 中的事件分发&lt;/a&gt;&lt;/strong&gt; – 新的事件委托系统的内部运作原理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://effectivetypescript.com/2024/04/16/inferring-a-type-predicate/&quot;&gt;TypeScript 推断类型谓词特性的诞生全过程&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://code.dblock.org/2024/04/23/adding-eslint-and-autofixing-an-existing-typescript-project.html&quot;&gt;向现有的 TypeScript 项目添加 ESLint 和自动修复&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📺 &lt;a href=&quot;https://www.youtube.com/watch?v=HSVcZa5yTKE&quot;&gt;在 React 和 Svelte 中使用 TC39 提议的信号&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://jameshfisher.com/2024/04/24/how-to-escape-javascript-for-a-script-tag/&quot;&gt;如何对 &lt;code&gt;script&lt;/code&gt; 标签中的 JavaScript 进行转义&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;🛠&amp;nbsp; 代码与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://unovis.dev/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/jxmrv1tujz9zjlli4hep.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📊&amp;nbsp;&lt;a href=&quot;https://unovis.dev/&quot; title=&quot;unovis.dev&quot;&gt;Unovis：一个模块化的数据可视化框架&lt;/a&gt;&lt;/strong&gt; —- 适用于 React、Angular、Svelte、Vue 或普通的 JavaScript/TypeScript。处理各种事情，从 Sankey 图到地图、图表、和弦图，以及传统的线/面图。&lt;a href=&quot;https://unovis.dev/releases/1.4/&quot;&gt;v1.4 版本&lt;/a&gt; 增加了以灵活方式注释可视化的支持。如果你想深入了解，这里有 &lt;a href=&quot;https://unovis.dev/gallery/&quot;&gt;一个示例画廊&lt;/a&gt;（带有代码）。&lt;/p&gt;
&lt;p&gt;F5, Inc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://rescript-lang.org/blog/release-11-1-0&quot; title=&quot;rescript-lang.org&quot;&gt;ReScript v11.1 发布，改进了 JSX 支持&lt;/a&gt;&lt;/strong&gt; —- &lt;a href=&quot;https://rescript-lang.org/&quot;&gt;ReScript&lt;/a&gt; 是一个受 OCaml 启发的、类型化的语言，它编译为 JavaScript，并且语言中内置了 JSX 转换。JSX 支持以前仅用于 React 的用例，但现在也适用于 Vue、Preact 和其他方法。&lt;/p&gt;
&lt;p&gt;ReScript 项目&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://typed-xlsx.vercel.app/&quot; title=&quot;typed-xlsx.vercel.app&quot;&gt;typed-xlsx：功能丰富的类型安全 Excel 报告&lt;/a&gt;&lt;/strong&gt; —- 定义一个强类型的电子表格模式，然后直接从 JavaScript/TypeScript 填充和处理表格，例如为用户生成报告 - &lt;a href=&quot;https://github.com/ChronicStone/typed-xlsx?tab=readme-ov-file#2-build-a-sheet-schema-&quot;&gt;示例代码&lt;/a&gt;。基于 SheetJS 封装。&lt;a href=&quot;https://github.com/ChronicStone/typed-xlsx&quot;&gt;GitHub 仓库&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Cyprien Thao&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/Rich-Harris/devalue&quot; title=&quot;github.com&quot;&gt;Devalue v5.0：类似于 &lt;code&gt;JSON.stringify&lt;/code&gt;，但是..&lt;/a&gt;&lt;/strong&gt; —- “当 JSON.stringify 无法完成任务时，它可以完成任务。” 即，它可以处理循环和重复的引用、正则表达式、&lt;code&gt;Map&lt;/code&gt; 和 &lt;code&gt;Set&lt;/code&gt;、自定义类型等等。&lt;/p&gt;
&lt;p&gt;Rich Harris&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://imask.js.org/&quot; title=&quot;imask.js.org&quot;&gt;imask.js v7.6.0：一个 Vanilla JavaScript 输入掩码&lt;/a&gt;&lt;/strong&gt; —- 防止用户输入无效值。根据需要，为 Vue、Angular、React、Svelte 和 Solid 提供插件。&lt;/p&gt;
&lt;p&gt;imaskjs&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.npmjs.com/package/browser-or-node&quot; title=&quot;www.npmjs.com&quot;&gt;browser-or-node v3.0：找出你的代码在哪里运行&lt;/a&gt;&lt;/strong&gt; —- 提供了一种简单的方法来判断你的代码当前是在浏览器中运行、在 Node 中运行、在 Web Worker 中运行，还是在 Deno 中运行。支持 ESM 和 CJS 导入。&lt;/p&gt;
&lt;p&gt;Dinesh Pandiyan&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;版本发布：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://typicode.github.io/mistcss/&quot;&gt;MistCSS v0.4&lt;/a&gt;&lt;/strong&gt; —- 仅使用 CSS 创建组件，即 JS-from-CSS。&lt;a href=&quot;https://github.com/typicode/mistcss/releases/tag/v0.4.0&quot;&gt;v0.4&lt;/a&gt; 添加了 Hono 和 CSS 变量支持。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/alphagov/accessible-autocomplete&quot;&gt;Accessible Autocomplete v3.0&lt;/a&gt;&lt;/strong&gt; —- 英国政府自己的自动完成输入组件。(&lt;a href=&quot;https://alphagov.github.io/accessible-autocomplete/examples/&quot;&gt;示例。&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/mercurius-js/mercurius&quot;&gt;Mercurius v14.1&lt;/a&gt;&lt;/strong&gt; —- 在 Fastify 上实现 GraphQL 服务器和网关。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/mrousavy/react-native-vision-camera/releases/tag/v4.0.0&quot;&gt;Vision Camera v4.0&lt;/a&gt;&lt;/strong&gt; —- 为 React Native 提供高级相机控制。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/perry-mitchell/webdav-client&quot;&gt;webdav-client v5.6&lt;/a&gt;&lt;/strong&gt; —- 适用于 Node 和浏览器的 WebDAV 客户端库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🐍 &lt;strong&gt;&lt;a href=&quot;https://github.com/extremeheat/JSPyBridge&quot;&gt;JSPyBridge v1.2&lt;/a&gt;&lt;/strong&gt; —- 从 Node 运行 Python 或反之亦然。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/mui/mui-x/releases/tag/v7.3.0&quot;&gt;MUI X v7.3&lt;/a&gt;&lt;/strong&gt; —- 受欢迎的 React 组件套件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://reactnative.dev/blog/2024/04/22/release-0.74&quot;&gt;React Native v0.74&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.electronjs.org/blog/electron-30-0&quot;&gt;Electron v30.0&lt;/a&gt;&lt;/strong&gt; —- 现在基于 Chromium v124、V8 v12.4 和 Node.js v20.11.1。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://hexo.io/&quot;&gt;Hexo v7.2&lt;/a&gt;&lt;/strong&gt; —- 用于博客的静态站点生成器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.emberjs.com/ember-released-5-8/&quot;&gt;Ember v5.8&lt;/a&gt;、&lt;a href=&quot;https://ionic.io/blog/ionic-8-is-here&quot;&gt;Ionic v8&lt;/a&gt;、&lt;a href=&quot;https://github.com/swc-project/swc&quot;&gt;SWC v1.5&lt;/a&gt;、&lt;a href=&quot;https://github.com/webpro/knip/releases/tag/5.10.0&quot;&gt;Knip v5.10.0&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://docschina.org/news/weekly/js/685</link><guid isPermaLink="false">https://docschina.org/news/weekly/js/685</guid><author>TimLi,loveloki</author><itunes:image href="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/w7s2mi67kd3de45tfmay.jpg"></itunes:image></item><item><title>684 - Quill v2.0 发布：强大的 Web 富文本编辑器</title><description>&lt;hr&gt;
&lt;p&gt;title: 684 - Quill v2.0 发布：强大的 Web 富文本编辑器&lt;br&gt;
editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TimLi&lt;/li&gt;
&lt;li&gt;loveloki&lt;br&gt;
description: Quill 刚刚发布了 2.0 版本，这是一个开源的所见即所得编辑器的重大发布。新版本完全使用 TypeScript 进行重写并根据现代浏览器新特性进行了改进，而且还有更多正在开发中的功能，比如它的 ESM 打包。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://quilljs.com/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/witsoytxgchsvp3nmrpp.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;🔥 本周热门&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://quilljs.com/&quot; title=&quot;quilljs.com&quot;&gt;Quill v2.0：强大的 Web 富文本编辑器&lt;/a&gt;&lt;/strong&gt; —— 这是一个开源的所见即所得编辑器的重大发布。在 &lt;a href=&quot;https://slab.com/blog/announcing-quill-2-0/&quot;&gt;Quill v2.0 发布&lt;/a&gt; 这篇文章中，我们了解到 Quill 完全使用 TypeScript 进行重写并根据现代浏览器新特性进行了改进，而且还有&lt;a href=&quot;https://github.com/quilljs/quill/releases/tag/v2.0.0&quot;&gt;更多正在开发中&lt;/a&gt; 的功能，比如它的 ESM 打包。想要尝试一下吗？&lt;a href=&quot;https://quilljs.com/playground/snow&quot;&gt;这里有一个在线体验。&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Slab Inc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/airbnb/javascript&quot; title=&quot;github.com&quot;&gt;Airbnb 的详尽的 JavaScript 风格指南&lt;/a&gt;&lt;/strong&gt; —— 自从我们提到这个受欢迎的、有自己观点的风格指南已经过去了好几年，但是它一直在进行小的调整和修复，仍然是一个值得参考的指南。&lt;/p&gt;
&lt;p&gt;Airbnb&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.jquery.com/2024/04/17/upgrading-jquery-working-towards-a-healthy-web/&quot; title=&quot;blog.jquery.com&quot;&gt;升级 jQuery：朝着健康的 Web 进行努力&lt;/a&gt;&lt;/strong&gt; —— jQuery 仍然遍布整个 Web，jQuery 团队和 OpenJS 基金会联手确保网站得到更新。他们的 &lt;a href=&quot;https://healthyweb.org/&quot;&gt;“健康 Web 检查” 工具&lt;/a&gt; 可以告诉你一个网站上的 jQuery 版本是否过时。&lt;/p&gt;
&lt;p&gt;Timmy Willison (jQuery)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://biomejs.dev/blog/biome-v1-7/&quot; title=&quot;biomejs.dev&quot;&gt;Biome v1.7：更快的格式化和 Linting，现在更容易迁移&lt;/a&gt;&lt;/strong&gt; —— &lt;a href=&quot;https://biomejs.dev/&quot;&gt;Biome&lt;/a&gt; 是一个越来越引人注目、全能的支持 JavaScript、TypeScript 并且兼容 Prettier JSX 的格式化器和 linter。v1.7 使它更容易从 ESLint 和 Prettier 迁移，可以生成机器可读的 JSON 报告，并且有一些规则更新。&lt;/p&gt;
&lt;p&gt;Biome Core Team&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快讯：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🤡 &lt;a href=&quot;https://www.youtube.com/watch?v=aWfYxg-Ypm4&quot;&gt;▶️ 2024 年高级 JS 开发者面试&lt;/a&gt; 是对现代开发状态和日益复杂的生态系统的讽刺看法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📺 Bartek Szwej 整理了一份&lt;a href=&quot;https://techtalksweekly.substack.com/p/ttw-extra-3-all-javascript-conference&quot;&gt;过去一年的 300 个 JavaScript 相关视频的列表&lt;/a&gt;，按照他们的 YouTube 观看次数排序。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://fx.wtf/&quot;&gt;f(x) (又名 fx)&lt;/a&gt; 是一个查看 JSON 数据的强大的 CLI 工具。&lt;a href=&quot;https://github.com/antonmedv/fx/releases/tag/34.0.0&quot;&gt;现在它包括&lt;/a&gt; 一个 JS 引擎，所以你也可以在终端用 JavaScript 单行代码处理 JSON。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://nodejs.org/en/blog/events/collab-summit-2024-london&quot;&gt;Joyee Cheung 分享了一份 Node.js 最新协作峰会的旅行报告&lt;/a&gt;，其中涉及了 Node 团队最近正在思考的话题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Deno 的人们&lt;a href=&quot;https://deno.com/blog/how-we-built-jsr&quot;&gt;深入讲解了他们如何构建 JSR&lt;/a&gt; 这个最新的 JavaScript 注册表，以及它如何在大规模运行。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/facebook/react/pull/28768&quot;&gt;&quot;更快的 JSX 元素创建&quot;&lt;/a&gt; 正在为 React 开发者开发中。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📒&amp;nbsp; 教程与趣事&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.joshcanhelp.com/oclif/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/rvyzuvlvsc9pqf4xgzlj.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.joshcanhelp.com/oclif/&quot; title=&quot;www.joshcanhelp.com&quot;&gt;使用 TypeScript 和 oclif 从零开始构建 CLI&lt;/a&gt;&lt;/strong&gt; — &lt;a href=&quot;https://oclif.io/&quot;&gt;oclif&lt;/a&gt; 是由 Salesforce 维护的一个成熟的 CLI 工具开发框架。这个教程从零开始，直到构建出一个可以运行的东西。&lt;/p&gt;
&lt;p&gt;Josh Cunningham&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://outshift.cisco.com/blog/qwik-vs-nextjs&quot; title=&quot;outshift.cisco.com&quot;&gt;Qwik 与 Next.js：哪个更适合你的下一个网络项目？&lt;/a&gt;&lt;/strong&gt; — 一场 Qwik 与 Next.js 的详细比较，以及作者为什么认为 Qwik 获得了胜利。&lt;/p&gt;
&lt;p&gt;Samuel Mendenhall (Cisco)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.joshwcomeau.com/react/css-in-rsc/&quot; title=&quot;www.joshwcomeau.com&quot;&gt;React 服务器组件中的 CSS&lt;/a&gt;&lt;/strong&gt; — 探索 React 服务器组件与像 styled-components 这样的 CSS-in-JS 库之间的兼容性问题。&lt;/p&gt;
&lt;p&gt;Josh W Comeau&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://developer.chrome.com/docs/devtools/performance/nodejs&quot; title=&quot;developer.chrome.com&quot;&gt;使用 Chrome 的性能面板分析 Node.js 性能&lt;/a&gt;&lt;/strong&gt; — 学习如何使用 Chrome 的性能面板来分析 Node 的性能。(&lt;a href=&quot;https://developer.chrome.com/blog/profiling-cpu&quot;&gt;JS 分析器将在 Chrome 124 中被移除&lt;/a&gt;，所以你需要熟悉新的方法。)&lt;/p&gt;
&lt;p&gt;Chrome for Developers&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://bost.ocks.org/mike/algorithms/&quot; title=&quot;bost.ocks.org&quot;&gt;可视化算法&lt;/a&gt;&lt;/strong&gt; — 这篇精彩的文章现在已经十年了，但我最近重新阅读了它，真是一种享受。Mike Bostock（D3.js 的创造者）通过演示和代码引导我们了解一些算法。&lt;/p&gt;
&lt;p&gt;Mike Bostock&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://www.mux.com/blog/keeping-up-with-the-node-ish-ecosystem&quot;&gt;跟上 Node 风格的生态系统&lt;/a&gt;&lt;/strong&gt; — Mux 如何更新其旧版 Node SDK 以适应新的 JS 运行时。- Dylan Jhaveri (Mux)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://vercel.com/blog/building-an-interactive-3d-event-badge-with-react-three-fiber&quot;&gt;使用 React Three Fiber 构建一个交互式的 3D 事件徽章&lt;/a&gt;&lt;/strong&gt; - Paul Henschel (Vercel)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://github.com/orgs/web-infra-dev/discussions/17&quot;&gt;深入探讨 Rspack 和 Webpack 的 Tree Shaking&lt;/a&gt;&lt;/strong&gt; - hardfist&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://jaydevm.hashnode.dev/things-that-i-like-better-in-vue-than-in-react&quot;&gt;我在 Vue 中比在 React 中更喜欢的东西&lt;/a&gt;&lt;/strong&gt; - Jaydev Mahadevan&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📄 &lt;a href=&quot;https://www.smashingmagazine.com/2024/04/converting-text-encoded-html-vanilla-javascript/&quot;&gt;使用 Vanilla JS 将纯文本转换为编码的 HTML&lt;/a&gt;&lt;/strong&gt; - Alexis Kypridemos&lt;/p&gt;
&lt;h2&gt;🛠&amp;nbsp; 代码与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://tresjs.org/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/rqj3h15nmlfmv4lglwgc.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://tresjs.org/&quot; title=&quot;tresjs.org&quot;&gt;TresJS：使用 Vue.js 构建 3D 体验&lt;/a&gt;&lt;/strong&gt; — 使用 Vue 组件和 Three.js 创建 3D 场景。想象一下 &lt;a href=&quot;https://docs.pmnd.rs/react-three-fiber/getting-started/introduction&quot;&gt;React-three-fiber&lt;/a&gt; 的 Vue 版本。如果你想快速尝试一下（字面意思），这里有一个&lt;a href=&quot;https://play.tresjs.org/&quot;&gt;在线 Demo&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Alvaro Sabu&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://nextjs.org/blog/next-14-2&quot; title=&quot;nextjs.org&quot;&gt;Next.js v14.2 发布&lt;/a&gt;&lt;/strong&gt; — 拥有超过&lt;a href=&quot;https://twitter.com/rauchg/status/1777759530782515216&quot;&gt;100 万的月活跃开发者&lt;/a&gt; 的 Next.js 即将迎来其八岁生日并发布了一个新版本，支持使用 Turbopack 来改善本地开发、内存使用、CSS 和缓存优化、改进错误信息等。&lt;/p&gt;
&lt;p&gt;Delba de Oliveira 和 Tim Neutkens&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/robertkrimen/otto&quot; title=&quot;github.com&quot;&gt;Otto v0.4：Go 中的 JavaScript 解析器和解释器&lt;/a&gt;&lt;/strong&gt; — 一个用 Go 原生编写的 JavaScript 解析器和解释器（是的，我们有一个&lt;a href=&quot;https://golangweekly.com/&quot;&gt;新闻简报&lt;/a&gt;），如果你想在 Go 应用中添加脚本，这可能会很有用。&lt;/p&gt;
&lt;p&gt;Robert Krimen&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.lemonsqueezy.com/wedges&quot; title=&quot;www.lemonsqueezy.com&quot;&gt;Wedges：React 的 UI 组件集合&lt;/a&gt;&lt;/strong&gt; — 由 &lt;a href=&quot;https://www.lemonsqueezy.com/&quot;&gt;Lemon Squeezy&lt;/a&gt; 的团队构建和使用，这是一套基于 Radix UI 和 Tailwind CSS 的组件，设计精良，美观大方。你还可以下载一个 Figma 文件，用于模拟布局。&lt;a href=&quot;https://github.com/lmsqueezy/wedges&quot;&gt;GitHub 仓库&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Lemon Squeezy&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://hyperformula.handsontable.com/&quot; title=&quot;hyperformula.handsontable.com&quot;&gt;HyperFormula：无头电子表格系统&lt;/a&gt;&lt;/strong&gt; — 一个无头电子表格系统 - 它提供了电子表格的解析、评估和表示，如果你使用的话需要自己提供 UI。它声称与 Excel 有&lt;a href=&quot;https://hyperformula.handsontable.com/guide/compatibility-with-microsoft-excel.html&quot;&gt;“几乎完全的兼容性”&lt;/a&gt;。注意它使用 GPLv3 和商业许可证的双重授权。&lt;/p&gt;
&lt;p&gt;Handsoncode&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/isaacHagoel/svelte-dnd-action&quot; title=&quot;github.com&quot;&gt;svelte-dnd-action：Svelte 的基于动作的拖放容器&lt;/a&gt;&lt;/strong&gt; — 大胆地声称它 “支持几乎所有可以想象的拖放用例，任何输入设备，并且完全可访问。”&lt;/p&gt;
&lt;p&gt;Isaac Hagoel&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚙️ &lt;a href=&quot;https://zoompinch.pages.dev/&quot;&gt;Zoompinch：Vue 3 的自然感觉 &#39;捏放大&#39; 功能&lt;/a&gt;&lt;/strong&gt; – 预计将在 React 和 Web Component 中出现。 - Maurice Conrad&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚙️ &lt;a href=&quot;https://craft.js.org/&quot;&gt;Craft.js&lt;/a&gt;&lt;/strong&gt; – 一个用于构建拖放页面编辑器的 React 框架。 - Prev Wong&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚙️ &lt;a href=&quot;https://github.com/bndkt/kotekan&quot;&gt;Kotekan&lt;/a&gt;&lt;/strong&gt; – 一个基于 Bun 并支持 React Server Components 的简单 React 框架。 - Benedikt Müller&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚙️ &lt;a href=&quot;https://github.com/cytoscape/cytoscape.js&quot;&gt;Cytoscape.js v3.29&lt;/a&gt;&lt;/strong&gt; – 图论/网络可视化和分析库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚙️ &lt;a href=&quot;https://github.com/timlrx/tailwind-nextjs-starter-blog&quot;&gt;Tailwind Next.js Starter Blog v2.2&lt;/a&gt;&lt;/strong&gt; – 一个博客启动模板。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚙️ &lt;a href=&quot;https://github.com/pubkey/rxdb/releases/tag/15.18.0&quot;&gt;RxDB v15.18&lt;/a&gt;&lt;/strong&gt; – 面向 JS 应用的离线优先、反应式数据库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚙️ &lt;a href=&quot;https://jazz-soft.net/doc/JZZ/&quot;&gt;JZZ v1.8.2&lt;/a&gt;&lt;/strong&gt; – 适用于 Node 和浏览器的 MIDI 库。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;⚙️ &lt;a href=&quot;https://github.com/emberjs/ember.js/releases/tag/v5.8.0&quot;&gt;Ember.js v5.8&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
</description><link>https://docschina.org/news/weekly/js/684</link><guid isPermaLink="false">https://docschina.org/news/weekly/js/684</guid><author>TimLi,loveloki</author><itunes:image href="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/witsoytxgchsvp3nmrpp.jpg"></itunes:image></item><item><title>683 期 - React 之外的前端开发：Svelte</title><description>&lt;hr&gt;
&lt;p&gt;title: 683 期 - React 之外的前端开发：Svelte&lt;br&gt;
editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yucohny&lt;/li&gt;
&lt;li&gt;Jojo&lt;/li&gt;
&lt;li&gt;TimLi&lt;br&gt;
description: 本期介绍了一篇文章，其深入研究了一位开发者如何使用 Svelte 构建现代前端应用程序的。如果你从未尝试过 Svelte，这是一个介绍关键概念、权衡和技巧的好起点。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://itnext.io/frontend-development-beyond-react-svelte-1-3-f47eda22cba5?gi=1e473565585a&amp;amp;sk=e737ef9aec291d033d1140b4bbb0bf56&amp;amp;source=friends_link&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ffiw3nxbznr2mgnt4feq.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;🔥 本周热门&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://itnext.io/frontend-development-beyond-react-svelte-1-3-f47eda22cba5?gi=687d8d243129&amp;amp;sk=e737ef9aec291d033d1140b4bbb0bf56&amp;amp;source=friends_link&quot; title=&quot;helabenkhalfallah.medium.com&quot;&gt;React 之外的前端开发：Svelte&lt;/a&gt;&lt;/strong&gt; —— 一篇深入研究一个开发者如何使用 &lt;a href=&quot;https://svelte.dev/&quot;&gt;Svelte&lt;/a&gt; 构建现代前端应用程序的令人惊讶的全面文章。如果你从未尝试过 Svelte，这是一个介绍关键概念、权衡和技巧的好起点。&lt;/p&gt;
&lt;p&gt;Héla Ben Khalfallah&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🛠&amp;nbsp;&lt;a href=&quot;https://jsbin.com/safoqap/6/edit?html,output&quot; title=&quot;jsbin.com&quot;&gt;用于玩转 TC39 Signal 提案的 JavaScript Bin&lt;/a&gt;&lt;/strong&gt; —— 上周，我们介绍了 &lt;a href=&quot;https://github.com/tc39/proposal-signals&quot;&gt;向 JavaScript 添加 Signal 的提案&lt;/a&gt;，现在通过 polyfill 就可以开始尝试了。&lt;/p&gt;
&lt;p&gt;NullVoxPopuli&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快讯：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.val.town/&quot;&gt;Val Town&lt;/a&gt; 是一个非常棒的在线平台，可以直接从浏览器编写和部署 TypeScript 函数，并且刚刚完成了 &lt;a href=&quot;https://blog.val.town/blog/seed/&quot;&gt;550 万美元的融资&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/tc39/proposal-set-methods&quot;&gt;set 方法提案&lt;/a&gt; 在本周的 TC39 会议上晋升至 Stage 4。&lt;a href=&quot;https://github.com/tc39/proposal-promise-try&quot;&gt;&lt;code&gt;Promise.try&lt;/code&gt;&lt;/a&gt; 和 &lt;a href=&quot;https://github.com/tc39/proposal-math-sum&quot;&gt;&lt;code&gt;Math.sumPrecise&lt;/code&gt;&lt;/a&gt; 晋升至 Stage 2.7。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://twitter.com/devdevcharlie/status/1777366634514309610&quot;&gt;🚗 你了解使用 JavaScript 黑客攻击一辆汽车会发生什么吗？&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://ionic.io/blog/recapping-ngconf-2024&quot;&gt;对最近 ngConf 2024 活动中 Angular 发展的回顾&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📒&amp;nbsp; 教程与趣事&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://macwright.com/2024/03/29/figma-plugins.html&quot; title=&quot;macwright.com&quot;&gt;开发 Figma 插件&lt;/a&gt;&lt;/strong&gt; —— 这篇文章介绍了关于使用 JavaScript 开发 Figma 插件的一些有趣观察，包括它们如何被沙盒化以及作者实现插件的一些细节。&lt;/p&gt;
&lt;p&gt;Tom MacWright&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://frontendmasters.com/blog/devtools-tips-tricks/&quot; title=&quot;frontendmasters.com&quot;&gt;一些开发者工具的提示和技巧&lt;/a&gt;&lt;/strong&gt; —— 作者表示，大多数开发人员只是浅尝辄止开发者工具的功能，这篇文章分享了十个技巧。&lt;/p&gt;
&lt;p&gt;Pankaj Parashar&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.frontend-almanac.com/js-object-structure&quot;&gt;JavaScript 引擎中的对象结构&lt;/a&gt;&lt;/strong&gt; —— 如果想要了解对象在 JavaScript 引擎的内部表示，那么可以看看这篇文章。&lt;/p&gt;
&lt;p&gt;Frontend Almanac&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://upstash.com/blog/article-recommendation-system&quot;&gt;使用 Upstash、Fly 和 OpenAI 构建文章推荐系统&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Rishi Raj Jain&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://textslashplain.com/2024/04/10/browser-security-bugs-that-arent-javascript-in-pdf/&quot;&gt;不存在的浏览器安全漏洞：PDF 中的 JavaScript&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ericlaw&lt;/p&gt;
&lt;h2&gt;🛠&amp;nbsp; 代码与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/pahen/madge&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/lk6qmejyhgwepjtdjqqr.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/pahen/madge&quot; title=&quot;github.com&quot;&gt;Madge v7.0：从模块依赖关系创建图表&lt;/a&gt;&lt;/strong&gt; —— 一个用于生成模块依赖关系的可视化图表的工具，可以找到循环依赖，并发现其他有用的信息。&lt;/p&gt;
&lt;p&gt;Patrik Henningsson&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/Distributive-Network/PythonMonkey&quot; title=&quot;github.com&quot;&gt;PythonMonkey：Python VM 中的 JavaScript 引擎&lt;/a&gt;&lt;/strong&gt; —— 如果你需要使用 Python，但也想运行 JavaScript，这个工具可以让你通过将 Mozilla SpiderMonkey JavaScript 引擎嵌入到 Python 运行时中，由 Python 提供主机环境来实现。&lt;/p&gt;
&lt;p&gt;Distributive&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://zengm.com/facesjs/&quot; title=&quot;zengm.com&quot;&gt;Faces.js：用于生成基于矢量的卡通脸部的库&lt;/a&gt;&lt;/strong&gt; —— 最终结果让人想起了 Nintendo Wii 上是如何创建自己的角色的。脸部以 SVG 的形式绘制，每个脸部也由一个 JavaScript 对象表示，所以你可以稍后再次绘制它们。&lt;/p&gt;
&lt;p&gt;ZenGM&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://colorjs.io/&quot; title=&quot;colorjs.io&quot;&gt;Color.js v0.5：遵循最新的处理规范&lt;/a&gt;&lt;/strong&gt; —— 一个用于在浏览器中处理颜色的出色库，遵循最新的规范。它甚至已经被浏览器用来测试他们的 CSS Color 4/5 实现。&lt;/p&gt;
&lt;p&gt;Lea Verou 和 Chris Lilley&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://kosko.dev/&quot; title=&quot;kosko.dev&quot;&gt;Kosko：用 JavaScript 组织 Kubernetes Manifests&lt;/a&gt;&lt;/strong&gt; —— &lt;a href=&quot;https://kosko.dev/blog/2024/03/28/kosko-4.1&quot;&gt;版本 v4.1&lt;/a&gt; 刚刚发布，带有一个新的插件系统。&lt;/p&gt;
&lt;p&gt;Tommy Chen&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;版本发布：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://eslint.org/blog/2024/04/eslint-v9.0.0-released/&quot;&gt;ESLint v9.0&lt;/a&gt;&lt;/strong&gt; – 一个重要的版本，带有大量的清理，一个新的 &lt;a href=&quot;https://eslint.org/blog/2024/04/eslint-v9.0.0-released/#new-rule%3A-no-useless-assignment&quot;&gt;no-useless-assignment 规则&lt;/a&gt;，以及众多的调整和改变。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://vitepress.dev/&quot;&gt;VitePress v1.1&lt;/a&gt;&lt;/strong&gt; – Vite &amp;amp; Vue 驱动的静态站点生成器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/npm/cli/releases/tag/v10.5.2&quot;&gt;npm v10.5.2&lt;/a&gt;&lt;/strong&gt; – 现在 &lt;a href=&quot;https://twitter.com/vinii_joga10/status/1778162124797178340&quot;&gt;npm 可以更快地运行脚本&lt;/a&gt;，尽管只快了大概 30 毫秒。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://mikro-orm.io/blog/mikro-orm-6-2-released&quot;&gt;Mikro ORM v6.2&lt;/a&gt;&lt;/strong&gt; – 基于 Data Mapper 的 Node.js 的 TypeScript ORM。SQL Server 和 libSQL/Turso 加入了支持的数据库列表。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.rspack.dev/blog/announcing-0.6.html&quot;&gt;Rspack v0.6&lt;/a&gt;&lt;/strong&gt; – 快速的基于 Rust 的 web 打包器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/pixijs/pixijs/releases/tag/v8.1.0&quot;&gt;Pixi.js v8.1&lt;/a&gt;&lt;/strong&gt; – 快速的 WebGL 和 WebGPU 2D 图形引擎默认切换回 WebGL，因为浏览器支持还不成熟。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/cure53/DOMPurify&quot;&gt;DOMPurify v2.5&lt;/a&gt;&lt;/strong&gt; – 快速的 HTML 和 SVG 的 XSS 清理器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/hakimel/reveal.js/releases/tag/5.1.0&quot;&gt;Reveal.js v5.1&lt;/a&gt;&lt;/strong&gt; – 用于构建 HTML 展示的框架。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/xtermjs/xterm.js/releases/tag/5.5.0&quot;&gt;Xterm.js v5.5&lt;/a&gt;&lt;/strong&gt; – 在 Web 上创建终端体验。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/image-js/tiff&quot;&gt;TIFF v6.0&lt;/a&gt;&lt;/strong&gt; – 纯 JavaScript TIFF 图像解码器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/shikijs/shiki&quot;&gt;Shiki v1.3&lt;/a&gt;&lt;/strong&gt; – 强大的语法高亮器。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://docschina.org/news/weekly/js/683</link><guid isPermaLink="false">https://docschina.org/news/weekly/js/683</guid><author>Yucohny,Jojo,TimLi</author><itunes:image href="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ffiw3nxbznr2mgnt4feq.jpg"></itunes:image></item><item><title>682 期 - 向 JavaScript 添加 Signal 的提案</title><description>&lt;hr&gt;
&lt;p&gt;title: 682 期 - 向 JavaScript 添加 Signal 的提案&lt;br&gt;
editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yucohny&lt;/li&gt;
&lt;li&gt;Zhper&lt;/li&gt;
&lt;li&gt;Jojo&lt;/li&gt;
&lt;li&gt;TimLi&lt;br&gt;
description: 本期介绍了一个非常早期阶段的提案，旨在为 ECMAScript/JavaScript 带来一个新特性：Signal！这个提案汲取了众多流行框架的思想，并试图让大家在处理状态和基于状态变更进行更新时达成一致。Rob 对提案进行了更多的介绍。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/proposal-signals/proposal-signals&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/pzmgxfajpix4alqpeaec.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;🔥 本周热门&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/proposal-signals/proposal-signals&quot; title=&quot;github.com&quot;&gt;向 JavaScript 添加 Signal 的提案&lt;/a&gt;&lt;/strong&gt; —— 这是一个非常早期阶段的提案，旨在为 ECMAScript/JavaScript 带来一个新特性：Signal！这个提案汲取了众多流行框架的思想，并试图让大家在处理状态和基于状态变更进行更新时达成一致。&lt;a href=&quot;https://eisenbergeffect.medium.com/a-tc39-proposal-for-signals-f0bedd37a335&quot;&gt;Rob 在这里对提案进行了更多的介绍&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Rob Eisenberg 与 Daniel Ehrenberg&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/eduardoleao052/js-torch&quot; title=&quot;github.com&quot;&gt;JS-Torch：一个类似 PyTorch 的 JavaScript 库&lt;/a&gt;&lt;/strong&gt; —— Python 的 &lt;a href=&quot;https://pytorch.org/&quot;&gt;PyTorch&lt;/a&gt; 是机器学习库中的黄金标准之一，而这个项目将其一些特性直接带入了 JavaScript 世界。这里有一个 &lt;a href=&quot;https://eduardoleao052.github.io/js-torch/assets/demo/demo.html&quot;&gt;基于浏览器的实时演示&lt;/a&gt;。虽然现在还处于早期阶段，但这个项目可能会变得重要。&lt;/p&gt;
&lt;p&gt;Eduardo Leao&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://bun.sh/blog/bun-v1.1&quot; title=&quot;bun.sh&quot;&gt;Bun v1.1 发布：开始支持 Windows&lt;/a&gt;&lt;/strong&gt; —— 以轻松的代号 Bundows 命名，这个替代服务器端运行时现在可以直接在 Windows 10 及以上版本（当然还有 WSL、macOS 和 Linux）上运行。这是其被采纳的关键步骤，甚至像 &lt;a href=&quot;https://bun.sh/blog/bun-v1.1#the-bun-shell&quot;&gt;Bun Shell&lt;/a&gt; 这样的特性也能在 Windows 上开箱即用。同时，Node 的兼容性继续提高，开始支持 &lt;code&gt;node:http2&lt;/code&gt; 和 Bun 和 Node 进程之间的 IPC 支持。&lt;/p&gt;
&lt;p&gt;The Entire Bun Team&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快讯：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;V8 团队的 Samuel Groß &lt;a href=&quot;https://v8.dev/blog/sandbox&quot;&gt;解释了 V8 沙箱&lt;/a&gt;，这是一种安全机制，旨在防止 V8 引擎中的内存损坏影响到进程中的其他内存。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://dexie.org/&quot;&gt;Dexie.js&lt;/a&gt; 是一个流行的 IndexedDB 封装，其创建者已经推出了 &lt;a href=&quot;https://dexie.org/announcements/2024-03-27&quot;&gt;Dexie Cloud&lt;/a&gt;，这是一个平台，用于存储和同步应用程序之间的数据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Svelte 的 Rich Harris &lt;a href=&quot;https://github.com/sveltejs/svelte/issues/11052&quot;&gt;在自闭合 HTML 标签及其对 Svelte 影响的误解后感到震惊&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤡 有一个奇特的 JavaScript 主题的愚人节玩笑，宣布 &lt;a href=&quot;https://ietfa.org/&quot;&gt;为域名提供 &lt;code&gt;.js&lt;/code&gt; 顶级域&lt;/a&gt;。遗憾的是，这不是真的，但如果你想要一些类似的东西，那么 &lt;a href=&quot;https://js.org/&quot;&gt;确实有 &lt;code&gt;js.org&lt;/code&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关于 &lt;a href=&quot;https://blog.angular.io/angular-and-wiz-are-better-together-91e633d8cd5a?gi=86372aa296fe&quot;&gt;Angular 和 Wiz 合并&lt;/a&gt; 的官方更新。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📒&amp;nbsp; 教程与趣事&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.trl.sn/blog/what-is-a-json-number/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/zmiajbkzpn8kzxbng9jg.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.trl.sn/blog/what-is-a-json-number/&quot; title=&quot;blog.trl.sn&quot;&gt;什么才算 JSON 数字？&lt;/a&gt;&lt;/strong&gt; —— 尽管 JSON 有着标准，但答案比你想象的要复杂得多，尤其当涉及到与其他生态系统和非 JavaScript 语言相接时。&lt;/p&gt;
&lt;p&gt;Brian Terlson&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://medium.com/dartlang/history-of-js-interop-in-dart-98b06991158f&quot; title=&quot;medium.com&quot;&gt;Dart 中 JavaScript 交互操作的历史&lt;/a&gt;&lt;/strong&gt; —— 大约 12 年前，谷歌推出了 &lt;a href=&quot;https://dart.dev/&quot;&gt;Dart&lt;/a&gt;，一种最初似乎要接管许多 JavaScript 用例的语言，但最终找到了自己的定位（尤其是结合 &lt;a href=&quot;https://flutter.dev/&quot;&gt;Flutter&lt;/a&gt;）。不过，JavaScript 的交互操作性依然重要，并且在 &lt;a href=&quot;https://medium.com/dartlang/dart-3-3-325bf2bf6c13&quot;&gt;Dart v3.3&lt;/a&gt; 中得到了 &lt;a href=&quot;https://medium.com/dartlang/dart-3-3-325bf2bf6c13#c141&quot;&gt;显著改进&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Sigmund Cherem (谷歌)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.sabatino.dev/bfcache-explained/&quot; title=&quot;www.sabatino.dev&quot;&gt;介绍 BFCache&lt;/a&gt;&lt;/strong&gt; —— &lt;a href=&quot;https://web.dev/articles/bfcache&quot;&gt;向后/向前缓存&lt;/a&gt;（也就是 bfcache）是一种浏览器优化，让你在浏览器中有更快的向前向后的体验 —— 它已经存在多年，通常需要你独自作为 JavaScript 开发人员，但同时有一些事情值得注意。&lt;/p&gt;
&lt;p&gt;Sabatino Masala&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://simonwillison.net/2024/Mar/30/ocr-pdfs-images/&quot; title=&quot;simonwillison.net&quot;&gt;直接在浏览器中对 PDF 和图像运行 OCR&lt;/a&gt;&lt;/strong&gt; —— 在后台查看如何使用 JavaScript 创建一个简单的工具来对拖到页面上的图像和 PDF 执行 OCR。&lt;/p&gt;
&lt;p&gt;Simon Willison&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.ignacemaes.com/the-easy-way-to-access-the-last-javascript-array-element/&quot;&gt;访问最后一个数组元素的简单方法&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ignace Maes&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.notmyidea.org/a-comparison-of-javascript-crdts.html&quot;&gt;JavaScript&amp;nbsp;CRDT 的比较&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Alexis Métaireau&lt;/p&gt;
&lt;h2&gt;🛠&amp;nbsp; 代码与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://wicky.nillia.ms/cally/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wyfnehtznrxl4xqbgkpa.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://wicky.nillia.ms/cally/&quot; title=&quot;wicky.nillia.ms&quot;&gt;Cally：小型、功能丰富的日历组件&lt;/a&gt;&lt;/strong&gt; —— 一个包含选择单个日期或日期范围的开源日历组件集合。与框架无关，可主题化，本地化，并且具有可访问性（甚至有一个 &lt;a href=&quot;https://wicky.nillia.ms/cally/accessibility/&quot;&gt;可访问性声明&lt;/a&gt; 展示了其对这一领域的承诺）。&lt;/p&gt;
&lt;p&gt;Nick Williams&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;📊&amp;nbsp;&lt;a href=&quot;https://counterscale.dev/&quot; title=&quot;counterscale.dev&quot;&gt;Counterscale：在 Cloudflare 上运行的可扩展 Web 分析&lt;/a&gt;&lt;/strong&gt; —— 一个简单的网络分析跟踪器和仪表板，旨在通过在 Cloudflare 上托管（在某些特定级别上还是免费的）、易于部署和维护。&lt;/p&gt;
&lt;p&gt;Ben Vinegar&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🎵&amp;nbsp;&lt;a href=&quot;https://tonaljs.github.io/tonal/docs/&quot; title=&quot;tonaljs.github.io&quot;&gt;Tonal.js：音乐理论库&lt;/a&gt;&lt;/strong&gt; —— 充满了用于操纵音乐元素如音符、音程、和弦、音阶、调式和调性的函数，被用作 &lt;a href=&quot;https://github.com/tonaljs/tonal?tab=readme-ov-file#projects-using-tonal&quot;&gt;其他与音乐相关的项目&lt;/a&gt; 的基础。这是 &lt;a href=&quot;https://github.com/tonaljs/tonal&quot;&gt;GitHub 仓库&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;danigb&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://kubetail-org.github.io/fancy-ansi/&quot; title=&quot;kubetail-org.github.io&quot;&gt;Fancy-ANSI：将 ANSI 文本转化为 HTML&lt;/a&gt;&lt;/strong&gt; —— 如果出于某种原因想要将带有 &lt;a href=&quot;https://en.wikipedia.org/wiki/ANSI_escape_code&quot;&gt;ANSI 转义码&lt;/a&gt; 的文本转换为 HTML，那么这个工具将会很适合你。它的主页提供了许多示例。这是 &lt;a href=&quot;https://github.com/kubetail-org/fancy-ansi&quot;&gt;GitHub 仓库&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Andres Morey&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/zheksoon/dioma&quot; title=&quot;github.com&quot;&gt;Dioma：Vanilla JavaScript 和 TypeScript 的依赖注入容器&lt;/a&gt;&lt;/strong&gt; —— 没有装饰器，没有注解，没有魔法，没有依赖性——只需将 &lt;code&gt;static scope&lt;/code&gt; 属性添加到类中，并使用 &lt;code&gt;inject&lt;/code&gt; 来获取一个实例。&lt;/p&gt;
&lt;p&gt;Eugene Daragan&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.npmjs.com/package/svelte-zoomable-circles&quot; title=&quot;www.npmjs.com&quot;&gt;svelte-zoomable-circles：用于浏览分层数据的 Svelte 组件&lt;/a&gt;&lt;/strong&gt; —— 一个用于显示和浏览分层数据的 &lt;a href=&quot;https://svelte.dev/&quot;&gt;Svelte&lt;/a&gt; 组件，使用可缩放的圆圈。这是 &lt;a href=&quot;https://openopensource.com/&quot;&gt;在线演示&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Tyler Berbert&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;版本发布：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://deno.com/blog/v1.42&quot;&gt;Deno v1.42&lt;/a&gt;&lt;/strong&gt; – 可替代性的 JavaScript 运行时现在首次支持 &lt;a href=&quot;https://jsr.io/&quot;&gt;JSR&lt;/a&gt;，并进一步提升了与 Node.js 的兼容性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://babylonjs.medium.com/introducing-babylon-js-7-0-a141cd7ede0d&quot;&gt;Babylon.js v7&lt;/a&gt;&lt;/strong&gt; - 这是 &lt;a href=&quot;https://www.babylonjs.com/&quot;&gt;官方网站&lt;/a&gt;，这是备受欢迎的渲染引擎的重要版本发布。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://nodejs.org/en/blog/vulnerability/april-2024-security-releases&quot;&gt;Node.js 2024 年 4 月 3 日安全更新&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://docusaurus.io/blog/releases/3.2&quot;&gt;Docusaurus v3.2&lt;/a&gt;&lt;/strong&gt; – 这是一款流行的内容/文档站点生成器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/gulpjs/gulp/releases/tag/v5.0.0&quot;&gt;Gulp v5.0&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://vinejs.dev/docs/introduction&quot;&gt;VineJS v2.0&lt;/a&gt;&lt;/strong&gt; – 这是一个用于 Node.js 的表单数据验证库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/electric-sql/pglite&quot;&gt;PGlite v0.1.1&lt;/a&gt;&lt;/strong&gt; – 这是一个轻量级的 Postgres 包，以 WASM 的形式打包成一个 TypeScript 库，可在浏览器、Node.js、Bun 和 Deno 中使用。现在支持 Postgres 数组类型。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/gvergnaud/ts-pattern&quot;&gt;TS-Pattern v5.1&lt;/a&gt;&lt;/strong&gt; – 这是一个具有智能类型推断的模式匹配库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/kewisch/ical.js&quot;&gt;ical.js v2.0&lt;/a&gt;&lt;/strong&gt; – 这是一个用于解析 ICS（RFC5545）和 vCard（RFC6350）数据的解析器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/isaacs/minimatch&quot;&gt;Minimatch v9.0.4&lt;/a&gt;&lt;/strong&gt; – 这是一个用于模式匹配的全局匹配函数，被 &lt;code&gt;npm&lt;/code&gt; 自身使用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/iamstevendao/vue-tel-input&quot;&gt;vue-tel-input v9.0&lt;/a&gt;&lt;/strong&gt; – 这是一个用于 Vue 的电话号码输入组件。欢迎查看 &lt;a href=&quot;https://vue-tel-input.iamstevendao.com/&quot;&gt;演示&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/KingSora/OverlayScrollbars&quot;&gt;OverlayScrollbars v2.7&lt;/a&gt;&lt;/strong&gt; – 这是一个用于定制滚动条的 JavaScript 插件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/octokit/octokit.js&quot;&gt;Octokit.js v3.2&lt;/a&gt;&lt;/strong&gt; – 这是一个一应俱全的 GitHub SDK。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://docschina.org/news/weekly/js/682</link><guid isPermaLink="false">https://docschina.org/news/weekly/js/682</guid><author>Yucohny,Zhper,Jojo,TimLi</author><itunes:image href="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/pzmgxfajpix4alqpeaec.jpg"></itunes:image></item><item><title>681 期 - 通过动画彻底弄懂 Promise 执行原理</title><description>&lt;hr&gt;
&lt;p&gt;title: 681 期 - 通过动画彻底弄懂 Promise 执行原理&lt;br&gt;
editors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TimLi&lt;/li&gt;
&lt;li&gt;Yucohny&lt;br&gt;
description: 本期介绍了一篇带有图解和动画的文章，配以一个 8 分钟视频，深入介绍了 Promise 的工作方式以及其在后台的调度方式。鉴于 Promise 是 JavaScript 中异步函数的基础，对这些机制有一个良好的心智模型是很有用的。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href=&quot;https://www.lydiahallie.com/blog/promise-execution&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/zwg0bhenhu7xb8mc86uy.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.lydiahallie.com/blog/promise-execution&quot; title=&quot;www.lydiahallie.com&quot;&gt;JavaScript 可视化：Promise 执行&lt;/a&gt;&lt;/strong&gt; —- 这是一篇带有图解和动画的文章，配以一个 8 分钟视频，深入介绍了 Promise 的工作方式以及其在后台的调度方式。鉴于 Promise 是 JavaScript 中异步函数的基础，对这些机制有一个良好的心智模型是很有用的。&lt;/p&gt;
&lt;p&gt;Lydia Hallie&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;▶&amp;nbsp;&lt;a href=&quot;https://www.youtube.com/watch?v=LB8KwiiUGy0&quot; title=&quot;www.youtube.com&quot;&gt;Node.js：起源故事的纪录片&lt;/a&gt;&lt;/strong&gt; —- 这部纪录片有一个小时长，但它非常好地覆盖了 Node 的历史，包括 2014 年一切如何酝酿到 io.js 的分支。或许可以在复活节周末观看？&lt;/p&gt;
&lt;p&gt;Honeypot&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;快讯：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Node.js 技术指导委员会已 &lt;a href=&quot;https://socket.dev/blog/node-js-tsc-confirms-no-intention-to-remove-npm-from-distribution&quot;&gt;确认没有意图从主 Node 分发中移除 npm&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://isbunwindowsyet.com/&quot;&gt;Bun 是否已经支持 Windows 了&lt;/a&gt;？不，但 Bun v1.1 将支持 Windows，&lt;a href=&quot;https://twitter.com/bunjavascript/status/1773040914715259270&quot;&gt;据说即将发布&lt;/a&gt;……&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://gist.github.com/ceving/6e65886e04563ed9e6e42cc5f8d3f656&quot;&gt;一个简单但有用的 Web Component 示例&lt;/a&gt;，在一个 GitHub Gist 中。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://runjs.app/play&quot;&gt;RunJS Play&lt;/a&gt; 是一个整洁的基于 Web 的 JavaScript 游乐场，它在每一行旁边显示即时的实时反馈。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://vercel.com/changelog/node-js-v20-lts-is-now-generally-available&quot;&gt;Vercel 现在完全支持 Node.js v20&lt;/a&gt;，适用于构建和函数。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📒 教程与趣事&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://v8.dev/features/iterator-helpers&quot; title=&quot;v8.dev&quot;&gt;一览 ECMAScript 的迭代器助手方法&lt;/a&gt;&lt;/strong&gt; —- &lt;a href=&quot;https://github.com/tc39/proposal-iterator-helpers&quot;&gt;这个提案&lt;/a&gt; 已经有几年的历史了，但现在在 TC39 的 stage 3 中，迭代器助手正在被实现并与 V8 12.2/Chrome 122 一起发布。这些助手是像 &lt;code&gt;.map&lt;/code&gt;，&lt;code&gt;.filter&lt;/code&gt;，&lt;code&gt;.take&lt;/code&gt; 和 &lt;code&gt;.forEach&lt;/code&gt; 这样的函数，并且可以提供给其原型链中有 &lt;code&gt;Iterator.prototype&lt;/code&gt; 的任何对象。&lt;/p&gt;
&lt;p&gt;Rezvan Mahdavi Hezaveh (V8)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://waku.gg/blog/introducing-pages-router&quot; title=&quot;waku.gg&quot;&gt;介绍 Waku 的 Page Router&lt;/a&gt;&lt;/strong&gt; —- &lt;a href=&quot;https://waku.gg/&quot;&gt;Waku&lt;/a&gt; 是一个有趣的最小化服务器端 React 框架，现在它也为现代 React 服务器组件时代带来了一个最小化的 API：“现在，创建一个 Waku 站点就像在 &lt;code&gt;./src/pages&lt;/code&gt; 目录中创建一些文件和文件夹一样简单”。&lt;/p&gt;
&lt;p&gt;Sophia Andren&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://frontendmasters.com/blog/what-you-need-to-know-about-modern-css-spring-2024-edition/&quot; title=&quot;frontendmasters.com&quot;&gt;需要知道的关于现代 CSS 的知识&lt;/a&gt;&lt;/strong&gt; —- 这是一份指南，列出了 CSS 的最新添加项（想想嵌套、视图转换，以及 &lt;code&gt;:has()&lt;/code&gt; 等）。JavaScript 也在其中有出现，用于增强或者填充现代 CSS 功能。&lt;/p&gt;
&lt;p&gt;Chris Coyier&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.platformatic.dev/building-a-micro-htmx-ssr-framework&quot; title=&quot;blog.platformatic.dev&quot;&gt;构建一个微型 HTMX SSR 框架&lt;/a&gt;&lt;/strong&gt; -— Matteo 基于早期的关于创建一个“电影引语”应用程序的教程，探索了一个可以使用的替代后端堆栈，基于 Fastify、Vite 和 HTMX。&lt;/p&gt;
&lt;p&gt;Matteo Collina&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.angular.io/meet-angulars-new-output-api-253a41ffa13c?gi=24587e125683&quot;&gt;认识 Angular 的新 &lt;code&gt;output()&lt;/code&gt; API&lt;/a&gt;&lt;/strong&gt; —- Outputs 允许组件作者向父组件发出值。&lt;/p&gt;
&lt;p&gt;Paul Gschwendtner（Google）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://dusty.phillips.codes/2024/03/20/we-rewrote-our-react-app-in-svelte-in-three-weeks/&quot;&gt;我们在三周内用 Svelte 重写了我们的 React 应用程序&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dusty Phillips&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://confidence.sh/blog/how-to-use-the-web-bluetooth-api/&quot;&gt;如何使用 Web 蓝牙 API&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Confidence Okoghenun&lt;/p&gt;
&lt;h2&gt;🛠 代码与工具&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://trix-editor.org/&quot;&gt;&lt;img src=&quot;https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/rr2cuhr062w6lyxc8hna.jpg&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://trix-editor.org/&quot; title=&quot;trix-editor.org&quot;&gt;Trix 2.1：一个干净、丰富的 Web WYSIWYG 编辑器&lt;/a&gt;&lt;/strong&gt; -— 一个由 37signals（被誉为 Ruby on Rails 的发源地）开发的 WYSIWYG 编辑器。它被用在他们的 Basecamp 和 HEY 应用程序中，所以它经过了最严格的测试。这是 &lt;a href=&quot;https://github.com/basecamp/trix&quot;&gt;GitHub 仓库&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;37signals&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://atlassian.design/components/pragmatic-drag-and-drop/about&quot; title=&quot;atlassian.design&quot;&gt;Atlassian 的实用拖放框架&lt;/a&gt;&lt;/strong&gt; -— 一个注重性能的拖放库，可以用来在任何前端堆栈上提供体验。页面上有一个实时演示，以及 Alex Reardon 的&lt;a href=&quot;https://www.youtube.com/watch?v=5SQkOyzZLHM&quot;&gt;演讲录音&lt;/a&gt;，介绍了创建它的动机和它的工作方式。&lt;/p&gt;
&lt;p&gt;Atlassian&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/selemondev/create-vue3-app&quot; title=&quot;github.com&quot;&gt;Create Vue3 App：一个新的 Vue 应用脚手架工具&lt;/a&gt;&lt;/strong&gt; -— 受到像 Create React App 这样的工具的启发，这个工具使用 Vite 来帮助启动一个新的基于 Vue 的应用程序，使用的工具基于对一系列问题的回答。&lt;/p&gt;
&lt;p&gt;Selemon Brahanu&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/github/relative-time-element&quot; title=&quot;github.com&quot;&gt;&lt;code&gt;&amp;lt;relative-time&amp;gt;&lt;/code&gt; v4.4：将时间戳格式化为本地化的相对时间&lt;/a&gt;&lt;/strong&gt; —- 向这个 Web Component 提供一个标准格式的日期和时间，它会渲染出适合的文本。它实际上在 GitHub 本身的各处都有使用（在提交时间上使用 Inspect Element）。欢迎查看 &lt;a href=&quot;https://github.github.io/relative-time-element/examples/&quot;&gt;演示&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;GitHub&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://gist.github.com/OrionReed/4c3778ebc2b5026d2354359ca49077ca&quot; title=&quot;gist.github.com&quot;&gt;DOM3D.js：在 GitHub Gist 中的 3D DOM 查看器&lt;/a&gt;&lt;/strong&gt; —- 将这些代码复制并粘贴到浏览器控制台内，可以获得 DOM 的 3D 视图，这个效果很奇特，但很好玩。&lt;/p&gt;
&lt;p&gt;Orion Reed&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;版本发布：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://blog.vuejs.org/posts/vitepress-1.0&quot;&gt;VitePress v1.0&lt;/a&gt;&lt;/strong&gt; –- 强大的静态站点生成器。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://neutralino.js.org/docs/release-notes/framework/#v510&quot;&gt;Neutralinojs v5.1&lt;/a&gt;&lt;/strong&gt; –- 另一种跨平台桌面应用程序框架。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/BabylonJS/Babylon.js/releases/tag/7.0.0&quot;&gt;Babylon.js v7.0&lt;/a&gt;&lt;/strong&gt; -– 强大的游戏和 3D 渲染引擎。还没有官方的发布帖子，但预计今天晚些时候会有。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.radix-ui.com/blog/themes-3&quot;&gt;Radix Themes v3.0&lt;/a&gt;&lt;/strong&gt; –- 强大的前端组件库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://nodejs.org/en/blog/release/v20.12.0&quot;&gt;Node.js v20.12.0 (LTS)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://nodejs.org/en/blog/release/v18.20.0&quot;&gt;Node v18.20.0 (LTS)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/denoland/deno/releases/tag/v1.42.0&quot;&gt;Deno v1.42.0&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://twitter.com/vite_js/status/1770455259069968837&quot;&gt;Vite v5.2&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://microsoft.github.io/TypeChat/blog/announcing-typechat-0-1-0/&quot;&gt;TypeChat v0.1&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.chromatic.com/blog/chromatic-3/&quot;&gt;Chromatic v3&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/electric-sql/pglite&quot;&gt;PGlite v0.1&lt;/a&gt;&lt;/strong&gt; –- 轻量级的 Postgres，打包为 WASM，作为一个 TypeScript 库，用于浏览器、Node.js、Bun 和 Deno。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/JS-DevTools/npm-publish&quot;&gt;npm-publish v3.1&lt;/a&gt;&lt;/strong&gt; –- 用于发布包到 npm 的 GitHub Action。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://adminjs.co/&quot;&gt;AdminJS v7.8&lt;/a&gt;&lt;/strong&gt; –- Node.js 应用程序的自动管理界面。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/gajus/slonik&quot;&gt;Slonik v39.3&lt;/a&gt;&lt;/strong&gt; -– 具有类型安全的 Node.js Postgres 客户端。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/pmndrs/react-three-fiber&quot;&gt;react-three-fiber v8.16&lt;/a&gt;&lt;/strong&gt; -– Three.js 的 React 渲染器。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description><link>https://docschina.org/news/weekly/js/681</link><guid isPermaLink="false">https://docschina.org/news/weekly/js/681</guid><author>TimLi,Yucohny</author><itunes:image href="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/zwg0bhenhu7xb8mc86uy.jpg"></itunes:image></item></channel></rss>