深入 Node.js 技术栈 学习笔记

date
Jul 9, 2023
slug
learn-nodejs
status
Published
tags
Node.js
summary
type
Post

exports 和 module.exports

  • 默认情况下,exportsmodule.exports 的引用
  • 直接对 exports 赋值会断开两者的关联
  • 下面两种用法的效果相同

path.join 和 path.resolve

join 简单的路径拼接 resolve 以 / 为根目录,若传入相对路径,会自动在前面加上当前目录形成绝对路径

webpack alias

为 import 和 export 创建别名

使用 npx 执行局部命令

全局安装webpack 5.1.3 项目安装webpack 3.6.0
webpack --version // 5.1.3
如何执行项目文件夹内的webpack?
npx webpack --version 原理:到当前目录的node_modules/.bin 查找对应命令

浏览器中的事件循环:事件队列、宏任务微任务

做题前先画个图
宏任务:ajax、setTimeout、setInterval、DOM监听、UI Rendering 微任务:Promise.then、Mutation Observer API、queueMicrotask()
async 和 await 如何处理?
将 await 执行的代码,看作包裹在 (resolve, reject) => {} 中的代码 将 await 后的下一条语句,看作 then(res => {}) 中的代码
执行顺序:script 优先,执行任何一个宏任务之前,先执行完微任务队列中的
notion image
notion image
两道面试题讲解:8.Buffer和浏览器的时间循环 2:26:28

Node 中的事件循环

  • Node 与浏览器的差异
notion image
notion image
宏任务:setTimeout、setInterval、IO事件、setImmediate、close事件 微任务:Promise.then、process.nextTick(单独的一个队列)、queueMicrotask
一次事件循环称为一次 tick
notion image
面试题讲解:1:00:13

项目开发习惯

路由与中间件

  • 目录结构
  • user.router.js 只负责注册接口
  • user.controller.js 编写具体的处理逻辑,可以编写类,new 一个来导出
  • user.service.js 中间操作太长,抽离出来
  • user.middleware.js 检查前置条件,类似 solidity 的 modifier

错误处理

  • 目录结构
  • 错误常量 error-types.js
假如前面的 verifyUser 报错:
  • error-handle.js
  • index.js;

密码处理

  • utils/password-handle.js
  • middleware/user.middleware.js

登录凭证

Cookie + Session (Deprecated)

JWT Token 前后端分离

 

© e 2021 - 2024 site logo