JavaScript
了解 Promise.withResolvers()
Promise.withResolvers() 是一个更加优雅的创建 Promise 的新方法,目前处于 stage 4。
回想一下,如果我们将一个基于回调的同步函数改造为异步函数 需要怎么写。
const somethingSync = () => {
return new Promise((resolve, reject) => {
somethingCallBack((err, val) => {
if (err) {
reject(err)
return
}
resolve(val)
})
})
}
使用 Promise.withResolvers() 之后可以更加的简便。
const somethingSync = () => {
const { promise, resolve, reject } = Promise.withResolvers();
somethingCallBack((err, val) => {
if (err) {
reject(err)
return
}
resolve(val)
})
return promise
}
他的实现也很简单:
function promiseWithResolvers() {
let resolve;
let reject;
const promise = new Promise(
(res, rej) => {
// Executed synchronously!
resolve = res;
reject = rej;
});
return {promise, resolve, reject};
}
State Of JS 2023
State of js 2023 终于出炉了,JS 的发展速度依旧没有减缓,做第一个吃螃蟹的人,不停学习新技术,走在新技术最前沿。
优化超长的布尔值判断
我们业务代码经常会碰到 if ((a || b) && (c || d) && e) 类似这样的值判断。我们如何考虑优化它,使得可维护性提高。
如何编写带有多个参数的 JS 函数
这其实是一片函数式编程的技巧,将多个参数函数拆分成单一参数的函数,利用组合(compose)、柯里化(curring)等等技巧优化函数,并可以在自定义 hook 场景中应用。还提供了一些 utility functions 帮助上述的实现。
这种复杂函数式编程很令人着迷。
React
React 内存泄漏:useCallback 和闭包如何对你造成影响
当我们使用 useCallback + 闭包 + 大对象,有可能会导致内存泄漏。文章详细的讲述了闭包产生的过程。
当然我们也可以通过一些方式去避免它。
JS Runtime
Nodejs 2024 LTS 版本流行的 10 个功能
介绍了 test 模块、mock 模块、测试覆盖率、watch 模式、corepack、env 加载、import.meta.file、timers promise、权限模块、策略模块 10 个现代的功能。现代的 nodejs 可以不再需要使用 jest、nodeman 等等库,原生就支持这些功能。
其他
理解 Docker 镜像分层
这是一个非常浅显易懂的讲解镜像分层是如何实现的,通过分层,我们可以利用缓存加快构建速度。
开发人员必须了解的关于 Unicode 的最低限度知识
对于以前的开发者来说,不知道使用什么编码的情况下使用字符串是可能出现问题的,而在现在,几乎可以确定的是在用 UTF-8,这是一篇入门 Unicode、深入了解 UTF-8 的好文章。