【Linux】Ubuntu Linux 系统——Node.js 开发环境

ℹ️大家好,我是练小杰,今天星期五了,同时也是2025年的情人节,今晚又是一个人的举个爪子!! 🙂
本文是有关Linux 操作系统中 Node.js 开发环境基础知识,后续我将添加更多相关知识噢,谢谢各位的支持🙏

前情回顾:【Linux 系统——Python集成开发环境】
Linux专栏:🔝 【Linux零基础开始】【Shell 脚本编程】 【文件权限专栏】

在这里插入图片描述

Node.js 开发环境

  • Node.js简介
    • 虚拟环境简介
  • 开发环境的组成
    • Node.js 运行时
    • 包管理器
      • npm(Node Package Manager)
      • yarn 包管理器
    • 代码编辑器或集成开发环境 (IDE)
    • 版本控制工具 (Git)
    • 调试工具
    • 构建工具
    • 测试框架
    • 持续集成/持续部署 (CI/CD) 工具
    • 容器化工具 (Docker)
    • 其他有用的工具
    • 环境变量和配置文件
    • 安全性工具
    • 文档和注释
  • 在Ubuntu系统上安装Node.js
    • 安装`Node.js`的方式
    • 使用二进制发行版安装`Node.js`
      • 1. 下载 Node.js 二进制包
      • 2. 解压下载的二进制包
      • 3. 移动解压后的文件到系统目录
      • 4. 配置环境变量
      • 5. 验证安装
    • 管理Node.js版本
    • 使用淘宝npm镜像
  • 开发Node.js应用程序
    • 编写程序
    • 测试程序
  • 调试Node.js应用程序

在这里插入图片描述

Node.js简介

  • 在Linux系统中,Node.js开发环境是指为了开发、运行和调试Node.js应用程序所需的一系列工具、库和配置。
  • 完整的Node.js开发环境由多个关键组件构成,这些组件协同工作,帮助开发者高效地开发、运行、测试和部署Node.js应用程序。

虚拟环境简介

  • Node.js(简称Node)是一个基于Chrome V8引擎的JavaScript运行环境。

  • Node.js是一个让JavaScript运行在服务器端的开发平台。

  • Node.js运行时环境包含执行用JavaScript编写的程序所需的一切。

  • Node.js 优点: 开发人员可以在客户端和服务器端编写JavaScript,打通了前、后端。

  • Node.js除了自己的标准类库(主要由二进制类库和核心模块组成)之外, 还可使用大量的第三方模块系统来实现代码的分享和重用,提高开发效率。

  • 对比其他的后端脚本语言,Node.js内置了处理网络请求和响应的函数库,所以不需要额外部署Web服务器。

开发环境的组成

一个在Linux系统上完整的Node.js开发环境由以下主要部分组成:

  1. Node.js 运行时:提供JavaScript运行环境。
  2. 包管理器 (npm 或 yarn):管理项目依赖。
  3. 代码编辑器或 IDE:编写和调试代码。
  4. 版本控制工具 (Git):管理代码版本和协作。
  5. 调试工具:调试应用程序。
  6. 构建工具:打包和优化代码。
  7. 测试框架:编写和运行测试。
  8. CI/CD 工具:自动化构建、测试和部署。
  9. 容器化工具 (Docker):创建和管理容器化环境。
  10. 其他工具 (nodemon, PM2):提升开发效率。
  11. 环境变量和配置文件:管理应用配置。
  12. 安全性工具:确保应用安全。
  13. 文档和注释工具:编写和维护文档。

Node.js 运行时

Node.js 是JavaScript的运行环境,允许你在服务器端执行JavaScript代码。Node.js基于Chrome V8引擎,具有非阻塞、事件驱动的架构,非常适合构建高性能的网络应用。

  • 安装方式:
    • 包管理器:如apt、dnf等,适用于大多数Linux发行版,但版本可能不是最新的。
    • nvm(Node Version Manager):允许你安装和管理多个Node.js版本,适合开发环境。
    • 从官网下载二进制文件:适用于需要特定版本的用户。

包管理器

npm(Node Package Manager)

