Skip to main content

6月4日内容汇总

· 15 min read
加菲猫

⭐️ Go语言反射编程指南

⭐️ Go 1.21 确认添加 cmp 包以及 min, max built-in 函数

📒 TypeScript 5.1 正式发布!

⭐️ 识别「ChatGPT造假」,效果超越OpenAI:北大、华为的AI生成检测器来了

⭐️ 给面试官一点小小的 gpt 震撼

⭐️ 非广告| DDD 到底是银弹还是垃圾

⭐️ 开通个人博客啦!附带全部 Hexo + Nginx + Git 教程

⭐️ Go error 处理最佳实践

⭐️ 为什么泛型使你的程序变慢

📒 使用require.context实现优雅的预加载!

⭐️ 聊聊 rust trait

⭐️ Go 编译器优化

⭐️ 从Go源码到可执行文件的编译过程详解

⭐️ 为什么取消了Go1.21,而采用了Go1.21.0的版本命名规则

⭐️ Ranking and Tuning: 解锁预训练模型库的新范式

⭐️ Golang中的25个常见错误:更好地进行go编程的综合指南

⭐️ 颠覆微服务架构?谷歌最新开源service weaver初体验

📒 连尤大都要借鉴的开源项目也会有一些迷惑行为

⭐️ Go1.21 速览:骚操作 panic(nil) 将成为历史!以后别这么干了

⭐️ Go channel FAQ

📒 form元素是React的未来

⭐️ 不要写 clean code, 要写 CRISP code

⭐️ channel 的 15 条规则和底层实现

⭐️ Go netpoll (下篇)- 数据接收发送和关闭

📒 【第2956期】如何编写一个友好支持 Tree-shaking 的库

⭐️ Go 高性能 - singleflight 防止缓存击穿

⭐️ 阅读破10万的学Go建议,不管初学还是进阶Go都值得一看!

⭐️ 深入浅出Go调度器中的GMP模型

⭐️ Go netpoll (上篇)- 数据结构和初始化

📒 ​未来全栈框架会卷的方向

⭐️ 抽丝剥茧,记一次 Go 程序性能优化之旅

📒 原生 popover 终于要来了!

📒 INP 即将代替 FID 成为新的核心 Web 指标

📒 相关文章推荐

《DeviceScript:专为微型设备设计的 TypeScript》。DeviceScript 是微软新推出的一种语言,旨在将 TypeScript 的编程体验应用到低资源的微控制器设备中。它被编译为一种自定义的虚拟机字节码,可以在这样的受限环境中运行(类似于 Go 的 TinyGo)。虽然主要面向 VS Code 用户,但也提供了 命令行选项。

《Deno v1.34:现在 deno compile 也支持 npm 包》。Deno 1.34版本主要增强了与npm和Node.js的兼容性,提高了开发者体验,并为未来的性能优化奠定了基础。此次更新最重要的功能包括:deno compile支持npm包、在deno.json和CLI标志中支持Glob以及TLS证书与IP地址。除此之外,还有许多其他改进和错误修复值得一提。其中,deno compile是本次更新中最受期待的功能之一,它使开发人员可以将项目编译成单个可执行文件,并且现在也支持使用npm包进行编译。同时,在配置文件方面也有所改进,例如新增排除所有子命令下某些文件或文件夹等功能。Deno 1.34还升级了V8至11.5版以及TypeScript至5.0.4版等内容。

《TC39 第 96 次会议的一些更新》。这篇文章介绍了2023年5月16日至18日举行的第96次TC39会议,讨论了几个JavaScript/ECMAScript的特性提案。这些包括Atomics.waitAsync、带有set符号和字符串属性的RegExp v标志、格式良好的Unicode字符串、装饰器元数据(扩展装饰器提案)、TypedArrays/DataView/Math.f16round上的Float16Array、Uint8Array:ArrayBuffer到/from Base64 的Base64编码解码,Promise.withResolvers(创建具有reject/resolve/promise函数作为方法的Promise),时区规范化(在Temporal基础上堆叠的提案)以及Intl.ZonedDateTimeFormat(用于Temporal.ZonedDateTime的Intl格式)。

《Web Components 简介》。这篇文章介绍了如何使用Web Component实现选项卡面板。首先,需要创建一个扩展HTMLElement的类,并将其注册为自定义元素。然后,在connectedCallback生命周期方法中,可以读取提供的子元素并生成UI以显示它们作为选项卡。还介绍了启用阴影DOM来提供范围化的CSS样式和激活标签状态等其他功能。最后,通过添加样式完成了选项卡组件的设计。

《比较三种非破坏性处理数组的方法》。有这篇文章介绍了三种处理数组的方法:for-of 循环、reduce() 和 flatMap()。作者通过实现一些功能来演示这三个特性,包括过滤输入数组以生成输出数组、将每个输入数组元素映射到一个输出数组元素、将每个输入数组元素扩展为零或多个输出数组元素等。对于每种方法,作者都提供了相应的代码示例,并讨论了它们的优缺点以及何时使用它们。总体而言,for-of循环是最通用的工具,而.reduce()适合计算汇总信息(例如所有元素之和),flatMap()则擅长于筛选-映射和将输入元素扩展为零或多个输出元素。

