从零开始搭建一个node.js后端服务项目
目录
一、下载node.js及配置环境
二、搭建node.js项目及安装express框架
三、集成nodemon,实现代码热部署
四、Express 应用程序生成器
一、下载node.js及配置环境
网上很多安装教程,此处就不再赘述了
版本信息
C:\Users\XXX>node -v
v20.15.0C:\Users\XXX>npm -v
10.7.0
了解更多npm知识:npm 中文网 (nodejs.cn)
二、搭建node.js项目及安装express框架
在任意位置创建一个项目文件夹,此处项目文件夹名为test(文件夹路径:D:\test)
以管理员身份打开windows命令行工具或powershell命令行工具(记住:必须以管理员身份打开,不要使用win+R的方式或者文件夹输入cmd的方式打开,否则后面安装express会失败)
左下角搜索框输入命令提示符,打开windows命令行工具(没有安装powershell,推荐使用这种方式)

打开powershell命令行工具(需要安装好powershell才可以打开)

打开命令行,进入创建的test项目文件夹

创建package.json,命令行输入下列命令
npm init

name 项目名称
version 项目版本号
description 项目描述信息
entry point 项目入口文件
test command 项目启动时脚本命令
git repository Git仓库地址
keywords 关键词
author 作者
一路回车键

创建test项目的文件夹出现了pakage.json文件,打开查看里面的信息


安装express
npm install express --save
安装完成,如果是以管理员身份打开的命令行一般不会报错

安装好了后出现下列两个文件(夹)

package文件内容随之改变,由于程序主入口是index.js,所以要创建index.js文件,(文件后缀必须是js)


编辑index.js文件内容,为了快速,我们直接找到express官网,打开里面的示例
Express - 基于 Node.js 平台的 web 应用开发框架 - Express中文文档 | Express中文网 (expressjs.com.cn)
https://www.expressjs.com.cn/
package.json |npm 文档 (npmjs.com)
https://docs.npmjs.com/cli/v10/configuring-npm/package-json
复制Hello World示例 到index.js文件中

修改下打印日志的内容
const express = require('express')
const app = express()
const port = 3000app.get('/', (req, res) => {res.send('Hello World!')
})app.listen(port, () => {console.log(`Example app listening on http://localhost:${port}`)
})
运行项目,输入命令node 入口文件.js

咱这边的入口文件是index.js,稍微修改下
node index.js
启动成功后,浏览器访问服务,输入控制台输出的访问地址:http://localhost:3000

到这,就成功了

为了方便后续管理代码,新建一个名为src文件夹,将之前创建的index.js文件移入src中(index.js移动到src文件夹后,启动时要进入index.js的上一级文件夹再进行启动,D:\test\src> node index.js)
三、集成nodemon,实现代码热部署
不需要热部署,可以不用跟着下面的步骤
安装nodemon,命令行输入:npm i nodemon -g

接下来开始实现热部署,修改pakage.json文件,修改两处:main入口文件和scripts对象
"main": "路径从点击进入项目的下一级开始,直到index.js文件"
{"name": "test","version": "1.0.0","description": "测试创建node项目","main": "src/index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","start":"nodemon --watch src --watch config src/index.js"},"author": "小红","license": "ISC","dependencies": {"express": "^4.21.1"}
}
输入npm run start启动项目,终止项目ctrl+C

热部署的好处在于,不需要重启项目,刷新浏览器即可完成代码更新,如何判断是否成功热部署,一是命令行绿色部分执行代码,二是不重启项目,修改index.js项目的内容,保存后刷新浏览器查看显示内容是否变化,有变化则成功(修改端口则需要重启服务)

四、Express 应用程序生成器
照旧,第一步创建项目文件夹,管理员身份进入命令行,创建pakage.json文件,执行npm init

通过应用生成器工具 express-generator 可以快速创建一个应用的骨架。
你可以通过 npx (包含在 Node.js 8.2.0 及更高版本中)命令来运行 Express 应用程序生成器
npx express-generator

