nodejs+koa+mysql搭建后端服务
前言:
我将会使用nodejs+koa+mysql去自己尝试学习编写后端服务,然后根据自己写的后前端服务区完成一个微信小程序以及配套的后端管理系统,目的是熟悉nodejs以及mysql,同时呢学习一下怎样的去全方位考虑一个项目的发展以及实现功能等,算是对自己的一个锻炼!
使用技术:
- nodejs
- koa
- mysql
- 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中间件
- 什么是koa中间件
每个中间件都是一个函数(不是函数将报错),接收两个参数,第一个是上下文对象,另一个是函数
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等等,后续会根据实际的应用场景去给大家分享我的笔记!