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

Express (nodejs) 相关

Express 相关

长乐未央学习视频@东哥

1. 安装 express-generator 脚手架,新建项目

  1. 执行命令

npm install express express-generator@4 -g

同时安装 express,和 express 脚手架.

npm install express express-generator@4 -g
  1. 通过 express 脚手架创建 express 项目

express --no-view iike-api

cd iike-api

npm install

npm start (启动项目)

指令解释:

  • --no-view 表示 不需要视图模板
  • iike-api 表示 express 项目名称
  • cd iike-api 进入 iike-api 项目中
express --no-view iike-apicd iike-apinpm installnpm start
  1. 访问本地地址

http://localhost:3000/

页面显示 Express Welcome to Express ,表示项目启动成功

2. JSON 格式配置

  1. 在 express 项目启动成功后,访问本地地址;会发现,是一个 html 格式.
  2. express 项目一般用来做接口使用,所以我们需要将 html 格式转化为 json 格式.
  3. 操作如下:
  1. iike-api\routes\index.js 修改下面代码
router.get("/", function (req, res, next) {res.render("index", { title: "Express" });
});// 替换为
router.get("/", function (req, res, next) {res.json({ message: "Hello Nodejs!" });
});
  1. 删除 iike-api\public\index.html 文件

  2. 重启 express 服务

    ctrl + c 终止, npm start 重启.

  3. 刷新页面后,拿到的信息就是 json 格式的了

3. 推荐浏览器处理 JSON 格式的插件

JSON-handle ,

  • edge 浏览器可以直接在应用商店中下载

4. 安装 nodemon 解决频繁重启问题

  1. 下载 nodemon 依赖
npm i nodemon
  1. 配置 package.json 文件.

    将启动脚本 node ./bin/www 改为 nodemon ./bin/www

  "scripts": {"start": "nodemon ./bin/www"},
  1. 第一次配置,记得重启服务

5. 项目结构 与 代码解析

  1. routes 文件夹(重要),不同网址对应要不同的程序.后续开发基本都会在 routes 中进行
  2. app.js 配置跨域 等配置,都会在这里

6. 使用 Docker 运行 mysql (docker 运行不了的话可以使用 小皮面板)

  1. 安装 docker

    docker 官网下载

7. 服务器环境配置软件推荐

宝塔面板

小皮面板

小皮面板 mysql 数据库连接

  1. 打开 navicat 或 dbeaver ,数据库可视化管理工具。

  2. 以 dbeaver 为例,创建新连接

    • 服务器地址: localhost (一般不变)
    • 端口: 3306 (一般不变)
    • 数据库(名称):express_demo
    • 用户名:iike (自定义)
    • 密码:666 (自定义)
    • 最后点击完成数据库就建好了。
  3. 打开小皮面板 ,首页启动 mysql 5… 。

  4. 小皮面板 ,点击数据库 ,创建数据库。(输入数据库名称,用户名,密码)

    • 这里的数据库名称 就是上面再 dbeaver 中创建的数据库名称。
    • 用户名密码 同样是上述中生成的。
  5. 回到 dbeaver ,右键创建好的数据库,点击连接。

  6. 连接成功后,就可以新建数据表了。

8. Express 创建 mysql 连接

  1. 在根目录新建一个 database 目录,用来存放 数据库相关操作。
  2. 新建一个 config.js 文件,用来初始化 mysql 连接操作。

database/config.js 文件内容如下

注意,引入 mysql 之前,记得全局下载一下,npm i mysql

//db.jsconst mysql = require("mysql");
//连接数据库module.exports = {// 数据库基础配置config: {host: "localhost", // 服务器地址port: 3306, // 端口user: "iike", // 数据库用户名password: "666666", // 密码database: "express_demo", // 数据库名称},// 连接数据库,使用 mysql的连接池连接方式sqlContent: function (sql, sqlArr, callBack) {var pool = mysql.createPool(this.config);pool.getConnection((err, connection) => {console.log("mysql-123");if (err) {console.log(err, "连接失败");return;}// 事件驱动回调connection.query(sql, sqlArr, callBack(err, connection));// 释放连接connection.release();});},
};

9. routes 文件引入 mysql

在 routes/index.js 文件中配置如下代码

const express = require("express");
const router = express.Router();
var dbCongif = require("../dataBase/config.js");/* GET home page. */
router.get("/", function (req, res, next) {// 数据库相关操作var sql = "SELECT* FROM cate";var sqlArr = [];var callBack = (err, conn) => {if (err) {console.log(err, "123");console.log("数据库连接失败");} else {conn.query(sql, function (err, result) {if (err) {console.log("查询失败");} else {res.send({list: result,});}});}};dbCongif.sqlContent(sql, sqlArr, callBack);
});module.exports = router;