默认随Node.js一起安装,用于安装、升级和卸载项目依赖。

  • 常用命令:
npm install <package-name>
npm uninstall <package-name>

yarn 包管理器

由Facebook开发,提供更快的安装速度和更稳定的依赖管理。

  • 安装:
npm install -g yarn
  • 常用命令:
yarn add <package-name>
yarn remove <package-name>

代码编辑器或集成开发环境 (IDE)

  • Visual Studio Code (VS Code): 免费、开源,拥有丰富的扩展和调试功能。安装VS Code可以使用Snap安装 或 使用Visual Studio Code安装包。

  • WebStorm:功能全面的JavaScript IDE,由JetBrains开发。可以非常方便地进行代码补全、调试、测试等。

  • Sublime Text:插件丰富,界面也比较美观,且具有简单的项目管理功能。

版本控制工具 (Git)

Git 用于代码版本控制和协作开发。使用GitHub、GitLab、Bitbucket等平台进行代码托管和团队协作。

  • 安装:
sudo apt update
sudo apt install git
  • 配置:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

调试工具

  • Node.js 内置调试器:使用 --inspect 标志启动调试模式。
node --inspect app.js
  • VS Code 调试器: 配置 launch.json 文件以支持 Node.js 调试。

  • Chrome DevTools: 通过 --inspect 标志,在Chrome浏览器中使用DevTools进行调试。

构建工具

  • Webpack: 用于打包、压缩和优化前端资源。

    npm install --save-dev webpack webpack-cli
    
  • Gulp、Grunt: 自动化任务运行器,用于执行常见的开发任务。

  • Babel:将现代JavaScript代码转译为兼容旧版本的代码。

    npm install --save-dev @babel/core @babel/cli @babel/preset-env
    

测试框架

  • Jest: 一个功能强大的JavaScript测试框架。

    npm install --save-dev jest
    
  • 另外,Mocha、Chai、AVA 等也是常用的测试框架。

持续集成/持续部署 (CI/CD) 工具

  • Jenkins:一个开源的自动化服务器,用于构建、测试和部署。

  • Travis CICircleCI:基于云的CI/CD服务,易于集成GitHub等平台。

容器化工具 (Docker)

Docker: 用于创建和管理容器化的开发环境,确保开发环境与生产环境的一致性。

  • docker安装命令

    sudo apt update
    sudo apt install docker.io
    sudo systemctl start docker
    sudo systemctl enable docker
    

Docker Compose: 管理多个容器的应用。

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

其他有用的工具

  • nodemon: 在开发过程中自动重启Node.js应用程序,方便实时调试。

    npm install -g nodemon
    
  • PM2:一个高级的进程管理器,用于生产环境的应用程序管理。

    npm install -g pm2
    

环境变量和配置文件

  • 环境变量:使用 .env 文件管理环境变量,配合 dotenv 包使用。
npm install dotenv
  • 配置文件: 使用 package.json 脚本和 config 包管理不同环境的配置。

安全性工具

  • 使用 npm audityarn audit 检查和修复依赖中的安全漏洞。

    npm audit
    
  • ⚠️使用 HTTPS协议:确保所有网络通信使用 HTTPS,保护数据传输安全。

文档和注释

  • JSDoc:为JavaScript代码生成文档。

    npm install --save-dev jsdoc
    
  • Markdown 编辑器:使用 Markdown 编写项目文档和README 文件。

在Ubuntu系统上安装Node.js

安装Node.js的方式

  • 源代码:适合各种版本的安装。
  • 二进制发行版:Node.js官方提供已编译好的二进制软件包,可直接下载使用。
  • 软件源安装:Debian/Ubuntu都有自己的软件源安装工具。
  • n模块: 可以用来安装并切换到相应的Node.js,前提是已安装包管理器npm
  • nvm:这是Node.js版本管理器,可用于安装和管理不同版本的Node.js。

使用二进制发行版安装Node.js

1. 下载 Node.js 二进制包

首先,访问 Node.js 官方下载页面 获取最新的二进制包链接。你也可以使用 wget 命令直接下载所需的版本。 以下示例用下载最新的 LTS(长期支持)版本举例:

