2020-10
每天给你推荐一个新奇,好玩,高品质的开源库,好文,观点或言论等。
项目主页维护当前月份的内容,想看往期内容,可以翻到下方历史汇总部分,然后选择自己感兴趣的月份点进去即可。

2020-10

2020-10-30[好文]

如何在 linux 记录用户的操作日志?这篇文章告诉你。

2020-10-29[框架]

fastify 是一个 nodejs 框架,和 express,koa 类似。使用起来区别也不大:
1
// Require the framework and instantiate it
2
const fastify = require("fastify")({
3
logger: true,
4
});
5
6
// Declare a route
7
fastify.get("/", (request, reply) => {
8
reply.send({ hello: "world" });
9
});
10
11
// Run the server!
12
fastify.listen(3000, (err, address) => {
13
if (err) throw err;
14
fastify.log.info(`server listening on ${address}`);
15
});
Copied!
如果你会 express 或者 koa, 那么学习 fastify 也会很快。
它的特点正如他的名字那样,速度快。快到不需要怎么优化就可以处理 76 k 的 qps。另外值得一提的是, 它有中文文档。

2020-10-28[框架]

我们知道, 虚拟 DOM 是一个简单的 JS 对象。用来表示真实 DOM 的。框架(典型的是 React 或者 Vue)会在运行时生成虚拟 DOM,并在应用状态更新的时候进行组件更新的时候进行 DOM diff,以使用最小的代价更新 DOM。这里涉及到一个树的最小编辑距离算法, 不过 React 做了一定的取舍,使得复杂度可以降低到线性。
这看起来不错, 以至于很长时间被认为是标配和主流,直到 Svelte 的出现,用他们自己的话来说就是 It's important to understand that virtual DOM isn't a feature. It's a means to an end。Svelte 是一个不算新的 UI 框架。 和 React, Vue 不同的是,其没有采用虚拟 DOM,而是编译时确定。 如果你还没有用过, 可以尝试一下。

2020-10-26[工具]

输入你的用户名,这个工具帮你全网搜索所有网站,哪些网站有这个用户名的用户。
使用效果:

2020-10-22[库]

Playwright 是由一群在谷歌开发 Puppeteer 的家伙跑路到微软开发的一个同类型但是功能更强大的工具,不仅支持 Chromium,还支持 Firefox 和 webkit。
什么?你问我为啥微软自己开发的却不支持 IE?难道你不知道微软已经放弃 IE 内核了,转向 Chromium 内核了么?
如果你需要用到无头浏览器做一些自动化的事情不妨考虑一下它。

2020-10-21[库]

一个可以在 Python 中执行 JS 的库,这个库在你做爬虫相关内容的时候很有用。
使用示例:
1
>>> import execjs
2
>>> execjs.eval("'red yellow blue'.split(' ')")
3
['red', 'yellow', 'blue']
4
>>> ctx = execjs.compile("""
5
... function add(x, y) {
6
... return x + y;
7
... }
8
... """)
9
>>> ctx.call("add", 1, 2)
10
3
Copied!
ta 底层用的是 PyV8 实现的,也就是一个封装 V8 引擎的 Python 容器。

2020-10-20[好文]

相信你在工作中一定用过堡垒机, 大中型公司都会有堡垒机。有的是自建,也有的是用的开源系统。它究竟是什么?做了什么事呢?
「系统架构」什么是堡垒机?为什么需要堡垒机? 是一个介绍堡垒机的科普文,看我你或许就有答案了。

2020-10-17[工具]

不知道你有没有碰到过这样的问题: 你同是开发多个项目,每个项目依赖的 node 和 npm 版本都不一样, 他们彼此不兼容。 你需要在切换项目前修改你的 node 和 npm 版本(当然也可能是其他包管理器,比如 yarn)。你可以使用 nvm 等工具来帮助你,同是在项目的 package.json 中定义一个 engineer 字段,用于指定项目依赖的 node 版本。
这虽然可以解决问题, 但是每次都切换也很浪费时间。 没有使用 volta 时,我的方式是开启多个 tty,每个 tty 的 node 版本不同, 当你切换项目使用对应的 tty 即可。
不过当你使用了 volta,一切会变得不同。volta 可以帮助你管理项目的引擎依赖, 支持 npm, yarn 等宝管理工具。 快来用 volata 管理你的项目包管理器吧。

2020-10-16[工具]

一个可以将 TypeScript 转换为 webassembly 的工具。这意味着你可以用 JS 写 webassembly,获得更好的性能。

2020-10-15[工具]

RSLint 是一个用 Rust 写的 lint 工具。 规则挺有意思的, 最关键的是性能好, 其比用 JS 写的 linter 快很多,比如 eslint。

2020-10-14[行业人物]

在一个圈子中混,怎么能不知道这个行业的领军人物呢? 今天给大家推荐的是 20 个前端领域的领军人物。
你关注了几个?

2020-10-13[好文]

我在 数据结构与算法在前端领域的应用 - 第三篇 中的重新思考我们的前端应用小节提到了假如流行的前端框架比如 React 内置了这种线程分离的功能,即将调和算法交给 WebWorker 来处理,会给前端带来怎么样的变化?。 这绝对不是异想天开,比如今天给大家分享的这一个文章的观点就很好地印证了这一点。

2020-10-12[资料]

vue3 出来了,大家都开始学了起来。这里有一份 vue3 学习资料的集合,或者可以帮助你。

2020-10-10[书籍]

给大家安利一本书现代操作系统(第 4 版),豆瓣评分 9.1。很多人推荐的一本书, 读完绝对有巨大的收获。
如果实在觉得读起来吃力,可以关注一下小林和 cxuan,这两个人对操作系统的理解还是蛮深刻的,文章通俗易懂。

2020-10-09[工具]

figlet.js 是一个用于生产 FIGfont 规范的一个 JS 库。效果图:

2020-10-08[工具]

我们平常使用 vue 或者 react 脚手架生产的项目的时候, 启动项目会自动打开浏览器, 你可以借助这款工具实现这个效果。
用法:
1
const open = require("open");
2
3
(async () => {
4
// Opens the image in the default image viewer and waits for the opened app to quit.
5
await open("unicorn.png", { wait: true });
6
console.log("The image viewer app quit");
7
8
// Opens the URL in the default browser.
9
await open("https://sindresorhus.com");
10
11
// Opens the URL in a specified browser.
12
await open("https://sindresorhus.com", { app: "firefox" });
13
14
// Specify app arguments.
15
await open("https://sindresorhus.com", {
16
app: ["google chrome", "--incognito"],
17
});
18
})();
Copied!

2020-10-08[教程]

一个 30 天免费学习的网站,适合基础薄弱的前端。

关注我

我重新整理了下自己的公众号,并且我还给它换了一个名字脑洞前端,它是一个帮助你打开大前端新世界大门的钥匙 🔑,在这里你可以听到新奇的观点,看到一些技术尝新,还会收到系统性总结和思考。
在这里我会尽量通过图的形式来阐述一些概念和逻辑,帮助大家快速理解,图解是我的目标。
之后我的文章会同步到微信公众号 脑洞前端 ,你可以关注获取最新的文章,并和我进行交流。
另外你可以回复大前端进大前端微信交流群, 回复 leetcode 拉你进 leetcode 微信群,如果想加入 qq 群,请回复 qq。
Last modified 10mo ago