当前位置: 首页 > news >正文

WEB前端09-前端服务器搭建(Node.js/nvm/npm)

前端服务器的搭建

在本文中,我们将介绍如何安装和配置 nvm(Node Version Manager)以方便切换不同版本的 Node.js,以及如何设置 npm(Node Package Manager)使用国内镜像,并搭建一个简单的前端服务器。

1.Node.js简介

什么是 Node.js?

Node.js 是一个基于 Chrome V8 引擎构建的 JavaScript 运行时,允许开发者在服务器端运行 JavaScript 代码。特别适用于需要处理大量并发连接的应用程序。与传统的服务器端技术不同,Node.js 使用事件驱动的非阻塞 I/O 模型,这使得它非常轻量和高效。

为什么学习Node.js?

实时应用: Node.js 非常适合构建实时应用,如聊天程序、在线游戏和协作工具。它的事件驱动模型可以高效地处理大量并发连接,确保实时性。

API 服务器: 由于 Node.js 的高性能和非阻塞 I/O 特性,它是构建 RESTful API 和 GraphQL 服务器的理想选择。Node.js 可以处理大量并发请求,确保 API 的响应速度。

单页应用(SPA): 通过与前端框架(如 React、Vue 和 Angular)结合,Node.js 可以用于构建单页应用的后端服务,提供数据接口和认证服务。

微服务架构: Node.js 非常适合实现微服务架构。开发者可以将应用程序拆分为多个小型服务,每个服务专注于特定功能,使用轻量级通信协议进行交互。

如何开始使用 Node.js

  1. 安装 Node.js: 访问 Node.js 官网 下载并安装最新的稳定版本。安装完成后,可以通过以下命令检查版本:

    node -v
    npm -v
    
  2. 初始化项目: 使用 NPM 初始化一个新项目:

    mkdir my-node-app
    cd my-node-app
    npm init -y
    

    这将生成一个 package.json 文件,用于管理项目依赖和配置信息。

  3. 安装依赖: 例如,安装 Express 框架以快速搭建 Web 服务器:

    npm install express
    
  4. 编写代码: 创建一个简单的服务器文件 app.js

    const express = require('express');
    const app = express();app.get('/', (req, res) => {res.send('Hello, Node.js!');
    });app.listen(3000, () => {console.log('Server is running on http://localhost:3000');
    });
    
  5. 运行服务器

    node app.js
    

    打开浏览器访问 http://localhost:3000,你将看到 “Hello, Node.js!” 的欢迎信息。

2. 掌握 nvm

Node.js 是现代 Web 开发中的重要工具之一,然而随着项目需求的变化,不同项目可能需要使用不同版本的 Node.js。这时,Node 版本管理器(nvm)就显得尤为重要。nvm 允许我们在同一台机器上轻松地安装、切换和管理多个版本的 Node.js。本篇博客将介绍 nvm 的安装、配置和使用方法。

  • 什么是 nvm?

nvm,全称 Node Version Manager,是一个用于管理多个 Node.js 版本的命令行工具。它使开发者能够在不同项目间灵活切换 Node.js 版本,确保项目的兼容性和稳定性。

  • 安装nvm
1. **卸载现有的 Node.js**:在安装 nvm 之前,需要先卸载掉系统中现有的 Node.js。
2. **选择目录时避免空格**:在安装 nvm 和 Node.js 时,选择的目录中一定不要出现空格。
3. **以管理员身份运行命令提示符**:执行 nvm 命令时,建议使用【以管理员身份运行】的 cmd 程序。
4. **设置国内镜像地址**:为了加快下载速度,建议首次运行前设置好国内镜像地址:
//nvm node_mirror http://npm.taobao.org/mirrors/node/
//nvm npm_mirror https://npm.taobao.org/mirrors/npm/

查看可用的 Node.js 版本:

nvm list available

建议安装 LTS(长期支持版):

nvm install 版本号

安装后,可以通过 nvm list 查看已安装的版本,并进行版本切换:

nvm use 版本号

安装后,nvm 会自动添加环境变量,但可能需要手工添加 Node.js 的 PATH 环境变量。

3. 检查 npm

npm 是 JavaScript 的包管理器,类似于 Java 世界的 Maven。为了确保 npm 使用国内镜像,可以进行如下设置:

检查当前镜像:

npm get registry

如果返回的不是 https://registry.npm.taobao.org/,需要进行设置:

npm config set registry https://registry.npm.taobao.org/

解决 npm 安装包时的 CERT_HAS_EXPIRED 错误

