Skip to main content

· 10 min read
加菲猫

📒 相关文章推荐

Gluon:基于网站创建桌面应用的框架 — 这是一种使用 Node 和已安装的浏览器把 Web 站点构建为桌面应用的新方案。值得注意的是,Gluon 同时支持 Chromium 和 Firefox。Deno 也可以替代 Node。已经支持 Windows 和 Linux,本周刚刚完成了对 macOS 的初步支持。

https://gluonjs.org/

Node v19.3.0 (Current) 发布 — 这是几周前发布的版本,v19.3 是一个典型的增量更新版本,内容包含了 npm 升级到 v9.2.0,这本身是一个足够需要阅读发行说明的内容。

https://nodejs.org/en/blog/release/v19.3.0/

构建同构 JS 库的五大挑战 — 同构(isomorphic)的意思是代码可以同时在客户端和服务器上以最小调整就可以运行的代码或者库。

https://doordash.engineering/2022/12/06/five-challenges-to-building-an-isomorphic-javascript-library/

2023 年如何发布 npm — 这是一个指南,描述了如何在 2023 年将开源包发布到 npm 以及需要注意的事项。如果你想在 2023 年编写和发布一个包,你需要用 Typescript 编写它并将其发布为 ES 模块。

https://blog.taskli.st/posts/how-to-publish-to-npm-in-2023

🌟 2022 年的 JavaScript 新星项目 — Michael Rambeau 第七次以 JavaScript 领域的"趋势项目"综述为我们的 2023 年度揭幕。Bun 占据了 2022 年的头把交椅,但我们会把其他的留给你去看。一些特邀作者也分享了他们对生态系统的看法。

https://risingstars.js.org/2022/en

Evan You 回顾 2022 年与展望 2023 年 — 你可能会因为 Vue.js 和 Vite 而认识 Evan,在这里他回顾了 2022 年 Vue 世界发生的事情(比如 Vue 3.x 成为新的默认版本)以及我们在 2023 年 可以期待的事情,包括神秘的 Vapor 模式。他还提醒我们,Vue 2.x 还有一年才会失效。

https://blog.vuejs.org/posts/2022-year-in-review.html

JS Function Composition:有什么大不了的? — James 关于 JavaScript 基础知识的文章总是很受欢迎,去年我们得到了一篇新鲜的文章,关注一个常见的活动:函数组成。"这有什么大不了的?"他问道。

https://jrsinclair.com/articles/2022/javascript-function-composition-whats-the-big-deal/

开发人员面临的十个常见的 JavaScript 问题 — 这可是一篇好文章。如果你已经用 JavaScript 工作了很多年,这些都是你(可能)知道要避免的坑,但是这里有足够的东西可以让你反复思考。

https://www.toptal.com/javascript/10-most-common-javascript-mistakes

Storybook v7.0 进入 Beta 阶段 — 这是近两年来这个流行的前端 UI 开发工具的第一个大版本更新(这里会有 Breaking Change)。有很多新功能,包括性能改进、交互测试等等。在此查看 完整的更改日志。您现在可以通过 迁移指南 尝试 Beta 版。

https://storybook.js.org/blog/7-0-beta

在 React Native 中对 TypeScript 进行头等支持 — 随着新发布的 v0.71,你会得到一个新的“默认是 TypeScript (TS)”的应用程序模板 —— TS 声明随基本包一起发布,文档现在也是 TypeScript 优先的(当然,Flow 或常规 JavaScript 仍然是可以使用的)。

https://reactnative.dev/blog/2023/01/03/typescript-first

在 Reddit 上,有一个关于 为什么人们喜欢使用 Next.js 的讨论。

https://www.reddit.com/r/reactjs/comments/zprham/why_do_people_like_using_nextjs/

⭐️ Next.js 刚刚在 GitHub 中 超过了 Create React App 的 Star 数,如果你喜欢这种受欢迎程度的测量方式。

https://twitter.com/i/web/status/1610165503468658689

3 个导致 App 崩溃的 React 错误 — 一位名为 Jack Herrington 的 React YouTuber 讲解了三个编写 React 时会犯的错误(以及如何解决它们)。

https://www.youtube.com/watch?v=QuLfCUh-iwI

在 TypeScript 中像专家一样处理错误 — “学习我用来处理错误和编写更简洁代码的设计模式。”

https://engineering.udacity.com/handling-errors-like-a-pro-in-typescript-d7a314ad4991?gi=c2ed84ad0ecd

📒 了解JS静态分析,打开前端优化新思路

