Hello,大家好,我是 Sunday。
前两天有个同学问我说:“学到什么程度才是 node js 入门?”
图片
这个问题不是第一次听到了,之前也有问到过类似的问题。
其实所谓 Node 和 NodeJS 是不太一样的:
- Node:指的是一个运行环境。就像浏览器一样,是 js 代码执行的位置。我们下载的这个安装包,其实就是 node,也就是运行环境。
图片
- Nodejs:指的是在 node 环境中执行的 js 代码。只要你会 js,那么就 “天生入门”。
所以 对于前端来说,“NodeJS 天生入门”。
那么为什么所有的同学都会 NodeJS,但是却 不会使用 NodeJS 搭建后端项目呢?
其实原因主要有三点:
- 不熟悉 Nodejs 的 API
- 不熟悉 后端开发逻辑
- 不会使用 Nodejs 的框架
关于 node API
在前端的学习中,我们通常都需要学习 BOM 和 DOM 的概念。它们两个都是在浏览器中所独有的。
但是在 Node 环境下,它是有一套独有的 API 的
图片
如果想要使用 Node,那么就必须要了解这些 API 才可以。
关于后端开发逻辑
什么是后端开发逻辑呢?咱们举个例子:
比如在前端项目中,我们可能会经常使用 Vuex || Redux 来保存当前用户的状态。但是在服务端中,是 不可以 直接使用全局状态管理工具来保存用户状态的。
因为对于后端来说,不存在 当前用户的概念。后端会通过 会话机制 来管理用户状态,而不是像前端那样直接使用全局状态管理工具。
除此之外,还有 数据库操作、事务处理、并发处理 等等,这些操作在前端都是没有的。
所以,如果没有这些后端开发逻辑,那么想要完成对应的后端开发,就是天方夜谭了。
关于Node框架
不使用框架,仅使用 NodeJS 的原生 API(path模块、http模块 等),想要构建一个后端项目,肯定是非常困难的。(就好比现在让大家不使用任何框架,搭建一个前端项目一样)。
关于Node框架
所以说,想要使用 NodeJS 搭建自己的后端项目,那么除了要了解 JavaScript 之外,还需要掌握 NodeJS 框架的使用。
我在这里给大家构建了一个表格,描述了目前最火的 5 个 NodeJS 框架的特点,以供大家参考:
框架 | 主要特征 | 优点 | 缺点 |
Express.js:最老牌 | – 简约、灵活、高度定制 – 中间件支持 – 强大的路由 – 与模板引擎和数据库兼容 | – 易于学习和使用 – 丰富的文档和社区支持 – 高度可定制 | – 与更具主见的框架相比,缺乏内置功能 – 在较大的应用程序中,中间件管理可能变得复杂 |
koa.js:和 Express 是一家 | – Async/await 实现更好的控制流 – 轻量级和模块化 – 增强上下文处理 | – 代码更清晰,可读性更强 – 更好地控制请求/响应处理 – 鼓励模块化架构 | – 与 Express.js 相比,社区规模较小 – 常见任务需要更多手动设置 |
NestJS:最强大,大型应用必备 | – 模块化架构 – 完全支持 TypeScript – 内置依赖注入 – 支持微服务和 GraphQL | – 强大的 TypeScript 支持 – 结构良好、可扩展的应用程序 – 丰富的内置功能和模块 | – 学习难度较高,尤其是对于 TypeScript 新手来说 – 对于简单的项目来说可能有点过度 |
Fastify:不直观 | – 高性能,低开销 – 基于 JSON Schema 的验证和序列化 – 强大的插件架构 | – 速度极快且轻量 – 内置验证和序列化 – 高度注重性能 | – 与 Express.js 相比,生态系统较小 – 对于习惯于传统框架的开发人员来说,直观性较差 |
Hapi.js:以配置为中心 | – 以配置为中心 – 全面的插件系统 – 强大的安全功能和输入验证 | – 高度可配置性和可扩展性 – 高度注重安全性和输入验证 – 大量插件和内置功能 | – 更复杂的配置设置 – 与 Express.js 相比,学习曲线更陡峭 |