执行完npx express-generator命令就可以快速生成以下项目结构文件

由于项目结构是使用生成器生成的,需要安装项目内的依赖包,执行一下npm install

打开app.js(原默认是index.js,没有选择直接回车,而是在后面输入app.js后再回车,因此我的入口文件就改成了app.js),可以看到,文件内是没有配置端口,以及启动打印的数据的,在这里可以自行手动配置下(app.get()或app.set()需要在var app = express();后面使用)
pakage.json

启动项目npm run start

没有设置打印日志是这样的

实现代码热部署
1.项目安装nodemon,执行npm install nodemon --save
2.优化目录结构,创建src文件夹,将app.js移入

3.修改app.js文件内容,app.js引用路由文件不再是同级关系,二是上一级文件夹,因此将.改为..

4.修改pakage.json文件的scripts对象start的配置,监听src目录

启动项目后,任意修改app.js文件在浏览器上显示的内容
相关文章:
从零开始搭建一个node.js后端服务项目
目录 一、下载node.js及配置环境 二、搭建node.js项目及安装express框架 三、集成nodemon,实现代码热部署 四、Express 应用程序生成器 一、下载node.js及配置环境 网上很多安装教程,此处就不再赘述了 版本信息 C:\Users\XXX>node -v v20.15.0…...
自定义注解和组件扫描在Spring Boot中动态注册Bean(一)
博客主页: 南来_北往 系列专栏:Spring Boot实战 在Spring Boot中,自定义注解和组件扫描是两种强大的机制,它们允许开发者以声明性的方式动态注册Bean。这种方式不仅提高了代码的可读性和可维护性,还使得Spring Boot应用的…...
如何在 IDEA 中导入 Java 项目的 Git 仓库并启动
目录 前言1. 从 Git 仓库导入 Java 项目2. 配置 Maven2.1 配置 Maven 仓库和设置文件2.2 加载依赖 3. 配置 Tomcat 并运行项目3.1 配置 Tomcat3.2 配置 Server URL3.3 启动项目 4. 常见问题与解决方法4.1 Maven 依赖无法下载4.2 Tomcat 部署失败4.3 项目启动后无法访问 结语 前…...
BIO与NIO学习
BIO:同步阻塞IO,客户端一个连接请求(socket)对应一个线程。阻塞体现在: 程序在执行I/O操作时会阻塞当前线程,直到I/O操作完成。在线程空闲的时候也无法释放用于别的服务只能等当前绑定的客户端的消息。 BIO的代码实现 …...
麒麟操作系统:解决umount命令卸载USB存储设备时报“device is busy”错误
麒麟操作系统:解决umount命令卸载USB存储设备时报“device is busy”错误 1、问题描述2、问题解决方法步骤1:尝试强制卸载步骤2:查找占用设备的进程步骤3:终止占用进程步骤4:卸载USB设备 💐The Begin&#…...
Git客户端使用之TortoiseGit和Git
git客户端有两个分别是TortoiseGit和Git Git用于命令行TortoiseGit用于图形界面。无论是Git还是TortoisGit都需要生成公/私钥与github/gitlab建立加密才能使用。 一、先介绍Git的安装与使用 1、下载与安装 安装Git-2.21.0-64-bit.exe(去官网下载最新版64位的),安…...
regionprops函数详解及应用
一、regionprops函数及应用 regionprops 函数在 MATLAB 中是一个强大的工具,用于计算和分析二值图像(或更一般地说,标注矩阵)中连通区域的属性。当处理二值图像时,连通区域通常对应于图像中的前景对象,而背…...
FPAG学习(5)-三种方法实现LED流水灯
目录 1.移位实现LED流水灯 1.1创建工程及源文件代码 1.1.1源代码 1.1.2仿真代码 1.1.3仿真 1.2实验结果 1.2.1总结 2.循环移位实现LED流水灯 3.38译码器实现LED流水灯 3.1原理 3.2源程序 1.移位实现LED流水灯 1.1创建工程及源文件代码 1.1.1源代码 利用计数器计数到…...
科迅网络阅卷系统存在存储型XSS漏洞
漏洞描述 科迅网络阅卷系统存在存储型XSS漏洞,在项目列表添加项目的地方没有过滤用户的输入 漏洞复现 FOFA "科迅网络阅卷系统" POC <script>alert(/xss/)</script> <h1>1</h1>...
【AAOS】Android Automotive 11模拟器源码下载及编译
源码下载 repo init -u https://android.googlesource.com/platform/manifest -b android-11.0.0_r48 repo sync -c --no-tags --no-clone-bundle 源码编译 source build/envsetup.sh lunch car_x86_64-userdebug make -j12 运行效果 emualtor Home Map All apps Setting…...
鹏哥C语言74---第12次作业:OJ题练习
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> //---------------------------------------------------------------------------- 编程题 1:小乐乐走台阶 小乐乐上课需要走n阶台阶,因为她腿比较长࿰…...
Light灯光组件+组件的相关操作+游戏资源的加载
Light灯光组件 Type: Directional:平行光,模仿的是太阳光 Spot:聚光灯 Area:区域光 Color: 颜色值 Mode: RealTime:实时 Mix:混合 Baked:烘焙 Intersity: 光照强度 Indirect Multiplier:光照强度乘数 Shadow Type:影子设置:…...
离岗睡岗预警系统 值班室离岗识别系统Python 结合 OpenCV 库
在众多工作场景中,存在着一些特殊岗位,这些岗位对于人员的专注度和警觉性有着极高的要求。然而,离岗睡岗现象却时有发生,给工作的正常开展和安全保障带来了严重的威胁。本文将深入探讨特殊岗位离岗睡岗的危害,以及如何…...
在Centos中安装、配置与使用atop监控工具
目录 前言1. atop工具的安装1.1 atop简介1.2 atop的安装步骤 2. 安装并配置netatop模块2.1 安装内核开发包2.2 安装所需依赖2.3 下载netatop2.4 解压并安装netatop2.5 启动netatop 3. atop的配置与使用3.1 配置监控周期与日志保留时间3.2 设置定时任务生成日志3.3 启动与查看at…...
前端框架对比与选择:详尽分析
1. 引言 随着互联网技术的飞速发展,前端开发技术也得到了迅猛提升。无论是大型企业还是中小型开发团队,使用前端框架来简化开发过程、提升开发效率已成为一种普遍现象。如今,市场上有众多的前端框架可供选择,如React、Vue.js、Angular等,如何在这些框架中进行选择成为了开…...
FLINK SQL时区问题
SQL时区问题 在Flink SQL中,时区问题是一个需要特别关注的点,因为时区的不一致可能会导致数据的不一致性。以下是对Flink SQL时区问题的详细解释和解决方案: 一、时区问题背景 时间类型与时区: 在Flink SQL中,时间类…...
LibreOffice SDK是LibreOffice软件的开发工具包
LibreOffice SDK是LibreOffice软件的开发工具包,它提供了一系列工具和库,使得开发者可以基于LibreOffice进行扩展或开发新的应用程序。以下是对LibreOffice SDK的详细介绍: 一、下载与安装 下载地址: 可以在LibreOffice的官方网站…...
第十五届蓝桥杯C/C++学B组(解)
1.握手问题 解题思路一 数学方法 50个人互相握手 (491)*49/2 ,减去7个人没有互相握手(61)*6/2 答案:1024 解题思路二 package 十五届;public class Min {public static void main(String[] args) {i…...
在docker的容器内如何查看Ubuntu系统版本
文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境: docker 一、问题描述 由于 lsb_release -a 只能查看自己电脑(宿主机)的系统版本,如果在docker的容器内又应该如何查看Ubuntu系统版本呢ÿ…...
Google Play服务端获取订单和核销订单
官方文档地址:https://developers.google.cn/android-publisher/api-ref/rest/v3/purchases.products?hlzh-cn java依赖 <!-- google play --><dependency><groupId>com.google.apis</groupId><artifactId>google-api-services-and…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