📒 用代码画一只小兔子给大家拜年啦!

📒 记落地vite到项目中的遇到一个bug, 最终被vite官方merge pr

📒 聊聊Go与TLS 1.3

📒 Google 出品的 Rust 教程

https://github.com/google/comprehensive-rust

📒 你可能并不需要微前端

📒 UMI 微生成器调研

https://umijs.org/docs/guides/generator

https://github.com/umijs/umi/blob/master/packages/preset-umi/src/commands/generators/component.ts

📒 【面试高频题】难度 3.5/5,综合最短路的 DP 问题

🌟 我的信息流 2023.1

⭐️ Go 1.19.5、1.18.10 更新涉及 compiler, linker, net/http, sync/atomic

📒 面试问 Dockerfile 的优化, 千万不要只会说减少层数

📒 Go 服务网络不通?net/http自带的这个工具帮你快速定位

📒 面试官:net/http库知道吗?能说说优缺点吗

⭐️ 模块联邦在微前端架构中的实践

📒 【综合笔试题】难度 4.5/5,经典次短路问题

⭐️ 加大力度!Go 将会增强 Go1 向后兼容性

⭐️ 聊聊Prometheus Gauge的增减操作实现

📒 Git操作不规范,战友提刀来相见!「文末抽奖」

📒 前端食堂技术周刊第 66 期:2022 JS Rising Stars、Lightning CSS、年度最受欢迎文章

📒 写出易维护的代码|React开发的设计模式及原则

📒 MDH 前端周刊第 82 期:Lightning CSS、Tailwindcss、HTTPie AI、chalk-next 投毒

《Zustand vs. Signals》,作者从 DX、性能和 Devtool 三个方面了对比这两个「小众」的状态管理库,简单说就是,1)Zustand 生态和周边更好,而 Signals 性能更好和更自动,2)作者下一个大型项目的选择还是 Zustand,因为对 Signals 的实践以及用的 React 内部 API 不太方向。

https://medium.com/@kevinschaffter/zustand-vs-signals-e664bff2ce4a

Evan You 写了一篇 《2022 Year In Review》,介绍 2022 总结和 2023 规划。2022 主要是默认 Vue 3、Volar 1、Vue Npm 下载量 x2、回传 Vue 3 功能的 Vue 2.7;2023 则是细粒度 Mirror 版本、类 Solid 的 Vapor Mode 编译模式等。

https://blog.vuejs.org/posts/2022-year-in-review.html

《How to ship》 包含了 4 个关于产品如何准时发布的 Tips,1)明确 MAVP(最小实际可行产品)的边界,注意不是偏 DEMO 类的 MVP,2)在前者的基础上削减范围,3)搭配可灵活调整的 Deadline,4)别让自己成为团队卡点。

https://www.industrialempathy.com/posts/how-to-ship/

《React ref Callback Use–Cases》,你可能不知道 ref 除了是 object 以外,还可以是 function,即 ref callback。ref callback 有一些应用场景,比如 mount 时(新增一个 list item 时)做滚动或聚焦、计算 DOM 尺寸或滚动位置、传递 DOM 给多个消费者等。

https://julesblom.com/writing/ref-callback-use-cases

《A React Developer’s First Take on Solid》,一个 React 开发者对 Solid 的第一印象。1)Solid 的优点是小和快,2)同时也有一些由于引入 Proxy 以及 Solid 不同的组件渲染机制后的缺点,比如 prop 不能在函数参数里析构等,3)SolidStart 是一个测试软件,有大量粗糙的边界场景,4)会在真实项目中用吗?不会!

https://jakelazaroff.com/words/a-react-developers-first-take-on-solid/

《Getting started with SolidStart》,SolidStart 入门文章,手把手教你写一个旅行 App。注:SolidStart 是基于 Solid 的元框架。

https://blog.logrocket.com/getting-started-solidstart-solid-js-framework/

《JavaScript Rising Stars 2022》,一年一期,这是第 7 期,可以了解 2022 JavaScript 社区的变化,但是以 Github Star 为衡量标准,并不能完全代表其流行度。

https://risingstars.js.org/2022/zh

MDH 前端周刊第 82 期:Lightning CSS、Tailwindcss、HTTPie AI、chalk-next 投毒

📒 2022 年前端大事记

⭐️ Go1.20 新特性:context支持自定义取消原因

⭐️ Go学设计模式--装饰器和职责链,哪个模式实现中间件更科学

📒 平时的工作如何体现一个人的技术深度?

