nodejs+koa+mysql搭建后端服务

nodejs+koa+mysql搭建后端服务

 

前言:

    我将会使用nodejs+koa+mysql去自己尝试学习编写后端服务,然后根据自己写的后前端服务区完成一个微信小程序以及配套的后端管理系统,目的是熟悉nodejs以及mysql,同时呢学习一下怎样的去全方位考虑一个项目的发展以及实现功能等,算是对自己的一个锻炼!

使用技术:

  1. nodejs
  2. koa
  3. mysql
  4. pm2

一.安装nodejs

  点击下载这里呢nodejs安装就不做过多的赘述了,网上的教程很多,安装完成以后呢使用 node -v 查看一下自己的版本,我是用的是12.16.3

  还有一点要知道的是npm是随同nodejs一起安装的包管理工具,所以不用单独下载 输入命令 npm -v 查看版本号

二.安装koa

  首先我们看一下koa简介,然后我们开始安装配置:
  1.npm 安装koa

npm i koa

  2.在新建目录下创建app.js添加如下代码:

  

 1     // 导入koa模块
 2     const Koa = require('koa');
 3     // 创建koa的实例app
 4     const app = new Koa();
 5 
 6     app.use(async ctx => {
 7         ctx.body = "Hello World"
 8     })
 9     // 监听端口
10     app.listen(3000, () => {
11         console.log("服务器已启动,http://localhost:3000");
12     })

   3.启动项目

    node app 当然了启动命令根据你的配置来,我的项目启动命令就是 node bin/www,启动成功以后就会看到小黑框输出“服务器启动成功”。

    我们使用app.listen监听了3000端口,当然了也可以切换为其他端口进行监听,大家可以尝试一下。

  4.Koa中间件

  1. 什么是koa中间件
           koa对网络请求采用了中间件的形式处理,中间件可以介入请求和相应的处理,是一个轻量级的模块,每个中间负责完成某个特定的功能。中间件的通过next函数联系,执行next()后会将控制权交给             下一个中间件,如果没有中间件没有执行next后将会沿路折返,将控制权交换给前一个中间件。
           每个中间件都是一个函数(不是函数将报错),接收两个参数,第一个是\color{red}{ctx}上下文对象,另一个是\color{red}{next}函数
   
 
   2.中间件的使用

    
1 app.use(async (ctx, next) => {
2   const start = new Date()
3   await next()
4   const ms = new Date() - start
5   console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
6 })

  3.中间件有先后顺序

  4.app.use()

    koa2中的app.use()只能用于注册中间件并且必须是生成器函数,反过来说app.use是用来注册koa2中间件的不再像express中的use用来注册路由。参考链接

5.koa路由配置

  1.安装koa-router

    npm i koa-router -D

  2.导入koa-router模块并实例化

1  // 导入koa-router模块
2     const Router = require('koa-router');
3     // 创建koa-router的实例router
4     const router = new Router();

  3.配置接口

1 router.get('/', ctx => {
2         ctx.body = "哈哈哈"
3     })
4     app.use(router.routes());

  4.koa-router 提供了 .get、.post、.put 和 .del 接口来处理各种请求,但实际业务上,我们大部分只会接触到 POST 和 GET,所以接下来只针对这两种请求类型来说明。

    4.1:get:用于接收GET请求

1 router.get('/get', ctx => {
2         ctx.body = "哈哈哈"
3     })
4     app.use(router.routes());

    4.2:post:用于接收POST请求

1  router.post('/', ctx => {
2         ctx.body = "哈哈哈"
3     })
4     app.use(router.routes());

    4.3:all:用于接收GET与POST请求

1 router.all('/', ctx => {
2         ctx.body = "哈哈哈"
3     })
4     app.use(router.routes());

  5.获取请求参数

    5.1:获取get请求参数:ctx.query

1 router.get('/get', ctx => {
2           ctx.body = ctx.query
3       })

    5.2:获取post请求参数:ctx.request.body

1  router.get('/get', ctx => {
2         ctx.body = ctx.request.body
3     })

 6.处理koa请求跨域问题

  下载koa2-cors:npm i --save koa2-cors

  引入模块:

1 const cors = require('koa-cors')
2 
3 // 处理跨域,放到中间件的最前面
4 app.use(cors());

三.安装mysql

mysql安装也将不去做太多的讲解,毕竟不专业,也是按照教程来安装调试的,所以有需求的去自行百度,有问题的可以留言探讨!

四.pm2

PM2的主要特性:

  • 内建负载均衡(使用Node cluster 集群模块)
  • 后台运行
  • 0秒停机重载,我理解大概意思是维护升级的时候不需要停机.
  • 具有Ubuntu和CentOS 的启动脚本
  • 停止不稳定的进程(避免无限循环)
  • 控制台检测
  • 提供 HTTP API
  • 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

安装:

npm install -g pm2

用法

$ npm install -g pm2 命令行全局安装pm2
$ pm2 start app.js 启动app项目
$ pm2 list 列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,因为没处理的异常。

$ pm2 monit 监视每个node进程的CPU和内存的使用情况

$ pm2 logs 显示所有进程日志
$ pm2 stop all 停止所有进程
$ pm2 restart all 重启所有进程
$ pm2 reload all 0秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0 停止指定的进程
$ pm2 restart 0 重启指定的进程
$ pm2 startup 产生 init 脚本 保持进程活着
$ pm2 web 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0 杀死指定的进程
$ pm2 delete all 杀死全部进程

 

 

运行进程的不同方式:
$ pm2 start app.js -i max 根据有效CPU数目启动最大进程数目
$ pm2 start app.js -i 3 启动3个进程
$ pm2 start app.js -x 用fork模式启动 app.js 而不是使用 cluster
$ pm2 start app.js -x -- -a 23 用fork模式启动 app.js 并且传递参数 (-a 23)
$ pm2 start app.js --name serverone 启动一个进程并把它命名为 serverone
$ pm2 stop serverone 停止 serverone 进程
$ pm2 start app.json 启动进程, 在 app.json里设置选项
$ pm2 start app.js -i max -- -a 23 在--之后给 app.js 传递参数
$ pm2 start app.js -i max -e err.log -o out.log 启动 并 生成一个配置文件

 

五.结束语

本文呢最主要就是记录一下最基础的安装方式以及使用的插件,后续还有接收psot参数,处理文件上传的模块,生成验证token等等,后续会根据实际的应用场景去给大家分享我的笔记!



posted @ 2021-12-27 11:56  蔡徐坤学前端  阅读(1001)  评论(0编辑  收藏  举报