当前位置: 首页 > 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…...

linux-----进程execl簇函数

execl函数族概述 在Linux中&#xff0c;execl函数族用于在一个进程中加载并执行一个新的程序&#xff0c;它会替换当前进程的地址空间&#xff08;代码段、数据段、堆和栈等&#xff09;。这个函数族包括execl、execlp、execle、execv、execvp和execvpe&#xff0c;它们的主要功…...

Vue + ECharts 实现山东地图展示与交互

这篇文章中&#xff0c;我将逐步介绍如何使用 Vue 和 ECharts 实现一个互动式的地图展示组件&#xff0c;其中支持返回上一层地图、点击查看不同城市的详细信息&#xff0c;以及根据数据动态展示不同的统计信息。 效果图&#xff1a;玩转山东地图&#xff1a;用Echarts打造交互…...

【Verilog】UDP用户原语

User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL&#xff08;简称 Verilog &#xff09;是一种硬件描述语言&#xff0c;用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。 Verilog 不仅定义了语法&…...

问题小记-达梦数据库报错“字符串转换出错”处理

最近遇到一个达梦数据库报错“-6111: 字符串转换出错”的问题&#xff0c;这个问题主要是涉及到一条sql语句的执行&#xff0c;在此分享下这个报错的处理过程。 问题表现为&#xff1a;一样的表结构和数据&#xff0c;执行相同的SQL&#xff0c;在Oracle数据库中执行正常&…...

MyBatis入门的详细应用实例

目录 MyBatis第一章&#xff1a;代理Dao方式的CRUD操作1. 代理Dao方式的增删改查 第二章&#xff1a;MyBatis参数详解1. parameterType2. resultType 第三章&#xff1a;SqlMapConfig.xml配置文件1. 定义properties标签的方式管理数据库的信息2. 类型别名定义 MyBatis 第一章&…...

Sequelize ORM sql 语句工具

Sequelize ORM sql 语句工具 初始化配置 Sequelize orm 配置文章落日沉溺于海 在命令行中全局安装 npm i -g sequelize-clisequelize 执行需要匹配 mysql2 对应的依赖&#xff08;安装 mysql2&#xff09; npm i sequelize mysql2初始化项目 sequelize init熟悉初始化项目后…...

增强LabVIEW与PLC通信稳定性

在工业自动化系统中&#xff0c;上位机与PLC之间的通信稳定性至关重要&#xff0c;尤其是在数据采集和控制任务的实时性要求较高的场景中。LabVIEW作为常用的上位机开发平台&#xff0c;通过合理优化通信协议、硬件接口、数据传输方式以及系统容错机制&#xff0c;可以大大提升…...

UDP系统控制器_音量控制、电脑关机、文件打开、PPT演示、任务栏自动隐藏

UDP系统控制器(ShuiYX) 帮助文档 概述 本程序设计用于通过UDP协议接收指令来远程控制计算机的音量、执行特定命令和其他功能。为了确保程序正常工作&#xff0c;请确认防火墙和网络设置允许UDP通信&#xff0c;并且程序启动后会最小化到托盘图标。 命令格式及说明 音量控制…...

NK细胞杀伐功能如何实现?

在人体的免疫系统中&#xff0c;自然杀伐细胞&#xff08;Natural Killer Cells&#xff0c;简称NK细胞&#xff09;是一类完全自然的免疫激活力量。它们为人体提供了快速反应能力&#xff0c;不依赖类元的特定识别力&#xff0c;但能直接寻找和毁灭毒病感染细胞和肿瘤细胞。那…...

Ubuntu搭建ES8集群+加密通讯+https访问

目录 写在前面 一、前期准备 1. 创建用户和用户组 2. 修改limits.conf文件 3. 关闭操作系统swap功能 4. 调整mmap上限 二、安装ES 1.下载ES 2.配置集群间安全访问证书密钥 3.配置elasticsearch.yml 4.修改jvm.options 5.启动ES服务 6.修改密码 7.启用外部ht…...