#创建一个目录用于存放下载的文件(如果尚未存在)
mkdir -p ~/Downloads/nodejs

#进入下载目录
cd ~/Downloads/nodejs

#使用 wget 下载最新的 LTS 版本(请根据实际版本号调整 URL)
wget https://nodejs.org/dist/v18.17.1/node-v18.17.1-linux-x64.tar.xz

⚠️注意:请确保使用最新的版本号。你可以在【Node.js 官方下载页面】 找到最新的 LTS 版本链接。

2. 解压下载的二进制包

下载完成后,使用 tar 命令解压压缩包。

#解压下载的压缩包
tar -xf node-v18.17.1-linux-x64.tar.xz

3. 移动解压后的文件到系统目录

为了方便使用,可以将解压后的文件移动到 /usr/local 目录。

sudo mv node-v18.17.1-linux-x64 /usr/local/nodejs

4. 配置环境变量

为了让系统识别 nodenpm 命令,需要将 Node.js 的可执行文件路径添加到 PATH 环境变量中。

  • 编辑 ~/.bashrc(使用 Bash)或 ~/.zshrc(使用 Zsh)文件。
#使用 nano 编辑 ~/.bashrc
nano ~/.bashrc
  • 在文件末尾添加以下内容:
# Node.js
export NODEJS_HOME=/usr/local/nodejs
export PATH=$NODEJS_HOME/bin:$PATH

保存并退出编辑器(在 nano 中,按 Ctrl + O 保存,按 Ctrl + X 退出)。

  • 刷新环境变量配置文件:
source ~/.bashrc

5. 验证安装

最后,验证 Node.jsnpm 是否安装成功。

# 检查 Node.js 版本
node -v
# 输出示例: v18.17.1

# 检查 npm 版本
npm -v
# 输出示例: 9.6.7

至此,通过上面的步骤,我们可以在Linux系统中使用二进制发行版成功安装Node.js,并配置好环境变量以便于全局使用 nodenpm 命令。此外,使用 nvm 可以更方便地管理多个Node.js版本,适合开发环境中的不同项目需求。

管理Node.js版本

nvm是专门的Node版本管理器,我们可以利用nvm进行版本管理服务器。

  • 常用命令如下:
nvm current           #显示当前正在使用的版本
nvm ls                 #列出已在本机安装的版本,同时也会显示当前使用的版本
nvm install 8.0.0    #安装指定版本的Node 
nvm uninstall 8.0.0  #卸载指定版本的Node
nvm use 8.0            #指定当前要使用的版本(切换版本)
nvm run 6.10.3 app.js   #使用指定Node版本(6.10.3)运行指定程序(app.js) 
nvm alias default 8.1.0   #设置默认的Node版本
nvm alias default node    #将最新版本作为默认版本

使用淘宝npm镜像

  • 淘宝专门定制了cnpm命令行工具以代替npm,可以执行以下命令进行安装。
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org

安装完成后,可使用cnpm来安装和管理npm包。
cnpm的使用方法与npm相同,只需将npm改成cnpm

开发Node.js应用程序

下面以VS Code编辑器界面举例:

编写程序

const http = require('http');
const httpServer = http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World!s\n');
});
httpServer.listen(3000,function(){
    console.log('服务器正在3000端口上监听!');
});

测试程序

  • 运行Node.js程序
    在这里插入图片描述
  • 访问Web应用程序
    在这里插入图片描述

调试Node.js应用程序

  • 设置配置文件.vscode/launch.json
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${workspaceFolder}/hello-world.js"
        }
    ]
}

  • 设置断点
  • 启动Node.js脚本的调试
    在这里插入图片描述
  • 根据需要设置监视器
  • 执行断点之后的语句

调试器支持3种单步执行方式:

  • Step Into<F11>键):单步执行,遇到子函数就进入并且继续单步执行。
  • Step Out<Shift>+<F11>组合键):当单步执行到子函数内时,使用它执行完子函数余下部分,并返回到上一层函数。
  • Step Over<F10>键):在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完毕并返回到下一条语句。
  • 要强制结束调试,按<Shift>+<F5>组合键。

