JavaScript、Node.js、npm 和 nvm:彻底理清他们的历史与关系

发布于:2025-02-14 ⋅ 阅读:(36) ⋅ 点赞:(0)

刚接触的新手小伙伴是不是很迷茫,作为一个c/c++工程师,刚开始接触这东西也被绕晕过,今天彻底讲清楚他们的历史与关系。

1. JavaScript:从浏览器脚本语言到全栈开发

JavaScript 的诞生

JavaScript 诞生于 1995 年,由 Brendan Eich 在 Netscape 公司开发,最初的目的是为网页添加动态效果。它是一种解释型、弱类型的语言,最初只运行在浏览器上,主要用于处理前端交互,例如:

document.getElementById("btn").addEventListener("click", function() {
    alert("Hello, JavaScript!");
});

发展与标准化

JavaScript 迅速流行,并于 1997 年由 ECMA 组织标准化,形成了 ECMAScript(简称 ES)。ES5、ES6(ES2015)及其后的版本不断增强了 JavaScript 的能力,使其从一个简单的脚本语言发展为强大的编程语言。

但问题来了,JavaScript 只能运行在浏览器中,限制了它的应用场景。而这也引出了 Node.js 的诞生。


2. Node.js:让 JavaScript 走向后端

Node.js 的诞生

2009 年,Ryan Dahl 开发了 Node.js,它是一个基于 Google Chrome V8 引擎的 JavaScript 运行时,使 JavaScript 可以在服务器端运行。其核心特性包括:

  • 非阻塞 I/O:使用事件驱动模型,提高了高并发处理能力。
  • 单线程架构:通过异步编程模型优化性能。

使用 Node.js,我们可以编写服务器端代码,比如一个简单的 HTTP 服务器:

const http = require('http');

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

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

从此,JavaScript 变成了全栈开发语言,可以同时用于前端和后端。


3. npm:Node.js 生态的管理器

什么是 npm?

npm(Node Package Manager) 是 Node.js 的默认包管理器,它可以:

  1. 安装 JavaScript 库或工具。
  2. 管理项目依赖。
  3. 运行自定义脚本。

当我们安装 Node.js 时,npm 也会自动安装。

npm 的使用示例

  1. 检查 npm 版本

    npm -v
    
  2. 初始化项目(创建 package.json

    npm init -y
    
  3. 安装依赖
    例如,我们安装 express 这个后端框架:

    npm install express
    
  4. 全局安装工具

    npm install -g nodemon
    
  5. 运行 npm 脚本(在 package.json 里定义脚本)

    "scripts": {
      "start": "node app.js"
    }
    

    然后运行:

    npm run start
    

npm 的兴起,极大地推动了 JavaScript 生态的发展,方便了开发者管理项目和依赖。但一个问题是,Node.js 版本不断更新,不同项目可能需要不同的 Node.js 版本,这就引出了 nvm


4. nvm:管理 Node.js 版本的工具

为什么需要 nvm?

不同项目可能需要不同版本的 Node.js,例如:

  • A 项目 需要 Node.js 14.x
  • B 项目 需要 Node.js 18.x

如果没有 nvm,手动安装和切换 Node.js 版本将会非常麻烦。因此,nvm(Node Version Manager) 诞生了,它允许在同一台机器上管理多个 Node.js 版本,并且可以随时切换。

nvm 的安装与使用

  1. 安装 nvm(Windows 可使用 nvm-windows

    • Linux/macOS:
      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
      source ~/.bashrc
      
    • Windows(使用 nvm-windows):
      下载并安装 nvm-windows
  2. 查看可用的 Node.js 版本

    nvm list-remote
    
  3. 安装特定版本的 Node.js

    nvm install 18.16.1
    
  4. 切换 Node.js 版本

    nvm use 18.16.1
    
  5. 查看当前使用的 Node.js 版本

    node -v
    
  6. 查看已安装的 Node.js 版本

    nvm list
    

nvm 让我们可以灵活地管理不同版本的 Node.js,特别适用于有多个 Node.js 项目或需要兼容不同版本的情况。


5. 关系梳理:JavaScript、Node.js、npm 和 nvm

工具 作用
JavaScript 一种编程语言,最初用于前端,后被扩展到后端
Node.js JavaScript 的运行时环境,使其可以运行在服务器端
npm Node.js 的包管理器,负责安装和管理依赖
nvm Node.js 版本管理工具,帮助在不同项目中切换 Node.js 版本

从 JavaScript 发展到 Node.js,再到 npm 和 nvm,我们可以看到 JavaScript 生态的演变:

  1. JavaScript 最初只在浏览器中运行,负责前端交互。
  2. Node.js 让 JavaScript 可以在服务器端运行,拓展了应用范围。
  3. npm 让 JavaScript 生态更加丰富,方便管理第三方库和工具。
  4. nvm 解决了 Node.js 版本管理的问题,使得开发更加灵活。

如今,JavaScript 已经成为最流行的编程语言之一,而 Node.js、npm 和 nvm 进一步巩固了它在全栈开发中的地位。