⭐️ 跟着 Go 作者学泛型
⭐️ Webpack 迁移 Rspack 速攻实战教程(前瞻版)
📒 Next.js了解篇|一文带你梳理清楚 Next.js 的功能
📒 Go 在 3.8 妇女节(女神节)发布最新版本 Go 1.20.2 和 Go 1.19.7 安全更新
📒 一篇文章带你理解 React 中最“臭名昭著”的 useMemo 和 useCallback
📒 Node.js Toolbox:发现 Node.js 包的一种新方法
📒 浅析 SplitChunksPlugin 及代码分割的意义
⭐️ Go 高性能 - index vs value in for
📒 参考云谦大佬的项目,用 ChatGPT 给前端相关文章写总结
https://github.com/sorrycc/url-system
https://github.com/advancedlogic/GoOse
https://pkg.go.dev/golang.org/x/net/html
⭐️ 「每周译Go」如何在 Go 中使用结构体标签(文末有GIFT)
📒 MDH 前端周刊第 90 期:Signals、Signia、Replit、ChatGPT、CHIPS、技术债
《Demystifying Create React Signals Internals · Daishi Kato's blog》。本文主要介绍了 create-react-signals 库的内部工作原理,这个库的主要目的是将 React 组件中的状态管理从 React 自身分离出来,并使用 signals 来实现状态管理。Signals 是一种包含订阅、获取和设置值等功能的存储对象。文章讲解了如何使用自定义 JSX 转换器将 Signals 转换为可在 React 中使用的组件,以及如何处理对象类型的信号和跳过 diffing 等问题。作者认为,Signals 仍然是 React 中一个开放的研究领域,而使用 Observable 作为新的基元可以进一步探索这种方法。
https://blog.axlight.com/posts/demystifying-create-react-signals-internals/
《The JavaScript Site Generator Review》。该篇文章对当前流行的七种 JavaScript 网站生成器进行了评论。对于 npm 安装时间、客户端 JavaScript 基线、node_modules 权重、npm 审计、遥测(TELEMETRY)等内容进行了测试。其中,有些工具使用创建 x 包来安装依赖,并且包括了帮助用户安装依赖的步骤。然而,这些工具中有一些隐藏了 npm 审计结果(包括关于高严重度的安全漏洞)。还有一些工具默认开启了遥测功能,需要用户选择退出。此外,该文还附带了作者之前的评论和文章链接。
《Effective Higher-Order Components :: Building Better Software Slower》。本文介绍了 React 中的高阶组件(Higher-Order Components,简称 HOC),它是一个接受组件的函数,并在附加逻辑的包裹下返回它。作者指出,虽然 HOC 带来了无限的可能性,但实际应用应限于透明地添加包装或逻辑。同时,作者提出了 HOC 的一些惯例和注意事项,例如 HOC 不应该改变所提供的组件的 API,HOC 应该有一个符合 withNoun 模式的名字,除了组件本身之外,HOCs 不应该有任何参数等等。此外,作者还介绍了一些最常见的 HOC,例如 Props记录、添加格式化等。最后,作者强调,HOC 应该是一个减轻 JSX 精神负担的工具,而不是炫耀函数式编程技巧的机会。钩子是一个更可预测的、明确的模式,但好的 HOC 依然存在并提供了强大的模式。
《Introducing ChatGPT and Whisper APIs》。OpenAI 宣布,其 ChatGPT 和 Whisper 模型现已可用于 API,让开发者能够使用尖端的语言和语音转文本功能。通过一系列系统级别的优化,自去年 12 月以来,ChatGPT 的成本降低了 90%;现在将这些节省成本传递给 API 用户。开发者现在可以在 API 中使用我们的开源 Whisper large-v2 模型,获得更快速、更具成本效益的结果。Snap Inc.、Quizlet、Instacart 和 Shopify 等公司已经开始使用 ChatGPT API 和 Whisper API。OpenAI 还改进了 API 服务条款以更好地满足开发者的需求。同时,OpenAI 还提供专用实例,使开发者能够深入控制特定模型版本和系统性能。
https://openai.com/blog/introducing-chatgpt-and-whisper-apis
《ChatGPT use case examples for programming - RisingStack Engineering》。本文介绍了一些人们如何在职业网页开发中使用 GPT 等 “AI” 工具。作者分享了他的同事们使用 GPT 及其各种变体的经验,以帮助读者更好地理解它们的实用性。例如,Code GPT 是一个 VS Code 插件,可以从注释提示中生成代码、生成单元测试、查找问题、重构代码、记录和解释代码、以及提出问题。ChatGPT 则可用于编写 Mongo 查询、代替 StackOverflow 等。然而,作者指出,使用这些工具时需要小心检查生成的内容,因为 GPT 可能会产生不对的结果。此外,尽管 “AI” 不会大规模取代就业岗位,但它将提高生产力,就像 Photoshop 是更好的画笔一样。
https://blog.risingstack.com/chatgpt-use-case-examples-for-programming/
《React vs Signals: 10 Years Later》。本文探讨了 JavaScript 中的信号(Signals)技术,以及它与 React 的区别和联系。信号是一种细粒度的响应式编程技术,可以用于前端开发中的数据流管理。尽管在 React 和虚拟 DOM 的兴起中,信号被认为是不可预测和危险的模式,但实际上信号从未消失,而是以第三方库或框架的形式存在。本文介绍了 SolidJS,这是一种新型的信号技术,它采用了组合、单向数据流和显式变异等原则,并将所有东西都视为 Effect,与 React 不同的是,它不会将所有操作视为纯函数,而是通过隔离更新来实现状态变化。作者认为,React 曾经 “修复” 了前端开发,但现在信号技术的复兴又将其推向了新的竞争时代。
https://dev.to/this-is-learning/react-vs-signals-10-years-later-3k71
《I'm not sure I understood this article. I think... — DEV Community》。这是 Dan 对于上一篇文章(Signals 主题)的评论。他探讨了 React 和 Solid 在处理渲染逻辑上的不同策略。React 的核心思想是,能够编写渲染逻辑,使其在初始化和更新时都能够运行,并且不会与传递的数据不同步。Solid 则只有模板中的 “空洞” 是响应式的,因此不能像 React 那样使用 if 语句和控制流。作者认为,Solid 的优点在于可以避免部分逻辑的重新执行,但这并不是最终的理想状态。通过编译器,可以实现在不重组代码的情况下自动确定 “组”,以达到类似 useMemo 的优化效果。最后,作者指出 React 不需要将渲染逻辑从内向外编写才能实现更新,这是 React 默认具备的响应性。
《Remote Access to Your Repls via SSH》。Replit 是一个基于云的编码平台,它的所有付费计划都增加了使用 SSH 远程访问 Repls 的功能。订阅了付费计划的用户可以添加他们的 SSH 密钥,并远程操作他们的 Repl。此举使用户能够充分利用 Replit 的功能,同时继续使用其本地开发环境。Replit 将每个 Repl 放入自己的容器中,一旦连接被打开就会运行。在该容器内,一个 SSH 服务器处理所有远程访问需求。一个代理接收连接,验证密钥,并将 SSH 连接通过加密的 SSH 隧道路由到 Repl。
《Introducing Signia》。TLDraw 的开发团队发布了其核心反应式状态管理系统的开源项目 Signia。该库是用于使用基于逻辑时钟的新惰性反应模型处理细粒度反应值(称为 “信号”)的原始库,它诞生的原因是需要高效地处理经常更改的大型派生不可变集合。除了核心库之外,还发布了与 React 绑定的内容。Signia 的 API 类似于 Jotai、@preact/signals 和 Recoil 等类库,其主要区别特征是具有增量派生和内置支持回滚的事务。Signia 的反应性系统基于单个整数,即全局逻辑时钟,每当更新根状态值时,该时钟就会递增。比较时钟值允许 Signia 始终缓存派生值,而不管它们是否正在被积极观察。Signia 的响应式系统基于逻辑时钟和差异,可以实现增量计算派生值。
《The 25 Percent Rule for Tackling Technical Debt》。这篇文章讨论了技术债务的不同类型,并提出了一种 “25% 规则”,即每周花费 10%的时间解决日常技术债务,另外 10%的时间解决每周技术债务,剩下的 5%用于处理每月和每年的技术债务。作者认为,解决技术债务并不是大规模修复的问题,而是通过文化建设来实现。通过改进日常工作中的代码、庆祝重构代码的能力以及知道何时选择好的而不是完美的,可以帮助解决技术债务问题。
《You Don't Need a Build Step》。本文探讨了为什么现代 Web 开发需要构建步骤,以及如何使用 Deno 和 Fresh 等工具实现无需构建的开发。文章介绍了构建步骤的来龙去脉,包括编译、压缩、打包和代码分割等过程,并列举了一些流行的构建工具。作者认为,构建步骤是现代 Web 开发不可避免的一部分,但也带来了复杂性和长时间的构建时间。使用 Deno 和 Fresh 可以实现无需构建的开发,从而提高开发效率和代码质量。
《Three ways to activate an inspector in Node.js | pawelgrzybek.com》。本文介绍了三种激活 Node.js inspector 的方法,其中一种是使用 NODE_OPTIONS 环境变量来调试间接运行 Node 的进程。如果您是 Node.js 调试器的新手,可以查看作者之前发布的两篇文章:“在 Google Chrome 中进行基本的 Node.js 调试” 和 “解释 Visual Studio Code 调试器中的继续、步过、步入和步出操作”。
https://pawelgrzybek.com/three-ways-to-activate-an-inspector-in-node-js/