查询数据表时需注意

!!! 如果控制台报错

  1. Error: ER_NO_SUCH_TABLE: Table 'express_demo.newtable' doesn't exist ,数据表不存在。

    • 一定要注意,新建的数据表是否保存
    • 注意,sql 查询时的数据表名称大小写问题。
  2. 数据表保存时,报错 Incorrect table definition; there can be only one auto column and it must be defined (没有主键)

    • 选择约束,新建一个约束(id),设置主键。

配置好查询的 sql 后,访问 localhose:3000

  1. 在我们配置好 mysql 连接后,就可以查询 数据表中的内容了。
  2. 访问 localhost:3000 , 就回将数据库中的数据以 json 的格式展示在页面中。

10. api.js 文件注意事项

const indexRouter = require("./routes/index");
const usersRouter = require("./routes/users");
const adminRouter = require("./routes/admin/articles");app.use("/", indexRouter);
app.use("/users", usersRouter);
app.use("/admin/articles", adminRouter);// 访问 http://localhost:3000/users 路径,返回 'respond with a resource'
// 访问 http://localhost:3000/users/users 路径,返回 '注意路由路径拼写'// users.js 文件内容
var express = require("express");
var router = express.Router();/* GET users listing. */// '/'  对应 app.js 中的 /users
router.get("/", function (req, res, next) {res.send("respond with a resource");
});router.get("/users", function (req, res, next) {res.send("注意路由路径拼写");
});module.exports = router;

相关文章:

Express (nodejs) 相关

Express 相关 长乐未央学习视频东哥 1. 安装 express-generator 脚手架,新建项目 执行命令 npm install express express-generator4 -g 同时安装 express,和 express 脚手架. npm install express express-generator4 -g通过 express 脚手架创建 express 项目 exp…...

【Harmony Next】多个图文配合解释DevEco Studio工程中,如何配置App相关内容,一次解决多个问题?

解决App配置相关问题列表 1、Harmony Next如何配置图标? 2、Harmony Next如何配置App名称? 3、Harmony Next如何配置版本号? 4、Harmony Next如何配置Bundle ID? 5、Harmony Next如何配置build号? 6、Harmony Next多语言配置在哪…...

台球助教平台开发球厅预约选择机制和助教匹配选择机制详细需求实例说明(第十四章)

以下是对台球助教系统相关功能的详细规划描述: 一、预约助教功能 二、选择球厅练球功能 三、选择陪练时间功能 四、下单订单支付功能 一、预约助教功能 助教信息展示 在专门的 “助教预约” 页面,以列表形式呈现所有可供预约的台球助教。每个助教条目…...

MyBatis通过注解配置执行SQL语句原理源码分析

文章目录 前置准备流程简要分析配置文件解析加载 Mapper 接口MapperAnnotationBuilder解析接口方法注解parseStatement 方法详解MapperBuilderAssistant 前置准备 创建一个mybatis-config.xml文件&#xff0c;配置mapper接口 <mappers><!--注解配置--><mapper…...

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述

定义 开放词汇目标检测&#xff08;Open-Vocabulary Object Detection, OVOD&#xff09;是一种目标检测任务&#xff0c;旨在检测和识别那些未在训练集中明确标注的物体类别。传统的目标检测模型通常只能识别有限数量的预定义类别&#xff0c;而OVOD模型则具有识别“开放词汇…...

PHP基础

PHP代码标记 标准标记&#xff1a;<?php ?> PHP注释 单行&#xff1a;// # 多行&#xff1a;/* */ 两种浏览器输出文本的方式&#xff1a;echo 和 print echo <?php header("Content-Type:text/html;charsetutf-8"); // 输出字符串 ec…...

启用WSL后,使用ssh通道连接ubuntu

Enjoy WSL 目的 启用wsl后&#xff0c;使用windows自带的powershell、cmd操作linux还是不太好使。以下介绍开启ssh通道&#xff0c;并保证能在ssh通道下&#xff0c;也能正常使用wsl中的win命令行&#xff0c;以及正常打开gui应用。 离线更新WSL&#xff0c;请跳转链接:离线…...

GMSSL的不同python版本

链接1&#xff08;推荐&#xff09; 这个使用的库&#xff0c;是gm ssl 3.1.1。为什么推荐&#xff1f;因为这个有C源码。 GitHub - GmSSL/GmSSL-Python: Python binding to the GmSSL library 链接2 这个使用的库&#xff0c;是gmssl 3.2.2。搜索3.2.2&#xff0c;找不到相…...

【数理统计】参数估计

