一文详解NodeJS和Javascript之间有什么区别

 更新时间:2025年11月17日 09:02:37   作者:风茫  
在前端和后端开发的技术栈中,JavaScript 和 Node.js 经常是新手和经验丰富的开发者讨论的热门话题,这篇文章主要介绍了NodeJS和Javascript之间有什么区别的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

这是一个非常经典且重要的问题!Node.js 和 JavaScript 的关系不是“对立”或“并列”,而是“运行环境”与“语言”的关系。下面从多个维度清晰解释它们的区别与联系。

一、一句话总结

JavaScript 是一门编程语言,Node.js 是一个能让 JavaScript 在服务器端运行的运行时环境(Runtime)。

  • 浏览器中的 JavaScript → 用于操作网页(DOM、动画、交互)
  • Node.js 中的 JavaScript → 用于开发后端服务(API、数据库、文件系统等)

二、详细对比

维度JavaScriptNode.js
本质编程语言(ECMAScript 标准)JavaScript 的运行时环境(基于 V8 引擎)
运行位置浏览器(Chrome、Firefox 等)服务器 / 本地计算机(脱离浏览器)
核心能力操作 DOM、处理用户事件、AJAX 请求读写文件、访问数据库、启动 HTTP 服务器、操作系统资源
全局对象windowdocumentnavigatorglobalprocess__dirnamemodule
模块系统ES Modules (import/export) 或 <script> 标签CommonJS (require/module.exports) + 支持 ES Modules
I/O 模型异步(但受限于浏览器 API)事件驱动 + 非阻塞 I/O(核心优势)
典型用途网页交互、前端框架(Vue/React)后端 API、微服务、脚本工具、实时应用

三、关键区别详解

1.运行环境不同

  • JavaScript 最初设计用于浏览器,只能操作网页元素。
    // 浏览器中有效
    document.getElementById('btn').click();
    alert('Hello');
    
  • Node.js 让 JS 脱离浏览器,可以:
    // Node.js 中有效(浏览器中会报错!)
    const fs = require('fs');
    fs.readFileSync('data.txt');
    

2.没有 DOM / BOM

  • Node.js 没有 window、document、localStorage 等浏览器对象
  • 你不能在 Node.js 中写:
    // 在 Node.js 中会报错:document is not defined
    document.querySelector('h1');
    

3.拥有系统级 API

Node.js 提供了浏览器没有的能力:

// 读写文件
const fs = require('fs');
fs.writeFileSync('log.txt', 'Hello Server');

// 启动 HTTP 服务器
const http = require('http');
http.createServer((req, res) => {
  res.end('Hello from Node.js!');
}).listen(3000);

4.模块系统差异

  • 浏览器:原生支持 ES Modules(import/export
    <script type="module">
      import { foo } from './utils.js';
    </script>
    
  • Node.js(传统):使用 CommonJS
    // 导入
    const express = require('express');
    // 导出
    module.exports = { hello: 'world' };
    
  • 现代 Node.js(v14+):也支持 ES Modules(需 .mjs 后缀或 package.json 中设 "type": "module"

四、它们的关系图

                ┌───────────────────┐
                │   JavaScript      │ ← 编程语言(ECMAScript)
                └─────────┬─────────┘
                          │
        ┌─────────────────┼─────────────────┐
        ▼                 ▼                 ▼
┌─────────────┐   ┌──────────────┐   ┌──────────────┐
│   浏览器     │   │   Node.js    │   │  Deno / Bun  │
│ (Chrome等)   │   │ (服务器环境) │   │ (新运行时)   │
└─────────────┘   └──────────────┘   └──────────────┘

所以:Node.js 是 JavaScript 的“宿主环境”之一,就像浏览器一样。

五、举个实际例子

假设你要开发一个“用户注册”功能:

前端(浏览器中的 JavaScript)

// 发送注册请求
fetch('/api/register', {
  method: 'POST',
  body: JSON.stringify({ email: 'user@example.com' })
});

后端(Node.js 中的 JavaScript)

// 接收请求,保存到数据库
const express = require('express');
const app = express();

app.post('/api/register', (req, res) => {
  // 1. 验证数据
  // 2. 连接数据库
  // 3. 保存用户
  // 4. 返回结果
  res.json({ success: true });
});

💡 前后端都用 JavaScript,但运行环境和能力完全不同!

常见误区澄清

误区正确理解
“Node.js 是一种新语言”Node.js 不是语言,是运行时
“学了前端 JS 就会 Node.js”语法相同,但 API 和思维模式不同(需学 Node 特有模块)
“Node.js 可以替代浏览器 JS”两者用途不同,通常配合使用(全栈开发)

总结

JavaScriptNode.js
是什么编程语言JS 运行时
在哪跑浏览器服务器/本地
能做什么操作网页操作文件、网络、系统
是否依赖对方不依赖依赖 JS 语言

掌握这个区别,是迈向 全栈开发 牛马的第一步!

到此这篇关于NodeJS和Javascript之间有什么区别的文章就介绍到这了,更多相关NodeJS和Js之间区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • node中间层实现文件上传功能

    node中间层实现文件上传功能

    这篇文章主要介绍了node中间层实现文件上传功能,本文给大家介绍的非常详细,需要的朋友可以参考下
    2018-06-06
  • 详解Node使用Puppeteer完成一次复杂的爬虫

    详解Node使用Puppeteer完成一次复杂的爬虫

    这篇文章主要介绍了详解Node使用Puppeteer完成一次复杂的爬虫,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • node.js利用express自动搭建项目的全过程

    node.js利用express自动搭建项目的全过程

    这篇文章主要给大家介绍了关于node.js利用express自动搭建项目的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Node.js工具库yeoman使用介绍

    Node.js工具库yeoman使用介绍

    这篇文章主要为大家介绍了Node.js工具库yeoman的使用介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • node.js中的fs.chmodSync方法使用说明

    node.js中的fs.chmodSync方法使用说明

    这篇文章主要介绍了node.js中的fs.chmodSync方法使用说明,本文介绍了fs.chmodSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • nvm无法安装低版本nodejs解决方案

    nvm无法安装低版本nodejs解决方案

    因nvm升级后无法安装低版本Node.js,下面这篇文章主要给大家介绍了关于nvm无法安装低版本nodejs的解决方案,关键步骤包括卸载旧版nvm、下载低版本安装包及配置环境变量,需要的朋友可以参考下
    2025-05-05
  • koa中间件核心(koa-compose)源码解读分析

    koa中间件核心(koa-compose)源码解读分析

    这篇文章主要介绍了koa中间件核心(koa-compose)源码解读分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 使用puppeteer破解极验的滑动验证码

    使用puppeteer破解极验的滑动验证码

    这篇文章主要介绍了利用puppeteer破解极验的滑动验证功能,基本流程代码实现给大家介绍的非常详细,需要的朋友可以参考下
    2018-02-02
  • Nest.js参数校验和自定义返回数据格式详解

    Nest.js参数校验和自定义返回数据格式详解

    这篇文章主要给大家介绍了关于Nest.js参数校验和自定义返回数据格式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Nodejs实现获取实时数据的三种主流方式详解

    Nodejs实现获取实时数据的三种主流方式详解

    这篇文章主要为大家详细介绍了Nodejs前端获取实时数据的三种主流方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02

最新评论