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

http://www.mrgr.cn/news/80861.html

相关文章:

  • [CKS] CIS基准测试,修复kubelet和etcd不安全项
  • Electron-Vue 开发下 dev/prod/webpack server各种路径设置汇总
  • 【图像配准】方法总结
  • 人工智能 AI 大模型研究设计与实践应用技术研究报告
  • Gin- Cookie\Session相关
  • 心情追忆- Nginx + OpenResty 构建高可用网关
  • [LeetCode-Python版] 定长滑动窗口1(1456 / 643 / 1343 / 2090 / 2379)
  • 【NLP 16、实践 ③ 找出特定字符在字符串中的位置】
  • jmeter中的prev对象
  • Qt学习笔记第71到80讲
  • 字符串类算法
  • Linux-Profile工具
  • QT实战经验总结 连载中
  • EE308FZ_Sixth Assignment_Beta Sprint_Sprint Essay 3
  • clickhouse-副本和分片
  • 【Java】4、虚拟机 JVM
  • 华为数通最新题库 H12-821 HCIP稳定过人中
  • Cocos Creator 试玩广告开发
  • Ubuntu24版 最新安装Nvidia显卡驱动方式
  • GIT命令使用手册(详细实用版)
  • Hive其一,简介、体系结构和内嵌模式、本地模式的安装
  • Android OpenGLES2.0开发(九):图片滤镜
  • 实现多条件搜索
  • 简易分页制作
  • 深入理解Kafka:核心设计与实践原理读书笔记
  • Redis 三种部署方式实践