今天的Linux系统的Node.js 开发环境内容到这里就结束了,下星期再见啦👋
ℹ️了解更多,主页【练小杰的CSDN】
⚠️若博客里的内容有问题,欢迎指正,我会及时修改!!!
下周同一时间再见,各位伙伴们🚴🏻‍♀️~~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969432.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle查看执行计划

方式一&#xff08;查看的真实的使用到的索引&#xff09; 1.执行解释计划 2.查看结果 可以看到使用了RANGE SCAN范围扫描的索引 方式二&#xff08;查看的是预测的可能会用到的索引&#xff09; 1.执行解释计划sql explain plan for select * from COURSE where COURSE_…

百度 AI开源!将在6月30日开源文心大模型4.5系列

【大力财经】直击互联网最前线&#xff1a;百度近期动作频频&#xff0c;先是宣布将在未来数月陆续推出文心大模型4.5系列&#xff0c;并于6月30日正式开源。 据大力财经了解&#xff0c;自DeepSeek开源之风盛行全球后&#xff0c;开源闭源路径的选择就成为AI领域的热门话题&a…

【DDD系列-2】风暴出的领域模型

为什么使用DDD​ 三个问题​ 1.为什么我们的系统越做越多&#xff0c;越来越庞大&#xff0c;还需要不断的重构&#xff1f;​ 2.为什么我们的系统业务越来越复杂&#xff0c;服务层的代码越来越多难以维护&#xff0c;不敢维护&#xff1f;​ 3.为什么一旦业务变化或者数据…

基于YALMIP和cplex工具箱的微电网最优调度算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 系统建模 4.2 YALMIP工具箱 4.3 CPLEX工具箱 5.完整工程文件 1.课题概述 基于YALMIP和cplex工具箱的微电网最优调度算法matlab仿真。通过YALMIP和cplex这两个工具箱&#xff0c;完成微电网的最优调…

visual studio导入cmake项目后打开无法删除和回车

通过Cmakelists.txt导入的项目做删除和回车无法响应&#xff0c;需要点击项目&#xff0c;然后选择配置项目就可以了

npm安装时无法访问github域名的解决方法

个人博客地址&#xff1a;npm安装时无法访问github域名的解决方法 | 一张假钞的真实世界 今天在用npm install的时候出现了github项目访问不了的异常&#xff1a; npm ERR! Error while executing: npm ERR! /bin/git ls-remote -h -t https://github.com/nhn/raphael.git np…

解锁豆瓣高清海报(三)从深度爬虫到URL构造,实现极速下载

脚本地址: 项目地址: Gazer PosterBandit_v2.py 前瞻 之前的 PosterBandit.py 是按照深度爬虫的思路一步步进入海报界面来爬取, 是个值得学习的思路, 但缺点是它爬取慢, 仍然容易碰到豆瓣的 418 错误, 本文也会指出彻底解决旧版 418 错误的方法并提高爬取速度. 现在我将介绍…

一维差分算法篇:高效处理区间加减

那么在正式介绍我们的一维差分的原理前&#xff0c;我们先来看一下一维差分所应用的一个场景&#xff0c;那么假设我们现在有一个区间为[L,R]的一个数组&#xff0c;那么我要在这个数组中的某个子区间比如[i,m] (L<i<m<R)进行一个加k值或者减去k值的一个操作&#xff…

信息收集-Web应用JS架构URL提取数据匹配Fuzz接口WebPack分析自动化

知识点&#xff1a; 1、信息收集-Web应用-JS提取分析-人工&插件&项目 2、信息收集-Web应用-JS提取分析-URL&配置&逻辑 FUZZ测试 ffuf https://github.com/ffuf/ffuf 匹配插件 Hae https://github.com/gh0stkey/HaE JS提取 JSFinder https://github.com/Threez…

Python基础语法精要

文章目录 一、Python的起源二、Python的用途三、Python的优缺点优点缺点 四、基础语法&#xff08;1&#xff09;常量和表达式&#xff08;2&#xff09;变量变量的语法&#xff08;i&#xff09;定义变量&#xff08;ii&#xff09;变量命名的规则 &#xff08;3&#xff09;变…