在安装 npm 包时遇到 CERT_HAS_EXPIRED 错误,通常是由于证书过期或网络问题。可以通过以下几种方法来解决:

  • 1. 更新 npm

首先,尝试更新 npm 版本:

npm install -g npm
  • 2. 更改 npm 的 registry 源

可以尝试将 npm 的 registry 源更改为官方源或其他可用的镜像源:

  1. 设置 npm 使用官方源:

    npm config set registry https://registry.npmjs.org/
    
  2. 或者使用其他镜像源,例如腾讯的镜像源:

    npm config set registry https://mirrors.cloud.tencent.com/npm/
    
4. 搭建前端服务器

接下来,我们将使用 npm 和 express 搭建一个简单的前端服务器。

  1. 新建一个保存项目的文件夹,进入文件夹并执行以下命令:

    npm install express --save-dev//Express 是一个轻量级且灵活的 Node.js Web 应用框架,提供了丰富的功能用于构建单页、多页和混合 Web 应用。它基于 Connect 中间件架构,允许开发人员在请求处理链中插入各种中间件,从而实现复杂的功能。
    

    image-20240721112626616

  2. 修改 package.json 文件:

    {"type": "module","devDependencies": {"express": "^4.19.2"}
    }
    
    • 其中 devDependencies 是通过 npm install --save-dev 添加的依赖。(相当于pom.xml)
  3. 编写 main.js 代码:

    import express from 'express'
    const app = express()app.use(express.static('./'))
    app.listen(7070)
    
    //解释
    import express from 'express':
    这行代码使用ES6的模块导入语法,从Node.js的Express框架中导入express模块。const app = express():
    这行代码创建了一个Express应用程序实例,将其赋值给变量app。Express是一个流行的Node.js Web应用程序框架,用于简化构建Web应用程序和API。app.use(express.static('./')):
    这行代码设置Express应用程序使用内置的express.static中间件。该中间件用于提供静态文件,比如HTML、图像、样式表和客户端JavaScript文件,而不需要通过路由来处理。'./'表示将当前目录作为静态资源目录,即Web服务器根目录。app.listen(3000):
    这行代码启动Express应用程序监听3000端口上的HTTP请求。当运行该代码后,Express将开始监听来自3000端口的所有HTTP请求,并将其分配给相应的路由或静态文件处理。
    
  4. 运行前端服务器:

    node main.js
    

image-20240721114422420

相关文章:

WEB前端09-前端服务器搭建(Node.js/nvm/npm)

前端服务器的搭建 在本文中,我们将介绍如何安装和配置 nvm(Node Version Manager)以方便切换不同版本的 Node.js,以及如何设置 npm(Node Package Manager)使用国内镜像,并搭建一个简单的前端服…...

ASP.NET Core在启动过程中使用数据库实例的几种方式

ASP.NET Core项目启动过程中若要调用SqlSugarClient实例操作数据库数据&#xff08;假设操作函数如下&#xff09;&#xff0c;特此记录以下几种方式&#xff1a; public class PublicDataBuffer {public static List<EnvironmentRecord> DataBuffer new List<Envir…...

AndroidStudio 编辑xml布局文件卡死问题解决

之前项目编写的都是正常&#xff0c;升级AndroidStudio后编辑布局文件就卡死&#xff0c;还以为是AndroidStudio文件。 其实不然&#xff0c;我给整个项目增加了版权声明。所以全部跟新后&#xff0c;布局文件也增加了版权声明。估计AndroidStudio在 解析布局文件时候因为有版…...

使用 PVE 自签 CA 证书签发新证书

前言 PVE 安装时会自动创建一个有效期 10 年的 CA 证书, 我们可以利用这个 CA 证书给虚拟机中的 Web 应用签发新的 TLS 证书用于提供 HTTPS 服务. 下面以 PVE 虚拟机中通过 Docker 跑的一个 雷池 应用为例进行演示. PVE 证书位置 官方文档: https://pve.proxmox.com/wiki/Pr…...

ubuntu 22.04安装Eigen

1 安装 git clone https://gitlab.com/libeigen/eigen.gitcd eigen mkdir build cd build cmake ..sudo make install... -- Installing: /usr/local/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry -- Installing: /usr/local/include/eigen3/unsupported/Eige…...

vue使用audio 音频实现播放与关闭(可用于收到消息给提示音效)

这次项目中因为对接了即时通讯 IM&#xff0c;有个需求就是收到消息需要有个提示音效&#xff0c;所以这里就想到了用HTML5 提供的Audio 标签&#xff0c;用起来也是很方便&#xff0c;首先让产品给你个提示音效&#xff0c;然后你放在项目中&#xff0c;使用Audio 标签&#x…...