《我是如何将我的 Angular 应用转换为独立组件模式的》。这篇文章介绍了如何使用Angular的独立组件方法来避免使用ngModules。作者解释了独立组件的概念,它可以通过删除不必要的导入来大幅简化应用程序并减小包大小。在示例代码中,作者展示了如何在没有任何模块声明的情况下创建一个组件,并讨论了其优点和缺点。此外,作者还提供了一些工具和技巧,例如Bit开源工具链等,以帮助管理和共享这些独立组件。最后,作者演示了如何将现有项目从ngModule迁移到独立组件方法,并提供相应的代码示例进行说明。

《理解 React 并发》。这篇文章介绍了React v18.0中引入的一项新特性:并发模式。它的基本原则是重新设计渲染过程,使得在渲染下一个视图时,当前视图仍然保持响应性。为此,React团队提出了Concurrent Mode这个概念,并将其实现为可中断工作单元。具体来说,在组件渲染过程中使用requestIdleCallback()函数来实现并发模式。但由于向后兼容问题,Concurrent Mode计划未能实现。因此React团队转而推出了Concurrent Features这个方案,并引入了两个新钩子useTransition和useDeferredValue以支持并发渲染。其中useTransition返回一个布尔标志isPending和一个startTransition函数;而useDeferredValue则用于处理父组件传递给子组件的值更新等情况。需要注意的是,虽然这些钩子可以优化应用程序性能并提高用户体验,但它们也有自己的限制和缺点。如果想要深入理解如何使用React Concurrency,请参考官方文档及相关资源进行学习和掌握。

《你可能不需要 React Query》。这篇文章讨论了React Query在React Server Components出现后是否还有存在的必要性。作者认为,如果数据获取只发生在服务器端,那么使用React Query就没有必要了。但是,在过渡期间,可以将一些组件移动到仅在服务器上获取数据或使用Server Components预取缓存并将结果传递给客户端组件。此外,对于某些情况(例如无限滚动列表、离线应用程序等),结合React Query和Server Components可能会更好地解决问题。总之,作者认为不需要立即全部转移到Server Components,并且React Query仍然有其存在的价值和用途。

《Storybook Day 的 3D 动画是如何实现的》。这篇文章介绍了团队如何使用React Three Fiber(R3F)构建一个视觉上令人惊叹的三维动画,以Storybook的俄罗斯方块品牌为灵感创作出一个引人注目的三维插图。文章涵盖了创建场景时使用的几种技术,包括通过球体堆积避免对象重叠、使用挤压几何模型化俄罗斯方块、利用深度和阴影等效果增强视觉效果、通过减少材质数量和使用材质存储库进行性能优化等。该团队使用NextJS和@react-three/fiber构建活动网站。他们采用pack-sphere库来平均分配方块并防止任何潜在重叠问题。为解决“7.0”文本与方块之间的重叠问题,他们稍微沿z轴移动球体而不是检测球体与文本几何之间的碰撞。他们还利用Three.js中提供的ExtrudeGeometry对类似SVG路径或CSS形状这样的2D形状进行挤压,并将其沿着z轴拉伸成3D物体。为了增加一些特效,他们添加了阴影和景深效果,使其具有更多电影般感觉,并通过Material Store技术降低需要渲染材质数量从而提高性能。总之,这是一个非常好的指南,适合任何想学习如何在React Three Fiber(R3F)中构建视觉上令人惊叹的三维动画。

《如何开发一个自定义的 debounce Hook》。本文介绍了如何使用React创建自定义防抖钩子。在前端Web应用程序中,常见的功能之一是为输入添加防抖。 防抖可以让我们在输入值更改后延迟执行操作。 本文将演示如何使用React创建自定义防抖钩子。首先,我们需要了解什么是自定义Hooks以及它们的作用。 自定义Hook只是一个纯函数,它使用其他Hook来实现特定目标,并且不会产生任何副作用。接下来,文章介绍了如何通过useState和useEffect Hook创建一个名为useFetch的自定义Hook,该Hook可获取数据并返回数据和加载状态。然后文章进一步说明了如何通过useState、useEffect和useRef Hook创建名为useDebounce的自定义钩子,并演示了如何在组件中使用该钩子以实现对输入进行防抖处理。总之,本文提供了有关如何构建具有高度重复利用性能力的React Hooks(包括获取数据、防抖等)的详细指南。

《 JavaScript 安全: 最佳实践和提示》。在一个网络威胁日益复杂的时代,理解如何编写安全的 JavaScript 代码比以往任何时候都更加重要。在这篇文章中,Alex Ivanovs 解释了常见的 JavaScript 漏洞,从跨网站脚本(XSS)和跨站请求伪造(CSRF)到更复杂的问题,比如原型污染和不安全的依赖。

《Node.js 性能状况 2023》。今年是2023年,我们已经发布了 Node.js v20.0。本文对不同版本的 node.js 的性能进行了比较分析。它强调了这些改进和改进,并提供了对这些更改背后原因的深入了解,而没有与其他 JavaScript 运行时进行比较。基准测试结果包含一个可重复的示例和硬件细节。使用了 AWS 专用主机。

⭐️ Go语言爱好者周刊:第 188 期 —— Go 适合开发操作系统吗