📒 【第2832期】V8 执行 JavaScript 的过程

⭐️ Golang 库: 为什么 Golang slog 库不支持 Fatal

⭐️ Golang 库: golang slog 怎么设置日志 Debug 等级

⭐️ Golang slog 介绍

⭐️ 一文读懂 Go Http Server 原理

⭐️ 「每周译Go」了解 Go 中的 defer

📒 Go语言爱好者周刊:第 173 期 — 这个并发库真心好

· 2 min read
加菲猫

· 11 min read
加菲猫

📒 相关文章推荐

一个关于 useEffect 的可视化指南 — 奇怪的是,最受欢迎的文章出现在 2022 年的第一期中。作者创建了一系列 React 渲染的可视化指南文章(比如关于 useMemo 和 props 的文章),在这篇文章中他把注意力转向了 useEffect。如果你想了解更多,还有一个关于 头等函数如何工作的可视化演示

https://alexsidorenko.com/blog/useeffect/

我们能承认 React Hooks 是个坏主意吗? — 第二受欢迎的项目是一个“快速链接”,但这个话题有足够的争议,让很多人谈论!Amy 认为“React Hooks 是个坏主意”。不管你喜不喜欢,你都会有自己的看法

https://medium.com/codex/can-we-all-just-admit-react-hooks-were-a-bad-idea-c48120c5188d

2022 React 库 — React 生态系统已经变得如此之大,问题更多的是选择太多,而不是没有需要的东西。如果您正在为一个新项目选择库,那么这个列表(Robin 多年来一直在更新)仍然很有用。希望我们能看到 2023 年的版本

https://www.robinwieruch.de/react-libraries/

回顾 2022 的 React 趋势 — 在今年年初,作者看了看他认为 2022 年重要的事情。他在 Remix、服务端渲染、并发渲染和行为测试方面做得很好,这些都是今年讨论最多的话题

https://www.chakshunyu.com/blog/what-you-should-definitely-look-out-for-in-react-in-2022/

Awesome React Components:一个精心整理的组件清单

https://github.com/brillout/awesome-react-components

React Render Tracker:发现有关意外重渲染的性能问题 — 这个工具可以显示组件树状态随时间变化的差异,这样您就可以更好地研究发生了什么

https://github.com/lahmatiy/react-render-tracker

Plasmo:“它就像浏览器扩展的 Next.js” — 一个面向 React 和 TypeScript 的框架,用于构建您自己的浏览器扩展

https://github.com/PlasmoHQ/plasmo

<ClickToComponent />:快速跳转到组件源代码

https://github.com/ericclemmons/click-to-component

要避免的 10 个 React 反模式 — 一个精心呈现的 8 分钟视频,快速介绍了各种替代的更优方法(或至少值得斟酌)

https://www.youtube.com/watch?v=b0IZo2Aho9Y

📒 Golang 相关文章

Go 1.18 新增三大功能之一“模糊测试”使用方式

Go 1.18 新增三大功能之一“泛型”怎么使用

Go 语言开源项目使用的函数选项模式

Go 语言 context 最佳实践

Go 语言 errgroup 库的使用方式和实现原理

Go 语言一次性定时器使用方式和实现原理

  • new:为变量分配存储空间,返回指针类型,一般不常用
  • make:为复合数据类型(slicemapchan)分配存储空间

在 Go 语言中,原生类型都有默认值,即类型的零值

  • 布尔型的零值:false
  • 整型的零值:0
  • 字符串类型的零值:""
  • 指针、函数、接口、Slice、Map、Channel 的零值:nil

需要注意的是,Go 语言类型的零值初始化是递归完成的,即 数组结构体 的每个元素都进行零值初始化。

在 Go 语言中,推荐定义零值可用的结构体,不仅对程序的安全性和正确性非常重要,它还可以无需预先显式初始化即可直接使用,使 Go 程序代码更优雅。

Go 语言为什么建议定义零值可用的结构体

总结一下,短变量声明在同一作用域内重复使用,只是重新赋值,不会重新创建变量(即指针还是同一个),但是如果在不同作用域(例如 if 语句块),就会创建一个新的变量(内存地址与之前不同)。

Go 语言怎么解决编译器错误“err is shadowed during return”

Go 语言怎么处理三方接口返回数据

Go 语言使用 goroutine 运行闭包的“坑”

Go 语言内存逃逸案例

Go 语言逃逸分析

Go 语言怎么使用变长参数函数

Go 语言错误处理为什么更推荐使用 pkg/errors 三方库