STM32 产生Hard Fault 调试方法

STM32 产生hard-fault 调试方法 需求 当STM32 产生Hard Fault的时候我们希望可以打印出一些重要的寄存器信息&#xff0c;然后定位代码出错的地方。 参考 https://github.com/ferenc-nemeth/arm-hard-fault-handler 原理 STM32代码运行的时候一般在是main函数while(1)中循…...

java-selenium 截取界面验证码图片并对图片文本进行识别

参考链接 1、需要下载Tesseract工具并配置环境变量&#xff0c;步骤如下 Tesseract-OCR 下载安装和使用_tesseract-ocr下载-CSDN博客 2、需要在IDEA中导入tess4j 包&#xff1b;在pom.xml文件中输入如下内容 <!--导入Tesseract 用于识别验证码--><dependency>&l…...

【Linux】进程信号 --- 信号产生

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…...

Docker 容器中的 Docker Compose 简介

Docker Compose是什么 Docker Compose是一个用于定义和运行多个Docker容器的工具。它是Docker官方提供的开源项目&#xff0c;用于实现对Docker容器集群的快速编排。通过Compose&#xff0c;开发者可以使用YAML文件&#xff08;通常是docker-compose.yml文件&#xff09;来配置…...

手机日历如何与Outlook同步

有很多人和我一样遇到手机日历与Outlook同步问题&#xff0c;如新版outlook与小米日历的同步问题 - Microsoft Community&#xff0c;outlook账号无法在手机端自带的电子邮件App以exchange模式登录 - Microsoft Community&#xff0c;在安卓手机端无法电子邮件App以exchange模式…...

python基础语法 007 文件操作-1读取写入

1 文件操作 1.1 什么时候用文件操作&#xff1f; 打开文档写东西看东西拿文档做统计 在python 文档操作作用 存储数据读取数据 打开文件有什么用&#xff1f; 读取数据&#xff0c;写入数据不管什么数据都可以用open打开&#xff0c;如可复制一张图片 1.2 open() 读取,…...

C语言·函数(超详细系列·全面总结)

前言&#xff1a;Hello大家好&#x1f618;&#xff0c;我是心跳sy&#xff0c;为了更好地形成一个学习c语言的体系&#xff0c;最近将会更新关于c语言语法基础的知识&#xff0c;今天更新一下函数的知识点&#xff0c;我们一起来看看吧&#xff01; 目录 一、函数是什么 &a…...

Windows及Linux系统加固

君衍. 一、Windows加固1、配置简介2、账户配置3、本地配置4、安全设置 二、Linux加固1、配置简介2、网络配置3、日志和审计配置4、访问认证和授权配置5、系统运维配置 一、Windows加固 1、配置简介 通常在Windows安全配置中有两类对象 一类是Windows Server&#xff0c;如win …...

Postman安装使用教程(详解)

目录 一、Postman是什么 二、安装系统要求 三、下载Postman 四、注册和登录Postman 五、创建工作空间 六、创建请求 一、Postman是什么 在安装之前&#xff0c;让我们先来简单了解一下Postman。Postman是一个流行的API开发工具&#xff0c;它提供了友好的用户界面用于发送…...

【嵌入式开发之标准I/O】文件I/O的基本概念,打开、关闭、定位函数及实例

文件I/O和标准I/O 什么是文件I/O?什么是标准I/O? 文件I/O&#xff1a;文件I/O又称系统IO&#xff0c;系统调用&#xff0c;称之为不带缓存的IO&#xff08;unbuffered I/O)。是操作系统提供的API接口函数。不带缓存指的是每个read&#xff0c;write都调用内核中的一个系统调…...

C++文件操作-文本文件-读文件

第一种 #include<iostream>//1、包含头文件 fstream #include<fstream> using namespace std;void test01() {//2、创建流对象ifstream ifs;//3、打开文件 并且判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "…...

二叉树精选面试题

&#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ 1. 相同的树 100. 相同的树 同时遍历两棵树 判断结构相同&#xff1a;也就是在遍历的过程中&#xff0c;如果有一个节点为null&#xff0c;另一棵树的节点不为null&#xff0c;那么结构就不相同 判断值相同&#xff1a;只需…...

如何在 Android 中删除和恢复照片

对于智能手机用户来说&#xff0c;相机几乎已经成为一种条件反射&#xff1a;你看到值得注意的东西&#xff0c;就拍下来&#xff0c;然后永远保留这段记忆。但如果那张照片不值得永远保留怎么办&#xff1f;众所周知&#xff0c;纸质快照拿在手里很难舍弃&#xff0c;而 Andro…...