文章目录 点估计矩估计法最大似然估计法 区间估计单个正态总体参数的区间估计均值 μ \mu μ 的区间估计方差 σ 2 \sigma^2 σ2 的区间估计 两个正态总体参数的区间估计&#xff08;略&#xff09;补充&#xff1a;单侧置信区间 点估计 矩估计法 【定义】设 X X X 是随机…...

ios 混合开发应用白屏问题

一、问题场景 项目业务中某个前端页面中使用了多个echart 组件来显示历史数据&#xff0c; 在反复切换到这个页面后&#xff0c;会出现白屏问题。 二、问题分析 0x116000ab0 - GPUProcessProxy::didClose: 0x116000ab0 - GPUProcessProxy::gpuProcessExited: reasonCrash 0x11…...

对分布式系统的理解以及redis的分布式实现

对分布式系统有哪些了解? 分布式系统是由多个独立的计算节点(通常是计算机或服务器)组成的系统,这些节点通过网络相互通信和协作,共同完成任务。分布式系统的设计旨在提供可扩展性、容错性和高可用性,适用于大规模的数据处理和服务场景。 1. 分布式系统的核心特点 分布…...

VS项目,在生成的时候自动修改版本号

demo示例&#xff1a;https://gitee.com/chenheze90/L28_AutoVSversion 可通过下载demo运行即可。 原理&#xff1a;通过csproject项目文件中的Target标签&#xff0c;实现在项目编译之前对项目版本号进行修改&#xff0c;避免手动修改&#xff1b; 1.基础版 效果图如下 部…...

【蓝桥杯】43699-四平方和

四平方和 题目描述 四平方和定理&#xff0c;又称为拉格朗日定理&#xff1a; 每个正整数都可以表示为至多 4 个正整数的平方和。如果把 0 包括进去&#xff0c;就正好可以表示为 4 个数的平方和。 比如&#xff1a; 502021222 712121222; 对于一个给定的正整数&#xff0c;可…...

我的“双胞同体”发布模式的描述与展望

当被“激情”晕染&#xff0c;重创标题、摘要探索“吸睛”。 (笔记模板由python脚本于2024年12月19日 15:23:44创建&#xff0c;本篇笔记适合喜欢编撰csdn博客的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免…...

flask_socketio 以继承 Namespace方式实现一个网页聊天应用

点击进入上一篇&#xff0c;可作为参考 实验环境 python 用的是3.11.11 其他环境可以通过这种方式一键安装&#xff1a; pip install flask3.1.0 Flask-SocketIO5.4.1 gevent-websocket0.10.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pip list 详情如下&am…...

go mod tidy 命令

go mod tidy 是 Go 语言的命令&#xff0c;用于清理和更新 go.mod 和 go.sum 文件。它主要有以下功能&#xff1a; 移除未使用的依赖项&#xff1a;从 go.mod 文件中删除那些在代码中不再使用的依赖项。 添加缺失的依赖项&#xff1a;添加代码中使用但尚未记录在 go.mod 文件中…...

(11)YOLOv9算法基本原理

一、YOLOv9 的结构 YOLOv9 引入了可编程梯度信息&#xff08;PGI&#xff09;&#xff0c;以及基于梯度路径规划的新型轻量级网络架构&#xff0c;为目标检测领域带来了突破性的成果。 Yolov9 网络模型主要由BackBone&#xff08;主干网络&#xff09;、Neck&#xff08;颈层&…...

python学opencv|读取图像(十七)认识alpha通道

【1】引言 前序学习进程中&#xff0c;我们已经掌握了RGB和HSV图像的通道拆分和合并&#xff0c;获得了很多意想不到的效果&#xff0c;相关链接包括且不限于&#xff1a; python学opencv|读取图像&#xff08;十二&#xff09;BGR图像转HSV图像-CSDN博客 python学opencv|读…...

中小学教室多媒体电脑安全登录解决方案

中小学教室多媒体电脑面临学生随意登录的问题&#xff0c;主要涉及到设备使用、网络安全、教学秩序等多个方面。以下是对这一问题的详细分析&#xff1a; 一、设备使用问题 1. 设备损坏风险 学生随意登录可能导致多媒体电脑设备过度使用&#xff0c;增加设备损坏的风险。不当…...

Redis篇之Redis高可用模式参数调优,提高Redis性能

1. Redis高可用模式核心 Redis高可用模式的核心是使用主从复制和自动故障转移机制来确保系统在某些节点发生故障时仍然可以正常工作。 常用的高可用架构包括Redis Sentinel模式和Redis Cluster模式&#xff0c;其中Sentinel模式是为了提供高可用性而专门设计的解决方案。 在Re…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...