2022-01

每天给你推荐一个新奇,好玩,高品质的开源库,好文,观点或言论等。
项目主页维护当前月份的内容,想看往期内容,可以翻到下方历史汇总部分,然后选择自己感兴趣的月份点进去即可。
一个制作非常精美,我个人非常喜欢的画风的网站。内容是关于 mono repo 工具的。
如果你还不知道什么是 mono repo,或者对 mono repo 管理工具感兴趣,那么请一定花一点时间看看这个文章。
我个人还是很推荐大家尝试一下 nx 的,看了下文章的对比更加加深了我的想法。
地址:https://monorepo.tools
有人不知道 NFT 是什么。
其实我也不是很了解,但是 NFT 有一个重要作用值得大家注意。 NFT 将原本网络中很容易实现的复制功能,变得可识别。
比如用户 A 创作了一段代码,然后用户 B 可以将其复制。作为用户 C 很难知道 A 的代码是复制品还是 B 的代码是复制品。而如果 A 将代码发布到了 NFT,那么 C 就可以很容易知道 B 的代码是复制品。这也是为啥一些 NFT 作品被拍出了天价的重要原因。
前端经常碰到跨域安全问题。之前我的解决方式是通过本地代理(node 或 nginx 等服务)解决。
基本思路就是给请求响应头增加大概如下内容:
Access-Control-Allow-Origin: https://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
Access-Control-Max-Age: 86400
后来我使用了更方便的工具: 浏览器扩展。刚开始的时候用的是一个专门给请求加跨域头的插件。后来发现有些头不会加上,比如 access-control-expose-headers 。
因此一个通用的给请求增加头信息的插件就有必要了。于是我选择了
requestly

美中不足是每个规则只能免费改一个头。不过好消息是你可以新建多个规则,每个规则改一个头就可以白嫖了。
地址:https://app.requestly.io
Web 上传文件,我们可以使用 input 标签 + form 表单来做。而现在更多是使用 js + formData 实现。
参考代码:
const formData = new FormData();
const file = new File([buffer], filename);
formData.append("file", file, filename);
这样会更加自由,我们可以控制上传的文件内容。 接下来, 浏览器会给我们添加
multipart/form-data
以及 WebKitFormBoundary
等,这样文件就可以上传了。如果是在 Node 端,FormData 是不存在的。因此前面提到的
multipart/form-data
以及 WebKitFormBoundary
等 都需要自己来完成了。这样有点麻烦,不过大家可以使用 form-data 来完成。如果是浏览器,form-data 会使用浏览器原生的 FormData,否则会自己实现一个“几乎等价” 的 FormData。Tauri 是一个让用户使用 JS 开发跨平台桌面程序的类库,核心是 Rust 写的(如今 web 基础工具很多都是 Rust 写的),是大名鼎鼎的 Electron 的竞品。