HarmonyOS Next原生应用开发-从TS到ArkTS的适配规则(六)

一、仅支持一个静态块 规则&#xff1a;arkts-no-multiple-static-blocks 级别&#xff1a;错误 ArkTS不允许类中有多个静态块&#xff0c;如果存在多个静态块语句&#xff0c;请合并到一个静态块中。 TypeScript class C {static s: stringstatic {C.s aa}static {C.s C.s …...

5个场景告诉你:为什么你需要这款免费的窗口分辨率神器

5个场景告诉你&#xff1a;为什么你需要这款免费的窗口分辨率神器 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否曾遇到过这些困扰&#xff1f;游戏内分辨率选项有限&#xff0c;无法满足你对极致画质的…...

Shoelace自动加载器:终极懒加载Web组件完整指南 [特殊字符]

Shoelace自动加载器&#xff1a;终极懒加载Web组件完整指南 &#x1f680; 【免费下载链接】shoelace Shoelace is now Web Awesome. Come see what’s new! 项目地址: https://gitcode.com/gh_mirrors/sh/shoelace Shoelace自动加载器是Shoelace Web组件库中一个革命性…...

从理论到实践:LQR在二自由度云台控制系统中的参数整定与仿真验证

1. LQR控制器的工程实践意义 二自由度云台在工业自动化、智能监控等领域应用广泛&#xff0c;但传统PID控制往往难以兼顾快速响应和稳定性的双重需求。LQR&#xff08;线性二次型调节器&#xff09;作为现代控制理论中的经典方法&#xff0c;通过优化目标函数实现对系统的精确控…...

别再只用GitHub了!手把手教你用GitLab搭建团队专属代码仓库(从群组到项目实战)

别再只用GitHub了&#xff01;手把手教你用GitLab搭建团队专属代码仓库&#xff08;从群组到项目实战&#xff09; 在开源生态中&#xff0c;GitHub无疑是代码托管平台的代名词。但对于需要私有化部署和精细权限控制的团队而言&#xff0c;GitLab提供了更完整的DevOps解决方案。…...

Neo-Launcher数据库架构:数据存储和管理的深度解析

Neo-Launcher数据库架构&#xff1a;数据存储和管理的深度解析 【免费下载链接】Neo-Launcher Neo-Launcher 项目地址: https://gitcode.com/gh_mirrors/ne/Neo-Launcher Neo-Launcher是一款由Neo Collective开发的开源启动器应用&#xff0c;其高效的数据存储和管理系统…...

自动驾驶卡车软件平台:技术架构、商业模式与商业化落地解析

1. 自动驾驶卡车软件平台全景解析最近几年&#xff0c;自动驾驶卡车这个赛道真是热闹非凡&#xff0c;感觉每周都有新融资、新合作或者新路测的消息出来。作为一个在汽车电子和软件行业摸爬滚打了十几年的老工程师&#xff0c;我一直在密切关注这个领域的动态。自动驾驶卡车&am…...

Claude Code环境变量配置全解析:从入门到精通

1. 项目概述&#xff1a;Claude Code 环境变量配置生成器如果你和我一样&#xff0c;是 Claude Code 的深度用户&#xff0c;那你一定经历过这样的时刻&#xff1a;面对一个复杂的开发任务&#xff0c;想调整一下模型的思考深度&#xff08;Effort Level&#xff09;来平衡成本…...

小熊猫Dev-C++:零配置C/C++开发环境的终极指南

小熊猫Dev-C&#xff1a;零配置C/C开发环境的终极指南 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 小熊猫Dev-C&#xff08;Red Panda Dev-C&#xff09;是一款专为C/C开发者设计的现代化集成开发环境&…...

Midjourney 2026将取消/imagine?不,它正悄悄部署「自然语言-图像-3D资产」三合一原生工作流(附实测对比数据)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney 2026战略转向&#xff1a;从文本生成图像到原生三维资产创作范式跃迁 Midjourney 在 2026 年正式终止对纯 2D 图像输出的默认支持&#xff0c;全面启用 v6.5 “Tesseract” 引擎&#xff0c…...

党建知识竞赛系统推荐:满足各级党组织需求的智能化工具

&#x1f6a9; 党建知识竞赛系统推荐&#xff1a;满足各级党组织需求的智能化工具创新党员教育形式 提升学习实效 推动智慧党建&#x1f3af; 一、核心价值与功能需求在新时代加强党的建设背景下&#xff0c;如何创新党员教育形式、提升学习实效&#xff0c;是各级党组织面临…...