2020-08
Last updated
Last updated
每天给你推荐一个新奇,好玩,高品质的开源库,好文,观点或言论等。
项目主页维护当前月份的内容,想看往期内容,可以翻到下方历史汇总部分,然后选择自己感兴趣的月份点进去即可。
原文标题:《Under the hood of React’s hooks system》,这是一个讲 React Hook 的底层实现原理的文章,能够帮你更好的理解 hooks,写出更好的 hooks 代码。
比如 React 对各种 effect 做了位的标识,用于简化判断,文章也进行了讲解。以及 useState 实际上调用的就是 useReducer 等。
原文链接:https://medium.com/the-guild/under-the-hood-of-reacts-hooks-system-eb59638c9dba
有时候大家会碰到网页不能复制(比如禁止转载)的情况,我们可以使用开发者工具来解决。而这个有点复杂。
这里推荐一个插件 Simple Allow Copy,只需轻轻一点即可随意复制网页内容。插件地址: https://chrome.google.com/webstore/detail/simple-allow-copy/aefehdhdciieocakfobpaaolhipkcpgc
没有科学的同学可以去我的公众号《力扣加加》 回复 Allow Copy 即可获取。
另外我打算之后再这里维护科学资料, 需要的自取 https://github.com/azl397985856/cdn/blob/master/README.md
这是一个讲 V8 内部实现原理的深度好文,主要讲了 V8 在对象访问方面做的优化,比如用到了 shape, IC(inline cache) 等,并且难得的是有大量图片,内容也层层递进,即使你没有基础也可以听懂一部分。
文章地址: https://mathiasbynens.be/notes/shapes-ics
我们可以将 TypeScript 编译成 JavaScript,我们也可以将 JavaScript + .d.ts 反编译成 TypeScript。 于是我一直思考, 有没有一种方法能够不依赖 .d.ts 直接将 JavaScript 转换为 TypeScript 项目呢? 我觉得是可行的。 我们要做的无非就是动态类型推导,即根据值的分布情况(有可能值的分布满足正太分布?^_^)推导变量的类型。 实际上这是个理想的情况。
不过八天前 Airbnb 发布的一个仓库 ts-migrate 则和我的想法类似,大家可以关注一下。
仓库主页:https://github.com/airbnb/ts-migrate
相关文章: https://medium.com/airbnb-engineering/ts-migrate-a-tool-for-migrating-to-typescript-at-scale-cd23bfeb5cc
你或许已经熟悉了 ESM 了,那 importmap 呢?
如上代码什么意思?如果你还不知道,可以看下这个文章。还是一如既往的循序渐进的风格, 很适合新手阅读。
文章地址:https://blog.logrocket.com/es-modules-in-browsers-with-import-maps/
我们知道 deno 是基于 ESM 的,并且没有统一的包管理平台的。那如果你在使用 deno,并且想要用 npm 上的包怎么办?如果你想要用的 node 上的包是 ESM 格式的,可以通过一些 CDN 工具,比如 unpkg,比如:
如果源码是 ESM,但是最终被编译成了别的模块语法。你可以直接用 URL 引用源码,比如:
而如果源码也是 commonjs 写的,那么你可以使用这个在线服务,可以帮助你无感知转换格式。使用方法:
工具地址: https://jspm.org/
手把手教你自建图床。
文章地址: https://sspai.com/post/61624
除了使用 OSS+ CDN 的方式,我们也可以选择白嫖 Github。使用全免费方案:用 github 做图床,jsDelivr 做 cdn 加速。在 GitHub 上开一个 public 的仓库,然后把图片传上去,访问的时候用 https://cdn.jsdelivr.net/gh/<user_name>/>repo_name>/<file_name> 来访问就行。
这个是个将 Git Workflow 的文章,特点是讲解了多种 workflow 方式,包括主干式,feature 分支式等,并每一种都给了非常好看的配图。
文章地址:https://zepel.io/blog/5-git-workflows-to-improve-development/
想学 Go 却不想装环境?或者装了环境,不想每次都新建文件,然后执行?这个在线 Go 执行网站或许可以帮到你。
地址:https://play.studygolang.com/
Tooling.Report 是一个帮助你从多个维度分析 web 打包工具的平台,包括 browserify,parcel,rollup,webpack。这个网站给的比较非常的直观,测试用例(每个比较维度都有很多测试用例)也很多。
地址:https://bundlers.tooling.report/
一个适合 JavaScript 程序员看的 Rust 系列教程,目前更新了三篇。
地址: http://www.sheshbabu.com/posts/rust-for-javascript-developers-functions-and-control-flow/
alinode 技术负责人开发的一个 高度模仿 alinode 的开源产品。和 alinode 的定位一样,也是企业级 Node.js 应用性能监控与线上故障定位解决方案。
Github 地址: https://github.com/hyj1991/easy-monitor
如果你需要给被人发一个消息,为了安全,你可以选择加密解密,也可以选择阅后即焚,这个工具就是做这个事情的。 不过这确实是一个尝鲜属性大于实用属性的一个工具。
地址:https://pasteme.cn/
bubblewrap 是 GoogleChromeLab 在 Google web 大会上推出的一个 CLI 工具,帮助开发者一键将 PWA 应用转化为可以上架的安卓应用,前提是你需要安卓他们的标准开发。
Github 地址: https://github.com/GoogleChromeLabs/bubblewrap
esbuild 是一个 JavaScript 和 TypeScript 打包和压缩器,采用 Go 语言编写,以速度快著称。著名的打包工具 snowpack 和 vite 底层就是用的它。
(esbuild 和 主流打包器的速度对比)
项目地址:https://github.com/evanw/esbuild
我们平时做单元测试都会将请求给 mock 掉,这本身没有问题,但是 mock 请求做的太简单的话会起不到测试的效果。比如,我请求 body 少传递一个属性, 单元测试是不会报错的,但是我们的想法肯定是能够检测到这种潜在的问题,报错给我们。这篇文章详细介绍了如何解决这个问题。
文章地址:https://kentcdodds.com/blog/stop-mocking-fetch
我重新整理了下自己的公众号,并且我还给它换了一个名字脑洞前端
,它是一个帮助你打开大前端新世界大门的钥匙 🔑,在这里你可以听到新奇的观点,看到一些技术尝新,还会收到系统性总结和思考。
在这里我会尽量通过图的形式来阐述一些概念和逻辑,帮助大家快速理解,图解是我的目标。
之后我的文章会同步到微信公众号 脑洞前端
,你可以关注获取最新的文章,并和我进行交流。
另外你可以回复大前端进大前端微信交流群, 回复 leetcode 拉你进 leetcode 微信群,如果想加入 qq 群,请回复 qq。