Go 项目使用 Makefile

Go 应用程序设计标准

Go 语言整洁架构实践

Go 语言怎么使用 Docker 部署项目

Golang 语言怎么打印结构体指针类型字段的值

Golang 语言怎么避免空指针引发的 panic

Golang 语言该用命名返回值吗

总结一下:

  • unsafe.Pointer 主要用来实现 指针类型转换,任意指针类型 *T 都可以转换为 unsafe.Pointerunsafe.Pointer 可以转换为任何类型的指针值 *T
  • uintptr 主要用来实现 指针运算,实际是数值类型,可以用于存储内存地址。将 unsafe.Pointer 转换为 uintptr,然后使用 uintptr 值进行算术运算,最后将运算结果 uintptr 值再转换为 unsafe.Pointer

Golang 语言中的非类型安全指针

显式类型转换:

// 整型变量省略类型,编译器根据字面量推导默认是 int
var a = 100
a := 100

// 如果需要声明指定类型的整型变量,也可用显式类型转换,例如:
var a = int8(100)
b := int8(60)

变量声明块:

var (
a int = 100
b int = 200
)

var (
c = 300
d = 3.14
f = true
)

var (
e, f, g int = 10, 20, 30
h, i, j string = "a", "b", "c"
)

Golang 语言的多种变量声明方式和使用场景

Golang 语言中的内置函数 make 和 new

深入理解 go reflect - 反射基本原理

go interface 设计与实现

go Context 设计与实现

深入理解 go unsafe

📒 天呐!我用 go 从零开始写了一个 k8s 应用管理工具(附完整代码和开发过程)

⭐️ 没想到在 Docker 容器中设置时区这么简单

📒 先聊聊「内存分配」,再聊聊Go的「逃逸分析」

📒 字节一面:服务端挂了,客户端的 TCP 连接还在吗

📒 详解全网最快Go泛型跳表【内附源码】

📒 2022年Go语言盘点:泛型落地,无趣很好,稳定为王

📒 【第2824期】图解浏览器的多进程渲染机制

📒 在 Docker build 环境持久化 node_modules 目录

想在 docker build 环境中持久化 node_modules 需要使用到 BuildKitmount 功能,该功能有几个前置条件:

  • docker 版本必须高于 18.09
  • BuildKit 需要手工启用,可在 docker build 命令前添加环境变量 DOCKER_BUILDKIT=1 启用
  • 如果前两个条件不满足,则需要具备 Jenkins 和构建机的读写权限,以调整构建环境参数
  • 修改 Dockerfile,使用 RUN --mount=type=cache 运行 npm installnpm run build 指令(--mount=type=cache

开启 BuildKit 还有其他特性,比如输出日志更友好,基本每一步都会输出耗时,就这一条,值了!

实际操作分为 2 步:

修改 Jenkins 配置,在 docker build 命令前加上环境变量。修改后镜像构建命令长这样:

$  DOCKER_BUILDKIT=1 docker build .

修改 Dockerfile,将 RUN npm installRUN npm run build 指令前面加上 RUN --mount=type=cache npm xxx

FROM node:alpine as builder

WORKDIR /app

COPY package.json /app/

RUN --mount=type=cache,target=/app/node_modules,id=my_app_npm_module,sharing=locked \
--mount=type=cache,target=/root/.npm,id=npm_cache \
npm i --registry=https://registry.npmmirror.com/

COPY src /app/src

RUN --mount=type=cache,target=/app/node_modules,id=my_app_npm_module,sharing=locked \
npm run build

参考:

加3行代码减少80%构建时间

Docker 从入门到实践 - 使用 BuildKit 构建镜像

https://docs.docker.com/build/buildkit/

📒 Monorepo 下 Git 工作流的最佳实践

📒 Prometheus 数据存储那些事儿

📒 Go1.20 一次打破 Go1 兼容性承诺的真实案例

📒 基于 GraphQL 的云音乐 BFF 建设实践

⭐️ 【第2823期】打包JavaScript库的现代化指南

⭐️ 通过分析gin、beego源码,读懂web框架对http请求处理流程的本质

📒 极端情况下Go的Map也会发生内存泄漏

📒 这两个特性将在 Go1.20 中被弃用,受影响最大的居然是国内的面试官

📒 Go:讲一个故事说明使用汇编语言的必要性

📒 Go学设计模式--怕把核心代码改乱,记得用代理模式

📒 Go语言中常见100问题-#25 Unexpected side effects using slice append