【工具】Node.js与JavaScript的相关概念


在最初的互联网时代,JavaScript 只是浏览器里的“小角色”,负责让网页动起来、能互动。然而,随着 Web 应用的复杂度不断提高,前后端分属两种语言的开发模式变得低效而割裂。Node.js 的诞生,让 JavaScript 从浏览器的前端脚本摇身一变,成为可以同时驾驭前端与后端的“全栈语言”。本篇博客将带梳理 JavaScript 与 Node.js 的关系,以及它们如何共同推动现代 Web 开发的演变。

JavaScript的诞生

最早的浏览器页面由 HTML 和 CSS 两种文件构成。其中,HTML 负责描述页面的内容,如:“今天的天气”,“文章的标题”等。CSS 则负责规定这些页面内容该以什么样的形式展示,如:“标题的位置”,“标题的大小”。但是这样写出来的 HTML 页面是静态的、不可交互的,页面必须在每次对文件修改后刷新才能显示成最新的样子。为了使浏览器变得动态、可交互,1995 年,JavaScript 作为一种全新的语言诞生了。

浏览器页面语言的“分工”

哪怕到 2025 年的今天,浏览器页面的构成也依然是“HTML + CSS + JavaScript”,这三种语言有着不同的分工,具体如下。

  • HTML: 定义页面内容的结构与语义(如标题、段落、图片等元素的层级关系)
  • CSS: 控制页面内容的视觉呈现(布局、颜色、动画等样式)
  • JavaScript: 实现页面的动态行为与交互逻辑(数据更新、事件响应等)
Html + CSS说明图

以上图为例,在 HTML 中定义了这个页面应该有“开源”、“企业版”、“高校版”等文字,在 CSS 中定义了这些文字应该以这个大小,这个颜色出现在页面中。 JavaScript说明图

而在这张图中,当点击右上角的 English 按钮后,整个页面切换成英文显示,这便是通过 JavaScript 来监听点击事件,实现了与浏览器之间的交互。

计算机是如何识别 JavaScript 等高级语言的

众所周知,计算机只能识别一系列机器码,对于开发者来说,要用计算机可识别的机器码进行开发是十分困难的。于是,在此基础上,有了汇编语言。汇编语言是一种低级语言(亦称符号语言),用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编器转换成机器指令。

相对于机器语言,汇编语言的开发相对来说简单了一些,但依然复杂。于是,就有了一系列的高级语言,如 C++、Java、Python、JavaScript 等。每一种高级语言都有专门的工具将它们转换成机器可识别并执行的机器码,并按照开发者的意思给出结果。

  • Python:主要通过 解释器(如官方发行版自带的 CPython)将代码翻译并执行。
  • Java:通过 javac 编译器(JDK 提供)将源代码编译成字节码,再由 JVM(Java 虚拟机) 解释执行或即时编译为机器码。
  • JavaScript:依赖引擎(如 Chrome 浏览器中的 V8 引擎)将代码转成机器码执行。

需要注意的是,JavaScript 引擎只实现了 ECMAScript 语言规范,而像 DOM 操作、windowdocument 等是浏览器提供的 Web API,不属于 JavaScript 语言本身。JavaScript 诞生之初就是为了在浏览器中运行,因此这些 API 最初只存在于浏览器环境中。

Node.js的诞生

传统上,JavaScript 只能运行在浏览器环境中。当 Web 应用需要与后端服务器或数据库交互时,如果允许浏览器中的 JavaScript 直接访问系统资源,会带来严重的安全风险。因此,浏览器端与后端必须隔离,后端通常由其他语言编写。

Node.js 的出现改变了这一点——它基于 Chrome 的 V8 JavaScript 引擎构建,提供了一个独立于浏览器的 JavaScript 运行时环境。这样,开发者可以用 JavaScript 编写服务器端代码,运行在服务器上处理业务逻辑、访问数据库、操作文件等。前端(浏览器端)和后端(服务器端)都可以统一使用 JavaScript 进行开发,从而降低学习成本,并通过 API 接口实现安全的数据交互。

⚠️ 注意:Node.js 并不会让浏览器端的 JavaScript 获得访问本地文件系统的能力,它是一个单独运行的环境,通常在服务器或本地开发机上执行。

Node.js的实际作用

JavaScript 代码一般有两种编写和运行方式:

  • 在 HTML 文件中通过 <script> 标签 来定义交互行为:运行在浏览器中,能调用 Web API,但不能访问系统文件。
  • 通过 Node.js 在各种 IDE 或命令行中运行 .js 文件:Node.js 内置了 V8 引擎和自己的 API(如 fs 模块),可以访问文件系统和网络资源(权限范围内)。

运行 JavaScript 文件的方式包括:

  • 在 IDE 中点击运行按钮
  • 在命令行中执行:
node 文件名.js

可以把 JavaScript 和 Node.js 的关系类比为:JavaScript 是“接待员”,Node.js 是“管理员兼仓库钥匙”,而操作系统中的数据文件是“仓库里的货物”。Node.js 内置了 V8 引擎,因此既能理解接待员的语言,又能带着权限去仓库取货。

如今,Node.js 在前端开发中几乎是必不可少的。它不仅是运行 JavaScript 的环境,还集成了大量开源工具和库,比如构建工具 webpack、静态博客工具 hexo 等。这些工具本质上都是用 JavaScript 编写的程序,可以通过 npm(Node Package Manager) 安装:

npm install 库名

npm 是 Node.js 自带的包管理工具,用来安装、管理和发布 JavaScript 包(库)。

而安装一些命令行工具,如hexo,vue等,实际上就是在安装一系列JavaScript文件,并在安装的过程中注册这些命令。在执行某些命令,如hexo -g时,命令行工具会自动找到该命令对应的JavaScript文件并通过Node.js执行。

结语

从最初只存在于浏览器中的前端脚本,到如今在服务器端同样大放异彩,JavaScript 的舞台早已不再局限于网页。Node.js 不仅让 JavaScript 跨越了前后端的鸿沟,还推动了全栈开发模式的普及。无论是构建高性能的 API 服务,还是搭建个人博客、命令行工具,Node.js 都提供了稳定而强大的运行环境。理解 JavaScript 与 Node.js 的关系,不仅是学习前端开发的基础,更是迈向全栈开发的重要一步。


文章作者: Knight Zhou
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Knight Zhou !
文章留言
  目录