测试方案整理

搜索引擎放在那里&#xff1f;研发 查看问题样本或者在提取再批量入录等情况&#xff0c;一旦我没有勾选或者全选中已经批量入录的样本&#xff0c;那么在直接点击批量提取或查看问题样本的后&#xff0c;会自动默认为选择全选样本还是按照输入错误处理&#xff1f; 批量查看返…

开启对话式智能分析新纪元——Wyn商业智能 BI 携手Deepseek 驱动数据分析变革

2月18号&#xff0c;Wyn 商业智能 V8.0Update1 版本将重磅推出对话式智能分析&#xff0c;集成Deepseek R1大模型&#xff0c;通过AI技术的深度融合&#xff0c;致力于打造"会思考的BI系统"&#xff0c;让数据价值触手可及&#xff0c;助力企业实现从数据洞察到决策执…

政策赋能科技服务,CES Asia 2025将展北京科技新貌

近日&#xff0c;《北京市支持科技服务业高质量发展若干措施》正式印发&#xff0c;为首都科技服务业的腾飞注入了强大动力。 该《若干措施》提出了三方面14条政策措施。在壮大科技服务业市场主体方面&#xff0c;不仅支持科技服务业企业向平台化和综合性服务机构发展&#xf…

2024春秋杯网络安全联赛冬季赛wp

web flask 根据题目描述&#xff0c;很容易想到ssti注入 测试一下 确实存在 直接打payload {{lipsum.globals[‘os’].popen(‘cat f*’).read()}} file_copy 看到题目名字为file_copy&#xff0c; 当输入路径时会返回目标文件的大小&#xff0c; 通过返回包&#xff0c…

Mac os部署本地deepseek+open UI界面

一.部署本地deepseek 使用ollama部署&#xff0c;方便快捷。 ollama介绍&#xff1a;Ollama 是一个高效、便捷的人工智能模型服务平台&#xff0c;提供多样化的预训练模型&#xff0c;涵盖自然语言处理、计算机视觉、语音识别等领域&#xff0c;并支持模型定制和微调。其简洁…

分布式技术

一、为什么需要分布式技术&#xff1f; 1. 科学技术的发展推动下 应用和系统架构的变迁&#xff1a;单机单一架构迈向多机分布式架构 2. 数据大爆炸&#xff0c;海量数据处理场景面临问题 二、分布式系统概述 三、分布式、集群 四、负载均衡、故障转移、伸缩性 负载均衡&a…

基于ssm的超市订单管理系统

一、系统架构 前端&#xff1a;jsp | web components | jquery | css | ajax 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.8 | mysql | maven | tomcat 二、代码及数据 三、功能介绍 01. 登录 02. 首页 03. 订单管理 04. 供应…

尚硅谷爬虫note004

一、urllib库 1. python自带&#xff0c;无需安装 # _*_ coding : utf-8 _*_ # Time : 2025/2/11 09:39 # Author : 20250206-里奥 # File : demo14_urllib # Project : PythonProject10-14#导入urllib.request import urllib.request#使用urllib获取百度首页源码 #1.定义一…

在nodejs中使用RabbitMQ(三)Routing、Topics、Headers

示例一、Routing exchange类型direct&#xff0c;根据消息的routekey将消息直接转发到指定队列。producer.ts 生产者主要发送消息&#xff0c;consumer.ts负责接收消息&#xff0c;同时也都可以创建exchange交换机&#xff0c;创建队列&#xff0c;为队列绑定exchange&#xff…

DeepSeek大模型一键部署解决方案:全平台多机分布式推理与国产硬件优化异构计算私有部署

DeepSeek R1 走红后&#xff0c;私有部署需求也随之增长&#xff0c;各种私有部署教程层出不穷。大部分教程只是简单地使用 Ollama、LM Studio 单机运行量化蒸馏模型&#xff0c;无法满足复杂场景需求。一些操作配置也过于繁琐&#xff0c;有的需要手动下载并合并分片模型文件&…