「根据公司的需求学习 node.js,在需求中进行学习,时间充分,成长快,事半功倍。」
我们来看一看 nodejs 扮演的最重要的两个角色:
而对于前端,接触最多的便是基于 Node 的前端工具,比如 webpack、rollup、vite、eslint、prettier、create-react-app、create-vue 等。因此这里先说下「前端工具链」这部分。
而这部分,最容易在工作中获得需求,如「构建一个脚手架」,也容易作为自己的 KPI/OKR。通过此,可获得 node 关于 「文件系统」、「终端操作」 一系列知识。
如果业务中不需要构建一个脚手架,那也有诸多的场景需要写一个脚本,其中涉及最多的也是文件系统。
比如,在详细了解并完成一个脚手架后,你至少可以了解一个问题?
「如何判断文件是否存在?」
再往下看,你会发现有很多关于文件系统的第三方包,他们是做什么的?
mkdir -p
,你自己实现会如何实现,如何设计 API?(当然这个在 node 10+ 已经原生实现,不过你仍然可以看看源码的实现)
长按识别二维码查看原文
https://github.com/isaacs/node-mkdirp#readmefs-extra
,它又比原生的 fs
多了什么功能呢?
长按识别二维码查看原文
https://npm.devtool.tech/fs-extrafs.watch
监听文件变化呢,监听文件变化的底层操作系统原理又是什么呢?
长按识别二维码查看原文
https://npm.devtool.tech/fseventsfs
更加友好 (graceful)
长按识别二维码查看原文
https://npm.devtool.tech/graceful-fs继续深入,你会发现,一个东西叫 Glob,一个叫 Braces,它们又是啥?最后你发现,原来它们和语言无关,在终端就可以直接使用。
ls -lah *.js
{x,y,z}
{1..10}
{1..10..2}
好吧,假设这个大前提是,「我想要使用 Node 作为服务器端来使用,那我应该重点学习哪些重要模块?」
那最重要的一个就是:
http
非常重要但是不那么紧急的有:
stream
buffer
net
这几个模块十分重要,但是学习起来非常枯燥。可参照我的示例代码 node-native[6] 进行学习。
长按识别二维码查看原文 https://github.com/shfshanyue/node-examples/tree/master/node-native
最终也可以思考一个问题?
「我需要考虑多少边界条件才能正确读取到 Request Body 呢?」 可以参考 raw-body[7]
长按识别二维码查看原文 https://github.com/stream-utils/raw-body
还有一些细节可以实现下:
目前关于 node 的学习路线图还不太有,我粗略总结一下,过几天做一个路线图出来:
学习结束后可以根据面试进行系统训练:
参考资料
[1]
点击查看详情:https://juejin.cn/post/7072218345138831390/
[2]
mkdirp:https://github.com/isaacs/node-mkdirp#readme
[3]
fs-extra:https://npm.devtool.tech/fs-extra
[4]
fs-events:https://npm.devtool.tech/fsevents
[5]
graceful-fs:https://npm.devtool.tech/graceful-fs
[6]
node-native:https://github.com/shfshanyue/node-examples/tree/master/node-native
[7]
raw-body:https://github.com/stream-utils/raw-body
[8]
lru-cache:https://github.com/isaacs/node-lru-cache
[9]
tsdx:https://github.com/formium/tsdx
[10]
create-react-app:https://github.com/facebook/create-react-app
[11]
axios:https://github.com/axios/axios
[12]
koa:https://github.com/koajs/koa
[13]
body-parser:https://github.com/stream-utils/raw-body
[14]
next:https://github.com/vercel/next.js
[15]
ws:https://github.com/websockets/ws
[16]
apollo-server:https://github.com/apollographql/apollo-server
[17]
node:https://github.com/nodejs/node