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

【读书后台管理系统】—后端框架搭建(二)

【读书后台管理系统】—后端框架搭建(二)

一、 Node 简介

Node 是一个基于 V8 引擎的 Javascript 运行环境,它使得 Javascript 可以运行在服务端,直接与操作系统进行交互,与文件控制、网络交互、进程控制等

Chrome 浏览器同样是集成了 V8 引擎的 Javascript 运行环境,与 Node 不同的是他们向 Javascript 注入的内容不同,Chrome 向 Javascript 注入了 window 对象,Node 注入的是 global,这使得两者应用场景完全不同,Chrome 的 Javascript 所有指令都需要通过 Chrome 浏览器作为中介实现

二、Express 简介

express 是一个轻量级的 Node Web 服务端框架,同样是一个人气超高的项目,它可以帮助我们快速搭建基于 Node 的 Web 应用

📢项目初始化

创建项目

mkdir admin-imooc-node
cd admin-imooc-node
npm init -y

安装依赖

npm i -S express

创建 app.js

const express = require('express')// 创建 express 应用
const app = express()// 监听 / 路径的 get 请求
app.get('/', function(req, res) {res.send('hello node')
})// 使 express 监听 5000 端口号发起的 http 请求
const server = app.listen(5000, function() {const { address, port } = server.address()console.log('Http Server is running on http://%s:%s', address, port)
})

三、Express 三大基础概念

1️⃣中间件
中间件是一个函数,在请求和响应周期中被顺序调用

注意:中间件需要在响应结束前被调用

const myLogger = function(req, res, next) {console.log('myLogger')next()
}app.use(myLogger)

2️⃣路由

应用如何响应请求的一种规则

响应 / 路径的 get 请求:

app.get('/', function(req, res) {res.send('hello node')
})

响应 / 路径的 post 请求:

app.post('/', function(req, res) {res.send('hello node')
})

规则主要分两部分:

请求方法:get、post…
请求的路径:/、/user、/.*fly$/…

3️⃣异常处理

通过自定义异常处理中间件处理请求中产生的异常

app.get('/', function(req, res) {throw new Error('something has error...')
})const errorHandler = function (err, req, res, next) {console.log('errorHandler...')res.status(500)res.send('down...')
}app.use(errorHandler)

四、项目框架搭建

路由

安装 boom 依赖:

npm i -S boom

创建 router 文件夹,创建 router/index.js:

const express = require('express')
const boom = require('boom')
const userRouter = require('./user')
const {CODE_ERROR
} = require('../utils/constant')// 注册路由
const router = express.Router()router.get('/', function(req, res) {res.send('欢迎学习读书后台管理系统')
})// 通过 userRouter 来处理 /user 路由,对路由处理进行解耦
router.use('/user', userRouter)/*** 集中处理404请求的中间件* 注意:该中间件必须放在正常处理流程之后* 否则,会拦截正常请求*/
router.use((req, res, next) => {next(boom.notFound('接口不存在'))
})/*** 自定义路由异常处理中间件* 注意两点:* 第一,方法的参数不能减少* 第二,方法的必须放在路由最后*/
router.use((err, req, res, next) => {const msg = (err && err.message) || '系统错误'const statusCode = (err.output && err.output.statusCode) || 500;const errorMsg = (err.output && err.output.payload && err.output.payload.error) || err.messageres.status(statusCode).json({code: CODE_ERROR,msg,error: statusCode,errorMsg})
})module.exports = router

创建 router/use.js:

const express = require('express')const router = express.Router()router.get('/info', function(req, res, next) {res.json('user info...')
})module.exports = router

创建 utils/constant:

module.exports = {CODE_ERROR: -1
}

验证 /user/info:

"user info..."

验证 /user/login:

{"code":-1,"msg":"接口不存在","error":404,"errorMsg":"Not Found"}

相关文章:

【读书后台管理系统】—后端框架搭建(二)

【读书后台管理系统】—后端框架搭建(二) 一、 Node 简介 Node 是一个基于 V8 引擎的 Javascript 运行环境,它使得 Javascript 可以运行在服务端,直接与操作系统进行交互,与文件控制、网络交互、进程控制等 Chrome …...

【DLoopDetector(C++)】DBow2词袋模型loop close学习

0.前言 最近读了两篇论文,论文作者开源了一种基于词袋模型DBoW2库的DLoopDetector算法,自己运行demo测试一下 对应论文介绍:Bags of Binary Words for Fast Place Recognition in Image Sequences 开源项目Github地址:https://gi…...

什么是CAS机制?

