MelonBlog

聊聊node.js

为什么学node

今年写了不少js/ts,比后端还多(实际上对于创业,或者做产品,前端能力非常重要,能不能把idea落地很大的难点在于能不能把客户端做出来),写js/ts过程中多多少少用了好多node的特性和语法。特别是最近大量用next.js写应用,next.js号称可以做到全栈。实际使用之后, 确实可以全栈,挺有意思的一个框架,除了部署的时候需要跑一个node进程之外,其他的和之前开发前端项目差不多,后端的业务逻辑也可以直接集成在next.js项目里。


写后端业务的时候,就要使用node的能力了, 比如提供接口和调用数据库。express框架 + mongo 集成到node里,就相当于一个后端应用了,拥有api路由 和 数据持久化能力,写常规的crud项目不在话下。


所以我最近把node系统的学了一下,学完之后我发现node其实和其他的后端差不多,express + mongoose 的能力很像java的 springboot + mybatis 和 golang的 gin + gorm 还有python的 flask + sqlalchemy,当然细节上肯定是有很多差异,但是业务能力其实是大部分是重叠的。

我会用node做什么

node能够做什么?这个问题从我觉得每个人的需求不一样所以得到的答案也不一样,换个说法,我未来会用node来做什么?

基于node的优势,未来碰到下面几个场景,我都会用node来做:

1.需要快速开发,用户量不大,核心是为了展示某些信息
2.工具型应用,后端主要是存储一些用户的状态,非io密集型的场景
3.如果一个业务要分很多子系统,偏前端的部分可以直接用node来对接其他子系统
4.需要seo优化的应用,如果内容是需要放在服务端渲染,那么node非常适合这个场景
5.不想额外的购买服务器

服务端渲染

像博客、个人网站或者企业或者产品官网这类项目,都需要ssr,好多年前,前后端都没分离的情况下,其实不存在这种问题,因为页面都是通过后端模版来渲染的, 比如之前经典的jsp项目,jsp都是服务端把数据都渲染到页面模板里然后把渲染好的页面返回给浏览器,所以是天然的ssr。

后面前后端分离了,很多内容都是ajax请求之后在客户端渲染的,这样不利于搜索引擎来构建索引,所以现在像next这种框架都是通过node的能力把jsx在服务端渲染完成之后再传给服务端,对搜索引擎是友好的。

中间层是node发挥的一个领域

对于大一点的团队里,分工一般都很垂直,比如我之前呆过的一家头部在线旅游公司,从小程序到服务端分了好几层,除了客户端和最终数据落表的层(我们叫后端),其他的层,我们都叫中间层,中间层可以不止一层,我们之前就有c#中间层、java中间层,我离开的时候,部门还在规划node中间层。

使用node做服务端能节省服务器

vercel是免费提供给大家部署项目的,可以直接部署next.js应用,所以如果一个项目全部用next实现,那么这个应用可以非常方便打包部署(一键)。