javascript的Node.js是什么_如何用js编写服务器端代码?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,使 JS 能在服务器端运行;它非语言也非框架,而是提供 fs、http 等 API 的执行平台,核心为单线程+事件驱动+非阻塞 I/O,支持统一语言栈与庞大 npm 生态。

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它让 JavaScript 能在服务器端运行,而不仅限于浏览器。 它不是一门语言,也不是框架,而是一个能让 JS 脱离浏览器、直接操作文件、网络、进程等系统资源的执行平台。

为什么 JS 能在服务端跑了?

传统上 JS 只在浏览器里跑,靠浏览器提供的 API(比如 documentalert)工作。Node.js 把 JS 引擎(V8)单独拎出来,再配上自己实现的一套服务器级 API(如 fs 读写文件、http 创建服务器、path 处理路径),就构成了一个完整的后端运行环境。

它的核心特点是:

  • 单线程 + 事件驱动 + 非阻塞 I/O:适合高并发、I/O 密集型任务(比如处理大量用户请求、文件读写、数据库查询)
  • 统一语言栈:前后端都用 JS,减少上下文切换成本
  • 庞大的生态:npm 是全球最大的包管理器,几乎什么功能都有现成模块

写一个最简单的 HTTP 服务器

安装 Node.js 后(去 nodejs.org 下载安装),新建一个文件 server.js

const http = require('http');

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello from Node.js!');
});

server.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});

终端里执行:
node server.js
打开浏览器访问 http://localhost:3000,就能看到响应。

说明:

  • require('http') 是加载 Node 内置的 HTTP 模块
  • createServer 接收一个回调函数,每次有请求进来就会触发
  • res.end() 发送响应并结束这次请求
  • listen() 让服务器监听指定端口

更实用:用 Express 快速搭 Web 服务

原生 http 模块太底层,一般项目会用框架。Express 是最流行的轻量级 Web 框架:

先初始化项目:

mkdir myapp && cd myapp
npm init -y
npm install express

然后写 app.js

const express = require('express');
const app = express();

app.get('/', (req, res) => {
res.send('Welcome to Express!');
});

app.get('/api/users', (req, res) => {
res.json([{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]);
});

app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});

运行:
node app.js
现在访问 //api/users 就能拿到不同响应,支持路由、JSON 输出、中间件等常见功能。

关键点提醒

写服务端 JS 和写前端 JS 有几个重要区别:

  • 没有 windowdocumentlocalStorage —— 这些是浏览器专属
  • global(类似浏览器的 window)、__dirnameprocessrequire 等 Node 特有全局变量和 API
  • 模块系统用的是 CommonJS(require/module.exports),不是浏览器的 ES Module(虽然新版 Node 也支持 import
  • 文件操作、数据库连接、环境变量读取等都靠 Node 提供的模块完成

基本上就这些。不复杂但容易忽略——关键是理解 Node.js 是“让 JS 跑在服务器上的环境”,而不是 JS 本身变了。