一文详解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之间区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Puppet的一些技巧

    Puppet的一些技巧

    puppet这个工具真的很神奇,先不说商业版有哪些黑科技,单是开源版本就有很多可能让你摸不着头脑的地方,下面来列举一下puppet是怎么查找puppet server的
    2018-09-09
  • Node.js数据库操作之查询MySQL数据库(二)

    Node.js数据库操作之查询MySQL数据库(二)

    这篇文章主要介绍了Node.js数据库操作之查询MySQL数据库的相关资料,文中介绍的非常详细,对大家学习或者使用mysql能带来一定的帮助,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • Node.js包管理工具

    Node.js包管理工具

    本文主要详细介绍了node包管理工具,主要介绍了npm,cnpm及yarn,文中有详细的代码示例,对学习具有一定参考价值,需要的朋友可以参考一下
    2023-04-04
  • 用Node编写RESTful API接口的示例代码

    用Node编写RESTful API接口的示例代码

    本篇文章主要介绍了用Node编写RESTful API接口的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • node.js 和HTML5开发本地桌面应用程序

    node.js 和HTML5开发本地桌面应用程序

    这篇文章主要介绍了node.js 和HTML5开发本地桌面应用程序的相关资料,需要的朋友可以参考下
    2016-12-12
  • NodeJs测试框架Mocha的安装与使用

    NodeJs测试框架Mocha的安装与使用

    本文全面介绍如何使用Mocha,让你轻松上手。如果你以前对测试一无所知,本文也可以当作JavaScript单元测试入门。
    2017-03-03
  • 详解如何使用Node.js编写命令工具——以vue-cli为例

    详解如何使用Node.js编写命令工具——以vue-cli为例

    本篇文章主要介绍了如何使用Node.js编写命令工具——以vue-cli为例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • node指定内存上限简单代码实例

    node指定内存上限简单代码实例

    NodeJS启动的应用,内存使用是有上限的,下面这篇文章主要给大家介绍了关于node指定内存上限的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 在Linux系统中搭建Node.js开发环境的简单步骤讲解

    在Linux系统中搭建Node.js开发环境的简单步骤讲解

    这篇文章主要介绍了在Linux系统中搭建Node.js开发环境的步骤,Node使得JavaScript程序可以在本地操作系统环境中解释运行,需要的朋友可以参考下
    2016-01-01
  • Node.js中的异步生成器与异步迭代详解

    Node.js中的异步生成器与异步迭代详解

    这篇文章主要给大家介绍了关于Node.js中异步生成器与异步迭代的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论