CAS和Synchronized的区别是什么?适合什么样的场景?有什么样的优点和缺点? 示例程序:启动两个线程,每个线程中让静态变量count循环累加100次。 public class ThreadTest {private static int count 0;public static …...

Java多态详解

下面讲解一下Java中的多态机制,力求用最通俗易懂的语言,最精炼的话语,最生动的例子,深入浅出Java多态,帮助读者轻松掌握这个知识点。 什么是多态? 多态是指同一种行为具有多个不同表现形式的能力。 多态…...

Android中简单实现Spinner的数据绑定

Android中简单实现Spinner的数据绑定 然后声明对象实例并加入到arraylist里面,并设置spinner的适配器 Spinner Sp (Spinner).............// List<CItem > lst new ArrayList<CItem>(); CItem ct new CItem ("1","测试"); lst.Add(ct)…...

【版本控制工具二】Git 和 Gitee 建立联系

文章目录 前言一、Git 和 Gitee 建立联系1.1 任意目录下&#xff0c;打开 git bash 命令行&#xff0c;输入以下命令生成公钥1.2 配置SSH公钥1.3 进行全局配置 二、其它相关Git指令2.1 常用指令2.2 指令操作可能出现的问题 三、补充3.1 **为什么要先commit&#xff0c;然后pull…...

最新AI智能创作系统ChatGPT商业源码+详细图文搭建部署教程+AI绘画系统

一、AI系统介绍 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&am…...

【算法与数据结构】--目录

第一部分&#xff1a;算法基础 第一章&#xff1a;算法入门第二章&#xff1a;数据结构概述第三章&#xff1a;算法设计与分析 3.1 贪心算法3.2 动态规划3.3 分治算法3.4 回溯算法 第二部分&#xff1a;常见数据结构 第四章&#xff1a;数组和链表 4.1 数组4.2 链表4.3 比较…...

爱普生LQ1900KIIH复位方法

爱普生EPSON 1900KIIH是一部通用针式打印机&#xff0c;136列&#xff08;10cpi下&#xff09;的打印宽度&#xff0c;缓冲区128KB&#xff0c;打印速度为270字/秒。 打印机类型 打印方式&#xff1a;24针击打式点阵打印、打印方向&#xff1a;双向逻辑查找、安全规格标准&am…...

字段位置顺序对值的影响

Unity中验证AB加载场景时报错&#xff1a; Cannot load scene: Invalid scene name (empty string) and invalid build index -1 报错原因是因为把字段放在了Start函数后面(图一)改成(图二)就好了。图一中协程使用的sceneBName字段值为null。 图一&#xff1a; 图二&#xff1a…...

pytorch_神经网络构建2(数学原理)

文章目录 深层神经网络多分类深层网络反向传播算法优化算法动量算法Adam 算法 深层神经网络 分类基础理论: 交叉熵是信息论中用来衡量两个分布相似性的一种量化方式 之前讲述二分类的loss函数时我们使用公式-(y*log(y_)(1-y)*log(1-y_)进行误差计算 y表示真实值,y_表示预测值 …...

Oracle SQL Developer 中查看表的数据和字段属性、录入数据

在Oracle SQL Developer中&#xff0c;选中一个表时&#xff0c;右侧会列出表的情况&#xff1b;第一个tab是字段的名称、数据类型等属性&#xff1b; 切换到第二个tab&#xff0c;显示表的数据&#xff1b; 这和sql server management studio不一样的&#xff1b; 看一下部门…...

java docker图片叠加水印中文乱码

java docker图片叠加水印中文乱码 技术交流博客 http://idea.coderyj.com/ 1.由于项目需要后端需要叠加图片水印,但是中文乱码,导致叠加了之后 中文是框框 2.经过多方查找基本都说在 linux下安装字体就解决了,但是尝试了均无效 3.后来忽然想到我的项目是用docker打包部署的,不…...

string类的使用方式的介绍

目录 前言 1.什么是STL 2. STL的版本 3. STL的六大组件 4.STL的缺陷 5.string 5.1 为什么学习string类&#xff1f; 5.1.1 C语言中的字符串 5.2 标准库中的string类 5.3 string类的常用接口的使用 5.3.1 构造函数 5.3.2 string类对象的容量操作 5.3.3 string类对象…...

FFmpeg 命令:从入门到精通 | 命令行环境搭建

FFmpeg 命令&#xff1a;从入门到精通 | 命令行环境搭建 FFmpeg 命令&#xff1a;从入门到精通 | 命令行环境搭建安装 FFmpeg验证 FFmpeg 是否安装成功 FFmpeg 命令&#xff1a;从入门到精通 | 命令行环境搭建 安装 FFmpeg 进入 FFmpeg 官网&#xff1a; 点击 Download&#…...

《从零开始学ARM》勘误

1. 50页 2 51页 3 236页 14.2.3 mkU-Boot 修改为&#xff1a; mkuboot 4 56页 修改为&#xff1a; 位[31&#xff1a;24]为条件标志位域&#xff0c;用f表示&#xff1b; 位[23&#xff1a;16]为状态位域&#xff0c;用s表示&#xff1b; 位[15&#xff1a;8]为扩展位域&…...

10款录屏软分析与选择使用,只看这篇文章就轻松搞定所有,高清4K无水印录屏,博主UP主轻松选择

录屏软件整理 如下为录屏软件&#xff0c;通过思维导图展示分析介绍&#xff1a; https://www.drawon.cn/template/details/6522bd5e0dad9029a0b528e1 如下为整理的录屏软件列表 名称产地价格支持的平台下载地址说明OBS国外免费开源windows/linux/machttps://obsproject.co…...

android: android:onClick=“@{() -> listener.onItemClick(viewModel)}“

一、前言&#xff1a;在我使用editTest控件的时候&#xff0c;它的下方有一条横线。我想把它去掉然后我在布局文件中这样写 android:background"null" 导致报错&#xff0c;报错信息是&#xff1a; android:onClick"{() -> listener.onItemClick(viewModel)…...

温故知新:dfs模板-843. n-皇后问题

n−n−皇后问题是指将 nn 个皇后放在 nnnn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 nn&#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n…...

刷题笔记28——一直分不清的Kruskal、Prim、Dijkstra算法

图算法刷到这块&#xff0c;感觉像是走了一段黑路快回到家一样&#xff0c;看到这三个一直分不太清总是记混的名字&#xff0c;我满脑子想起的是大学数据结构课我坐在第一排&#xff0c;看着我班导一脸无奈&#xff0c;心想该怎么把这个知识点灌进木头脑袋里边呢。有很多算法我…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...