news 2026/7/21 9:49:12

Node.js 入门核心基础知识笔记(新手详解版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Node.js 入门核心基础知识笔记(新手详解版)

很多零基础同学学 Node.js 的第一个误区,就是上来就啃框架、学全栈项目,结果连代码运行报错都找不到原因。这份笔记完全按照「新手认知规律」排序,每一节都先讲「是什么、为什么要学、不学踩什么坑」,再讲核心知识点和避坑指南,完全不用死记硬背,跟着走就能跑通第一个 Node 程序,完成入门闭环。

Node.js 入门三层核心问题解答

一,目标与定位 —— 明确「为什么学 Node.js」

1. 课程目标

本门 Node.js 零基础入门课,核心目标是帮学习者建立 Node.js 完整的基础认知体系,掌握入门必备的核心开发能力,能独立完成基础后端服务开发、自动化脚本编写,同时理解前端工程化的底层逻辑

  • 课程侧重点:不深入算法实现、底层编译原理,核心聚焦「JavaScript 基础语法落地 + Node 核心 API 使用 + 模块化与工程化入门 + Web 后端基础开发能力」
  • 适配场景:为 Web 全栈开发、前端工程化基建、自动化脚本工具开发三大核心应用场景做入门铺垫,学完可无缝衔接 Express/Koa 等框架进阶学习。

2. 语言核心定位

表格

核心维度精准定位
运行类型基于 Chrome V8 引擎的JavaScript 解释型运行时(带 JIT 即时编译优化),无需预编译,代码写完即可直接运行
核心应用领域Web 后端服务开发、前端工程化基建(webpack/vite 等)、自动化脚本工具、跨端桌面应用(Electron)、微服务开发、IoT 设备编程
设计哲学事件驱动、异步非阻塞 IO,以最小的硬件开销处理高并发 IO 请求;同时实现前后端统一 JavaScript 语言栈,大幅降低全栈开发的学习与协作成本
核心优势轻量高效、高并发 IO 处理能力强、前后端同语言、拥有全球最大的开源包生态 npm

二,核心特征 —— 抓住「Node.js 是什么」

1. 核心范式与语法风格

  • 编程范式:多范式兼容,完全继承 JavaScript 特性,同时支持面向对象、函数式、过程式编程,无强制范式约束,开发灵活度极高。
  • 语法风格:和浏览器端 JavaScript 完全一致,弱类型、简洁灵活、无强制编译步骤,对前端开发者零语法学习成本。
  • 与主流语言的核心区别:

    表格

    对比语言核心差异
    Java/C#(强类型编译型)无需提前声明类型、无需预编译,开发效率更高;前后端同语言,无技术栈切换成本
    Python(脚本语言)核心采用异步非阻塞事件模型,高并发 IO 场景(接口请求、批量文件处理)性能优势显著,更适配 Web 服务开发
    浏览器 JavaScript移除了 DOM/BOM 网页操作 API,新增系统级 API(文件、网络、进程),拥有本地系统的完全操作权限

2. 核心抽象机制

  • 代码组织的基本单元:模块化(默认 CommonJS 规范,兼容 ES Module),以单个 JS 文件为最小模块单元,通过require/import导入、module.exports/export导出,实现代码的拆分、复用与隔离;其次以函数、对象 / 类作为业务逻辑的封装单元。
  • 核心数据结构:
    1. 完全兼容 JavaScript 原生结构:数组、对象、Map、Set、字符串、数值等;
    2. Node 专属核心结构:Buffer(二进制数据处理)、Stream(流式数据处理)、EventEmitter(事件发布订阅)。

3. 独特的「王牌特性」(入门必吃透的 2 个核心)

  1. 异步非阻塞的事件驱动 IO 模型这是 Node.js 的灵魂与核心竞争力。所有 IO 操作(文件读写、网络请求、数据库操作)均为异步执行,不会阻塞主线程,单线程即可轻松处理上万并发请求,无需像传统后端语言为每个请求新建线程,硬件开销极低,特别适配 IO 密集型的 Web 服务开发。
  2. 前后端统一 JavaScript 全栈语言栈这是 Node.js 不可替代的核心优势。前端开发者无需学习新的编程语言,即可无缝切换到后端开发;前后端可共享代码、类型定义、工具库,大幅降低全栈开发的学习成本与团队协作成本,同时依托 npm 全球最大的 JS 开源生态,可直接复用海量成熟的工具与框架。

三,学习路径与资源 —— 规划「怎么学 Node.js」

1. 如何建立「最小可运行」环境(3 步零基础落地)

  1. 安装核心程序:访问 Node.js 官方中文网,下载LTS 长期支持版本(稳定无坑,不建议下载 Current 最新版),Windows/Mac 均为一键安装,默认选项即可(安装包自动配置环境变量,自带 npm 包管理工具)。
  2. 验证安装成功:打开终端(Windows 用 CMD/PowerShell,Mac 用终端),分别输入node -vnpm -v,回车后正常输出版本号,即为安装成功。
  3. 完成最小运行闭环:新建空白文件夹,在里面新建hello.js文件,写入代码console.log("Hello Node.js! 我的第一个Node程序运行成功");打开终端 cd 到该文件夹,执行node hello.js,终端成功打印对应内容,即完成最小可运行环境搭建。

2. 最高效的实践路径(边学边敲,以练促学)

学习阶段核心学习内容必做实操练习阶段达标标准
前置准备JS 基础语法、ES6 + 异步核心(Promise/async-await)、基础命令行操作JS 基础逻辑 demo、熟练使用 cd 等命令、跑通 Hello World能看懂基础 JS 代码,能通过命令行正常运行 Node 文件
核心认知Node.js 核心定义、与浏览器 JS 的区别、两种运行方式、高频全局对象全局对象使用 demo、交互模式测试代码能清晰区分 Node 与浏览器 JS 的边界,无调用 DOM API 的低级错误
核心基础CommonJS 模块化规范、三大核心内置模块(path/fs/http)模块导入导出 demo、文件读写脚本、搭建可访问的 HTTP 服务能独立完成文件读写,能搭建返回自定义内容的 HTTP 服务,无路径报错
工程化入门npm 核心命令、package.json 配置、依赖管理、自定义脚本初始化 npm 项目、安装第三方包、配置启动脚本、写批量文件处理工具能熟练用 npm 管理项目依赖,能通过 npm run 命令启动服务
异步核心闭环异步编程规范、async/await 标准写法、错误处理机制用 async/await 重写文件读写、开发带错误捕获的异步接口能写出规范的异步代码,正确处理异步错误,无回调地狱问题
入门验收综合运用所有知识点完成完整入门项目开发简易后端接口服务,实现多路由数据返回、静态文件访问独立完成项目开发,服务正常运行无报错,完成入门闭环

核心实践原则:拒绝只看文档 / 视频不动手,每学一个知识点,必须亲手敲代码运行验证,用最小 demo 吃透每一个核心特性,所有报错必须亲手解决,这是零基础入门的唯一捷径。

3. 官方权威资源(最高效、最准确的信息源)

  1. Node.js 官方中文文档:https://nodejs.cn/ ,零基础入门首选,包含完整的入门指南、API 参考、最佳实践,全中文无门槛,是最权威的中文学习资源。
  2. Node.js 官方英文文档:https://nodejs.org/ ,一手官方资源,包含最新的特性更新、语言规范、完整 API 文档,适合进阶学习与查阅最新内容。
  3. npm 官方文档:https://docs.npmjs.com/ ,包管理工具的权威指南,包含 npm 全命令用法、package.json 配置详解、依赖管理最佳实践。
  4. Node.js 官方 GitHub 仓库:https://github.com/nodejs/node ,可查看 Node.js 源码、了解迭代规划,仓库内的文档与示例也是最权威的学习材料。

Node.js 知识学习

一、前置必备知识(入门前提,不学根本推进不下去)

Node.js 是 JavaScript 的运行时,说白了就是「让 JS 能脱离浏览器跑在电脑 / 服务器上的工具」,所以 JS 语法是底层根基;而 Node 所有的运行、安装、服务启动都要靠命令行操作,这两项是绕不开的入门门槛,不用精通,够用就行

1. JavaScript 基础语法(入门够用标准,不用啃进阶内容)

必学核心内容

  • 基础语法:变量定义、函数声明与调用、数组 / 对象的基础操作、if 条件判断、for/forEach 循环
  • ES6+ 核心:箭头函数、解构赋值、Promiseasync/await(Node 异步编程的核心,必须会基础用法)

【新手讲解 & 避坑】

  • 为什么不用学原型链、闭包、继承这些进阶内容?入门阶段你只需要写基础的业务逻辑,这些进阶内容完全用不上,先把 Node 核心跑通,等入门后再回头补,完全不影响学习进度,很多新手卡在 JS 进阶内容上,直接放弃了 Node 学习,完全没必要。
  • 最低标准:你能写一个函数,处理数组里的数据,会用 Promise 处理异步,就算达标。

2. 命令行基础(终端 / CMD,必会的核心命令)

必学通用命令

表格

命令作用对应系统命令核心说明
切换目录cd 文件夹名全平台通用,Node 开发最高频命令
查看当前目录内容ls(Mac/Linux) /dir(Windows)查看当前文件夹里的所有文件 / 子文件夹
运行 Node 脚本文件node xxx.jsNode 核心执行命令,全平台通用
进入 Node 交互模式node临时测试代码用,输入后回车即可进入
退出交互模式 / 终止程序两次ctrl+cctrl+d全平台通用

【新手讲解 & 避坑】

  • 新手灵魂拷问:我用鼠标点文件夹不行吗?为什么非要用命令行?答:Node 程序是跑在终端里的,你用鼠标点文件夹,只是能看到文件,但是没法告诉 Node「去运行这个文件、去安装这个包、去启动这个服务」,这些操作只能靠命令行完成,这几个命令是你 Node 开发的「吃饭家伙」,必须练熟。
  • 【90% 新手第一天必踩的坑】运行node xxx.js报错「找不到模块 xxx.js」100% 是因为你没有 cd 到这个 js 文件所在的文件夹!举个例子:你的demo.js文件放在D盘/node-demo文件夹里,正确操作是:
    1. Windows 打开 CMD,先输入D:回车,切换到 D 盘
    2. 再输入cd node-demo回车,进入 js 文件所在的文件夹
    3. 最后输入node demo.js回车,才能正常运行
  • 补充小技巧:文件夹名字有空格,要用引号包起来,比如cd "我的 node 项目"

二、Node.js 核心认知(先搞懂「是什么」,建立正确认知)

很多新手学了很久,都没搞懂「我写的 JS 和浏览器里的 JS 有什么区别?为什么 Node 能做后端?」,这一节先把底层逻辑讲透,避免越学越懵。

1. Node.js 核心定义

大白话翻译:Node.js 是基于 Chrome V8 引擎的JavaScript 运行环境

  • 浏览器里的 V8 引擎,负责解析执行网页里的 JS 代码;
  • Node.js 把 V8 引擎单独拿了出来,给它加了系统级的权限(读写文件、开网络服务、管理进程等),让 JS 能脱离浏览器,直接跑在你的电脑本地、或者服务器上。
  • 核心用途:后端接口开发、自动化脚本工具、前端工程化脚手架、桌面应用开发等。

2. 浏览器 JS vs Node.js 核心区别(新手必记)

表格

特性浏览器 JSNode.js
运行环境浏览器本地设备 / 服务器
权限 & 独有 APIDOM、BOM(只能操作网页)文件系统、网络、进程等系统级 API
顶层全局对象windowglobal/globalThis
核心用途前端页面交互、用户行为处理后端服务、脚本工具、工程化脚手架

【新手讲解 & 避坑】

  • 最核心的区别:权限不同!浏览器为了用户安全,给 JS 的权限极低,绝对不允许 JS 操作你电脑的本地文件(不然你打开一个恶意网页,它就能把你电脑文件删光);而 Node 是跑在你自己的电脑 / 服务器上的,给了 JS 完全的系统权限,所以 JS 才能当后端语言用,读写文件、操作数据库、搭建网络服务。
  • 【新手高频报错坑】在 Node 里写window.alert()window.document直接报错记住:Node 里没有浏览器的window对象,也没有 DOM、BOM,所有浏览器里操作网页的 API,在 Node 里都不能用!反过来,Node 里的fshttp模块,在浏览器里也不能用。

3. Node.js 两种运行方式

1. 脚本文件运行(开发主流方式)

操作步骤:新建一个demo.js文件,写好代码 → 打开终端,cd 到文件所在文件夹 → 执行node demo.js运行代码。

2. 交互模式运行(仅临时测试用)

操作步骤:打开终端,直接输入node回车,就进入了交互环境,直接输入 JS 代码,回车就能立刻看到执行结果,用完按两次ctrl+c退出。

【新手讲解】

  • 正经开发永远用「脚本文件运行」,代码可以保存、修改、复用;
  • 交互模式只适合临时测试,比如你想试试1+2*3等于几,或者试一个数组方法怎么用,不用新建文件,直接敲代码测试就行。

三、Node.js 高频全局对象(无需引入,直接使用)

全局对象,就是你不用写require导入,在任何 Node 代码里都能直接用的对象,以下是开发最高频的几个,不用死记硬背,写代码多用几次就记住了

  1. console:日志打印

    • 用法和浏览器里的console完全一致,最常用console.log(),用来调试代码、打印变量值、查看程序运行结果。
    • 【新手技巧】代码运行结果不对,先在关键位置加console.log打印变量,看值是不是符合预期,这是最基础的调试方法。
  2. __dirname:【重中之重】当前文件所在的绝对目录路径

    • 【新手必懂】这是解决 Node 路径报错的终极方案,90% 的新手文件读取报错,都是因为没用这个变量!
    • 举个例子:你的a.js文件放在D:/node-demo/test/a.js里,那么__dirname的值,永远是D:/node-demo/test,和你在哪里执行node命令无关。
  3. __filename:当前文件的完整绝对路径

    • 上面的例子里,__filename的值就是D:/node-demo/test/a.js,包含文件名本身,开发中用的比__dirname少。
  4. process:进程对象

    • 大白话:管当前正在运行的这个 Node 程序的对象,能获取程序运行的系统信息、命令行参数、环境变量,也能控制程序退出。
    • 入门必用示例:

      js

      // 查看当前程序运行的系统(Windows/Mac/Linux) console.log(process.platform); // 获取系统环境变量(后面开发/生产环境区分会高频用) console.log(process.env); // 直接退出当前Node程序 process.exit();

【新手避坑终极提醒】

绝对不要手写相对路径./test.txt!新手最常见的错误:在a.js里写fs.readFile('./test.txt'),明明test.txta.js放在同一个文件夹里,却报错「找不到文件」。

  • 原因:./相对路径,是相对于你执行 node 命令的终端所在的文件夹,不是相对于a.js所在的文件夹!
  • 正确写法:永远用path.join(__dirname, 'test.txt')来拼接路径,不管你在哪里执行 node 命令,永远能精准找到文件,后面 path 模块会详细讲。

四、CommonJS 模块化系统(Node 核心,所有项目的基础)

这是 Node.js 的灵魂,所有 Node 项目都是基于模块化开发的,必须吃透。

1. 先搞懂:为什么要有模块化?

新手灵魂拷问:我把所有代码都写在一个app.js文件里不行吗?

  • 当然可以,但是当你的项目代码超过 1000 行,你找一个功能要翻半天,改一个地方怕影响其他代码,完全没法维护;
  • 模块化,就是把你的代码,按照功能拆成一个个独立的小文件(比如user.js管用户相关逻辑,file.js管文件操作),每个文件只负责一个功能,代码好维护、好复用;
  • 更重要的是,别人写好的成熟模块,你直接导入就能用,不用自己从零开始写轮子,大大提升开发效率。

2. CommonJS 核心语法规则

Node.js 默认使用 CommonJS 模块化规范,核心就两个语法:

  • 模块导出:module.exports = 你要导出的内容
  • 模块导入:const 变量名 = require('模块标识')

3. 模块三大分类(新手必记导入规则)

表格

模块类型说明正确导入方式新手高频错误
核心模块Node.js 内置自带,无需下载require('fs')直接写模块名不用加路径,加了反而报错
文件模块你自己写的 JS 文件require('./a.js')必须写相对 / 绝对路径忘记加./,导致 Node 找不到文件
第三方模块通过 npm 下载的外部包require('express')直接写包名没提前 npm 安装,就直接导入

4. 极简入门示例(逐行讲解)

js

// 1. 新建 a.js 文件:导出模块内容 // 把要给别人用的内容,挂在module.exports上 module.exports = { name: "Node.js入门", // 导出一个方法 sayHello: () => { console.log("Hello 新手同学!"); } }

js

// 2. 新建 b.js 文件:导入并使用a.js的内容 // 用require导入a.js,相对路径必须加./,拿到a.js导出的对象 const moduleA = require('./a.js'); // 直接使用a.js里导出的属性和方法 console.log(moduleA.name); // 打印:Node.js入门 moduleA.sayHello(); // 执行方法,打印:Hello 新手同学!

【新手讲解 & 避坑】

  1. 【必记规则】导入自己写的文件模块,路径必须加./!如果你写require('a.js'),Node 不会去当前文件夹找 a.js,只会去内置核心模块、node_modules 文件夹里找,100% 报错找不到。
  2. 入门阶段,只用module.exports,别用exports!很多教程会讲exports,新手很容易踩坑,比如exports = {name:1}是完全无效的,而module.exports = {name:1}永远不会错,等你入门后再去研究两者的区别,完全不影响开发。
  3. 模块的代码只会执行一次:多次导入同一个模块,只会在第一次导入的时候执行代码,后面都会复用导出的结果,不会重复执行。

五、入门必学 4 大内置模块(Node.js 入门灵魂)

Node.js 内置了上百个开箱即用的模块,但是入门阶段,你只需要吃透这 4 个高频核心模块,就能覆盖 80% 的基础开发场景,不用贪多学其他的。

1. path 模块(路径处理)

核心用途

解决跨平台路径兼容问题,永远不要手动拼接路径!

  • Windows 系统的路径用反斜杠\,Mac/Linux 系统用正斜杠/,你手动拼接的路径,换个系统就可能报错;
  • path 模块会自动根据你当前的系统,生成正确的路径,搭配__dirname使用,永远不会出现路径找不到的问题。

高频方法 & 入门示例

js

// 第一步:导入path模块(核心模块,直接写模块名导入) const path = require('path'); // 1. path.join():拼接路径,开发最高频用法 // 拼接当前文件所在目录 + test.txt,生成全平台兼容的绝对路径 const filePath = path.join(__dirname, 'test.txt'); console.log(filePath); // 会自动根据系统生成正确的路径 // 2. path.resolve():生成绝对路径,效果和join类似,入门会一个就行 const absolutePath = path.resolve('test.txt');

【新手讲解】

记住一个固定写法:只要你要写文件路径,就用path.join(__dirname, '你的文件名/文件夹名'),这是 Node 开发的行业标准写法,能帮你避开 90% 的路径报错问题。

2. fs 模块(文件系统)

核心用途

大白话:让你的 JS 能操作你电脑里的文件和文件夹,比如读取文件内容、写入文件、新建文件夹、删除文件,这是后端开发最基础的能力。

入门必学:异步读取文件(逐行讲解)

js

// 导入fs模块 const fs = require('fs'); // 异步读取文件:fs.readFile(文件路径, 编码格式, 回调函数) fs.readFile(path.join(__dirname, 'test.txt'), 'utf8', (err, data) => { // Node.js 规范:回调函数第一个参数,永远是错误对象(错误优先回调) if(err) { // 如果读取失败,打印错误,终止执行 return console.log('文件读取失败:', err); } // 读取成功,打印文件内容 console.log('文件内容:', data); });

【新手讲解 & 避坑】

  1. 为什么要加utf8编码格式?不加的话,readFile 返回的是 Buffer 二进制数据,你看不懂,加了utf8,才会返回我们能看懂的文本内容。
  2. 为什么要用异步?Node.js 是异步非阻塞模型,同步读取文件会卡住整个程序,只有等文件读取完,才能执行后面的代码;而异步读取不会卡住,文件读取的同时,后面的代码正常执行,等读取完成后,再执行回调函数里的内容,这是 Node 的核心优势。
  3. 入门阶段,先掌握读和写,其他的删除、文件夹操作,等你熟练了再学,完全够用。

3. http 模块(服务搭建)

核心用途

这是 Node.js 能做后端开发的核心!它能让你的电脑变成一台服务器,接收浏览器的请求,给浏览器返回数据,实现后端接口、网站服务的开发。

入门必写:Hello World 服务(逐行讲解)

js

// 导入http模块 const http = require('http'); // 1. 创建服务器 // 回调函数:每次有客户端(浏览器)访问这个服务,就会执行一次 // req:请求对象,包含客户端的所有信息(访问地址、请求方法、参数等) // res:响应对象,用来给客户端返回内容 const server = http.createServer((req, res) => { // 【新手必加】设置响应头,解决浏览器中文乱码问题 res.setHeader('Content-Type', 'text/plain;charset=utf-8'); // 给客户端返回内容,并结束本次响应 res.end('Hello Node.js!新手入门成功啦!'); }); // 2. 监听端口,启动服务 // 3000是端口号,回调函数是服务启动成功后执行的内容 server.listen(3000, () => { console.log('服务已启动,访问地址:http://localhost:3000'); });

【新手讲解 & 操作步骤】

  1. 把上面的代码写在server.js文件里,cd 到文件所在文件夹,执行node server.js启动服务;
  2. 打开浏览器,输入http://localhost:3000,就能看到你写的内容,你的第一个后端服务就跑通了!
  3. 【新手高频坑】
    • 端口占用报错:如果启动报错「端口已被占用」,要么关掉之前启动的 Node 服务,要么把 3000 改成其他端口(比如 8080、8000),重新启动就行;
    • 中文乱码:必须加res.setHeader那一行代码,不然浏览器里的中文会变成乱码;
    • 修改代码后,必须重启服务才能生效!改完代码,先按ctrl+c关掉之前的服务,再重新执行node server.js,不然浏览器看不到修改后的内容。

4. url 模块(网址解析)

核心用途

解析客户端请求的 URL 地址,提取接口路径、请求参数,比如用户访问http://localhost:3000/user?name=张三&age=20,你要用 url 模块,拿到nameage的参数,才能处理对应的业务逻辑,后端接口开发高频使用。


六、npm 包管理工具(Node.js 开发必备)

可以说,没有 npm,Node.js 开发寸步难行,入门必须掌握核心用法。

1. 先搞懂:npm 是什么?为什么要用?

大白话翻译:

  • npm 是 Node.js 自带的包管理工具,装 Node 的时候就自动装好了,不用额外安装;
  • npm 有一个全球最大的 JS 代码仓库,全世界的开发者,把自己写的成熟的 Node 代码包(比如接口开发框架 express、数据库操作包 mysql)都上传到这个仓库里;
  • 你不用自己从零写轮子,比如你要写后端接口,不用自己用 http 模块磨底层逻辑,直接 npm 下载 express 包,几行代码就能搞定,大大提升开发效率;
  • npm 帮你管理所有的第三方包:下载、更新、卸载、版本控制,全靠它。

2. 核心高频命令(新手必会)

表格

命令作用完整命令简写 / 补充说明
项目初始化npm initnpm init -y一键生成默认配置,不用一步步回车确认
本地安装第三方包npm install 包名简写npm i 包名,安装到当前项目,业务依赖用
全局安装第三方包npm install 包名 -g简写npm i 包名 -g,工具类包(比如脚手架)用
卸载包npm uninstall 包名简写npm un 包名,全局卸载加-g
安装项目所有依赖npm install简写npm i,有 package.json 就能一键安装所有依赖
运行项目脚本npm run 脚本名执行 package.json 里 scripts 配置的自定义命令

3. 核心文件 / 文件夹讲解(新手必懂)

  1. package.json:项目的核心配置文件,你的项目「身份证」

    • 记录项目名称、版本号、作者信息;
    • 记录项目依赖的所有第三方包,以及版本号;
    • 配置自定义脚本命令,比如启动服务、打包项目的命令;
    • 【重要】别人拿到你的项目,只要有这个文件,执行npm i就能安装所有依赖,不用给对方传几百兆的 node_modules 文件夹。
  2. node_modules:第三方依赖包的存放文件夹

    • 你 npm 安装的所有包,都存在这里,npm 自动生成、自动管理,你不用手动修改里面的内容;
    • 【新手避坑】这个文件夹可以随便删,只要有 package.json,执行npm i就能重新生成;git 上传项目的时候,绝对不要上传这个文件夹,又大又慢,只需要传 package.json 就行。
  3. package-lock.json:依赖版本锁定文件

    • 自动生成的,用来锁定你安装的包的精确版本号,保证团队所有人、所有环境安装的依赖版本完全一致,不会出现「我电脑上能跑,你电脑上跑不了」的问题,不要手动修改。

【新手讲解 & 实操示例】

  1. 新建一个项目文件夹,cd 进去,执行npm init -y,生成 package.json 文件;
  2. 执行npm i express,安装 express 框架,你会发现自动生成了 node_modules 文件夹和 package-lock.json,package.json 里多了 dependencies 依赖项;
  3. 在 package.json 的 scripts 里,加一行"start": "node server.js",然后执行npm run start,就能启动你的服务,不用每次都敲长命令。

七、Node.js 异步编程(核心难点,必学必会)

这是 Node.js 入门最难的一个知识点,但是只要你理解了底层逻辑,就会发现非常简单,我们用大白话讲透,不用记晦涩的术语。

1. 先搞懂:什么是同步?什么是异步?

举个生活里的例子,你一下就懂了:

  • 同步:你去奶茶店排队点单,前面的人没做好,你就一直站在柜台等着,啥也干不了,直到你的奶茶做好,你才能走。代码里就是:一行代码没执行完,下一行代码永远等着,整个程序会卡住。
  • 异步:你去奶茶店点单,付了钱拿了号,就找个位置坐着刷手机,不用在柜台等着,奶茶做好了会叫号,你再去拿。代码里就是:异步操作(读文件、网络请求)发起后,不用等着它完成,先执行后面的代码,等异步操作有结果了,再回来处理,程序永远不会卡住。

Node.js 所有的 IO 操作(文件读写、网络请求、数据库操作)都是异步的,这也是 Node 能高性能处理高并发请求的核心原因。

2. 异步编程的发展历程(按学习优先级排序)

  1. 回调函数:异步基础,Node.js 默认的异步方案,但是多层嵌套会出现「回调地狱」,代码很难维护;
  2. Promise:为了解决回调地狱,把嵌套的回调,改成了.then().then()的链式调用,代码扁平化,好维护了很多;
  3. async/await:现代 JS 异步编程的标准写法,也是入门最终要掌握的写法,能把异步代码写的像同步代码一样,从上到下执行,好读、好写、好维护。

3. 现代标准写法:async/await 入门示例(逐行讲解)

js

// 导入promise版本的fs模块,支持async/await,不用写回调函数 const fs = require('fs/promises'); const path = require('path'); // 1. 用async关键字,声明这是一个异步函数,只有async函数里,才能用await async function readFileTest() { // 2. 用try/catch捕获异步操作的错误,相当于回调函数里的err参数 try { // 3. await关键字,放在异步操作前面,会等着异步操作完成,拿到结果再往下执行 const data = await fs.readFile(path.join(__dirname, 'test.txt'), 'utf8'); // 上面的读取完成,才会执行这一行 console.log('文件读取成功:', data); } catch (err) { // 如果异步操作出错,会直接进到catch里,不会让程序崩溃 console.log('操作失败:', err); } } // 执行异步函数 readFileTest();

【新手讲解 & 避坑】

  1. 【90% 新手必踩的坑】await 必须写在 async 函数里!如果你直接在代码的最顶层写await fs.readFile(),会直接报错,必须把 await 放在带 async 关键字的函数里,这是硬性语法规则。
  2. 为什么要用fs/promises?普通的fs模块是回调函数版本的,不支持 await,fs/promises是 Node 官方提供的 Promise 版本的 fs 模块,直接支持 async/await,不用自己封装。
  3. 必须加 try/catch 捕获错误!异步操作很容易出错(比如文件不存在),如果不捕获错误,整个 Node 程序会直接崩溃,这是开发规范,必须养成习惯。
  4. 入门阶段,你只要会用 async/await 写异步代码,就算达标,回调和 Promise 理解原理就行,实际开发优先用 async/await。

八、入门必备开发常识(新手避坑指南)

  1. 错误处理规范

    • 回调函数:永远遵循「错误优先」原则,第一个参数是错误对象,必须先判断 err 是否存在;
    • async/await:永远用try/catch捕获异步错误,不要让程序直接崩溃。
  2. 环境变量区分开发 / 生产环境process.env读取环境变量,区分开发环境(你自己写代码的电脑)和生产环境(上线的服务器),比如开发环境用本地数据库,生产环境用线上数据库,不用每次上线改代码,安全又方便。

  3. 端口占用问题解决启动服务报错端口被占用,最简单的办法就是换个端口号;也可以用命令找到占用端口的进程,关掉它:

    • Windows:netstat -ano | findstr "3000"找到进程 PID,去任务管理器关掉;
    • Mac/Linux:lsof -i:3000找到进程 PID,执行kill -9 PID关掉。

九、Node.js 最简入门学习路径(零基础按步骤走,不跳步)

很多新手学不会 Node,都是因为跳步,上来就学框架、做项目,结果基础不牢,报错了都找不到原因,按这个步骤一步步来,每一步达标再往下走,零基础也能顺利入门:

  1. 补齐 JS 基础语法 + 命令行基础,能熟练 cd 到指定文件夹,运行 node 命令不报错;
  2. 安装 Node.js 环境,写第一个 hello world 脚本,成功运行,打印出内容;
  3. 吃透 CommonJS 模块化规范,能熟练实现模块的导入导出,不报错;
  4. 掌握path/fs/http三大核心模块,能成功读取文件、启动一个后端服务,浏览器能正常访问;
  5. 熟练使用 npm 初始化项目、安装第三方包、配置并运行自定义脚本;
  6. 掌握async/await异步编程标准写法,能用同步的写法写异步代码,正确处理错误;
  7. 独立用 http 模块,写一个简单的后端接口,能根据不同的请求地址,返回不同的内容,完成入门闭环
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 9:47:06

数据结构--二叉树

一、树 1.1 树的定义 树是一种非线性的数据结构,它是由有限的集合组成具有层次的集合。 是有一个特殊的节点:根节点(该节点之前在也没有节点)。 树是递归定义的。 树是由根和子树构成。 注意:树形结构中,子…

作者头像 李华
网站建设 2026/7/21 9:44:09

D3keyHelper暗黑3自动化辅助工具:终极技能连点器完整使用教程

D3keyHelper暗黑3自动化辅助工具:终极技能连点器完整使用教程 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3keyHelper是一款专为《暗…

作者头像 李华
网站建设 2026/7/21 9:41:30

Claude Code与Codex本质区别:MCP协议驱动的AI编程工作流

1. 这不是两个工具的对比,而是两种编程范式的分水岭你点开这篇指南,大概率是因为在终端里敲下codex --help后看到一串报错,或者在 VS Code 扩展市场里反复刷新“Claude Code”却始终加载不出安装按钮。更可能的情况是:你刚在某技术…

作者头像 李华
网站建设 2026/7/21 9:40:47

健康档案管理系统

健康档案管理系统选题背景 健康档案管理系统作为现代医疗信息化的重要组成部分,其选题背景涉及多个层面的需求与挑战。随着人口老龄化加剧、慢性病发病率上升以及医疗卫生服务需求多样化,传统纸质档案管理模式已无法满足高效、精准的医疗数据管理需求。纸…

作者头像 李华
网站建设 2026/7/21 9:39:46

Umi-OCR完全指南:3分钟掌握离线文字识别技巧

Umi-OCR完全指南:3分钟掌握离线文字识别技巧 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。 项…

作者头像 李华
网站建设 2026/7/21 9:39:45

48路无纸记录仪:工业数据采集与并行处理技术解析

1. 48路无纸记录仪:工业数据采集的"全能选手" 在工业自动化领域,数据记录仪就像产线的"黑匣子",而48路无纸记录仪则是这个领域的重型装备。我第一次接触这类设备是在某化工厂的DCS系统改造项目中——当时需要同时监测反应…

作者头像 李华