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

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-api

cd iike-api

npm install

npm 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.js

const 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.kler.cn/a/444567.html

相关文章:

  • Linux 文件系统目录结构及其简要介绍
  • 开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述
  • python脚本中使用git命令
  • [机器学习]XGBoost(3)——确定树的结构
  • 小鹏“飞行汽车”上海首飞,如何保障智能出行的安全性?
  • ai绘图丨中国新年春节背景第二弹(附关键词
  • 手机无法连接电脑,如何解决(快速排除手机与电脑连接问题的方法)
  • 【2024版】超详细Python+Pycharm安装保姆级教程,Python环境配置和使用指南,看完这一篇就够了
  • 深度学习之目标检测篇——残差网络与FPN结合
  • 007 Qt_按钮类控件
  • docker如何学习与使用入门
  • springboot439校园健康驿站管理系统(论文+源码)_kaic
  • windows C#-查询表达式中使用隐式类型的局部变量和数组
  • Leetcode O(1) 时间插入、删除和获取随机元素
  • 深入理解 Kali Linux:基础命令与操作技巧
  • 【数据库】大二数据库复习范围 (快速版)帮助你快速复习数据库
  • openeuler24.09 系统无需配置 docker 源即可安装 docker 和 docker-composer
  • springboot437校园悬赏任务平台(论文+源码)_kaic
  • Linux函数栈帧
  • 掌握特征提取:机器学习中的 PCA、t-SNE 和 LDA模型
  • [unity3D] 利用 Button 组件实现鼠标悬停显示文字
  • git 不使用第三方软件解决冲突
  • 小米su7 or 保时捷怎么选?使用 Three 实现 3D 汽车展示平台比比看
  • C语言基础十一:指针变量与数组;数组指针及指针数组
  • 【k8s集群应用】K8S二进制安装大致步骤(简略版)
  • windows免登录linux