1. Node.js入门:从零开始认识这个神奇的工具

大家好,我是你们的老朋友。今天咱们聊聊Node.js——这个让JavaScript跑在服务器上的家伙。

说实话,我第一次接触Node.js时,心里也犯嘀咕:JavaScript不是只能在浏览器里玩吗?怎么还能搞后端?后来我才明白,这玩意儿彻底改变了前端开发者的命运。

1.1 Node.js是什么?

Node.js,说白了就是一个JavaScript运行环境。它基于Chrome的V8引擎,让JavaScript能脱离浏览器,直接在服务器上运行。

我习惯把它比作「JavaScript的超级外挂」。原本只能在网页里写写交互的JS,现在能读写文件、操作数据库、搭建Web服务器。是不是很神奇?

核心要点:Node.js不是一门新语言,而是一个运行时环境。它让JavaScript从「前端小工」变成了「全栈能手」。

1.2 为什么选择Node.js?

你可能会问:市面上有Python、Java、PHP这么多选择,为什么偏要学Node.js?

我当年选Node.js,其实是被逼的。公司要做一个实时聊天系统,用Java搞了半天,性能就是上不去。后来换成Node.js,同样的功能,代码量少了三分之二,性能还翻倍了。

来,我列几个硬核理由:

  • 非阻塞I/O:Node.js处理高并发时,不会像传统服务器那样「一个请求卡死一片」。它用事件驱动的方式,同时处理成千上万个连接。
  • 单线程但高效:你想想看,一个线程就能搞定的事,何必搞那么多线程?Node.js用异步回调,避免了多线程的锁和上下文切换开销。
  • 前后端统一语言:前端用JavaScript,后端也用JavaScript。一个人就能搞定全栈开发,省去了切换语言的痛苦。
  • npm生态:全球最大的包管理器,超过200万个包。你想要的功能,基本都能找到现成的。

我的建议:如果你要做实时应用(聊天、游戏、协作工具)、API服务、或者微服务架构,Node.js绝对是首选。

1.3 Node.js发展史

讲历史之前,我先问个问题:你知道Node.js是谁发明的吗?

2009年,一个叫Ryan Dahl的哥们儿,觉得传统的Web服务器太笨重了。他想:能不能用JavaScript写一个轻量级的服务器?于是,Node.js诞生了。

我记得当时Node.js刚出来时,很多人嘲笑它:「JavaScript写后端?开什么玩笑!」结果呢?

年份 里程碑事件
2009 Ryan Dahl发布Node.js第一个版本
2010 npm包管理器诞生,生态开始爆发
2011 Windows版本发布,不再局限于Linux
2015 Node.js基金会成立,进入标准化时代
2018 引入ES模块支持,告别CommonJS独霸时代
2023 Node.js 20发布,性能大幅提升

嗯,这里要注意:Node.js的发展并非一帆风顺。2014年还发生过一次「分裂事件」,部分核心开发者另起炉灶搞了io.js。不过后来大家又和好了,合并成了现在的Node.js。

1.4 Node.js应用场景

学了Node.js能干啥?我结合自己的项目经验,给你说说:

  • Web API服务:用Express或Koa框架,几分钟就能搭一个RESTful API。我做过一个电商后台,全部用Node.js写的,扛住了双十一的流量。
  • 实时应用:聊天室、在线协作、游戏服务器。Node.js的事件驱动特性,天生适合做这个。
  • 命令行工具:Webpack、Gulp、Vue CLI这些工具,都是用Node.js写的。你也能写自己的CLI工具。
  • 微服务架构:Node.js轻量、启动快,非常适合做微服务。我现在的项目就是几十个Node.js微服务在跑。
  • 物联网(IoT):Node.js能跑在树莓派上,处理传感器数据。

避坑指南:我曾经用Node.js做过一个CPU密集型的图片处理服务,结果性能惨不忍睹。记住:Node.js适合I/O密集型任务,不适合CPU密集型任务(比如视频编码、大量计算)。

1.5 Node.js开发环境搭建

好了,理论说完了,咱们动手吧。搭建环境其实很简单,我分别说说Windows、Mac和Linux的做法。

Windows环境搭建

  1. 打开浏览器,访问 https://nodejs.org
  2. 下载LTS版本(长期支持版,稳定可靠)
  3. 双击安装包,一路「Next」就行
  4. 安装完成后,打开命令提示符,输入 node -v 验证
C:\Users\YourName> node -v
v20.11.0

C:\Users\YourName> npm -v
10.2.4

我个人习惯用nvm-windows来管理多个Node.js版本。这样可以在不同项目间切换版本,非常方便。

Mac环境搭建

Mac用户有福了,用Homebrew安装最省事:

# 安装Homebrew(如果没有的话)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装Node.js
brew install node

# 验证安装
node -v
npm -v

或者你也可以用nvm(Node Version Manager):

# 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

# 安装最新LTS版本
nvm install --lts

# 使用该版本
nvm use --lts

Linux环境搭建

以Ubuntu为例:

# 更新包列表
sudo apt update

# 安装Node.js
sudo apt install nodejs npm

# 验证
node -v
npm -v

如果你想要最新版本,建议用NodeSource的源:

# 添加NodeSource源
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

# 安装
sudo apt install -y nodejs

我的建议:不管用什么系统,都推荐用nvm管理Node.js版本。我曾经因为版本不一致,在开发环境跑得好好的代码,部署到服务器就报错。用nvm后,再也没出过这种问题。

验证安装是否成功

环境搭好了,写个简单的程序试试:

// hello.js
console.log("Hello, Node.js!");
console.log("当前Node.js版本:", process.version);
console.log("当前平台:", process.platform);

运行它:

node hello.js

如果看到输出,恭喜你,Node.js环境搭建成功!

总结一下:Node.js让JavaScript走出了浏览器,成为了全栈开发者的利器。它的非阻塞I/O、事件驱动特性,让它在高并发场景下表现出色。环境搭建也很简单,跟着上面的步骤走,十分钟就能搞定。

下一章,咱们会深入学习Node.js的模块系统。到时候见!