NodeJs脚手架(Koa)的简单使用


前言

koa-generator 是用于生成 Koa 项目骨架的生成器,虽然比较精简,但它的结构十分清晰,足以满足一般的开发需求。


一、与express的区别

koa实际也是express的升级版本

express-generator 提供的功能如下

  • 生成项目骨架,集成必要的中间件。
  • 约定目录结构。
  • 支持 css 预处理器。

koa-generator 提供的功能如下

  • 生成项目的骨架,集成必要的中间件。
  • 约定目录结构(和 express-generator 约定的结构一模一样)

两个生成器共同支持的项目骨架描述如下

  • app.js 为入口
  • bin/www 为启动入口
  • 支持静态服务器,即 publish 目录
  • 支持 routes 目录
  • 支持 views 视图目录
  • 默认将 Pug (之前的名字是 Jade)作为模板引擎。

二、使用步骤

安装 Koa 生成器

npm install -g koa-generator

koa-generator 支持 v1 和 v2两个版本 ,安装后可使用 koa 和 koa2 命令创建 Koa 项目模板,当前以koa2版本为例

使用koa2创建项目

创建admin项目

koa2 admin

安装依赖

npm i
  • npm run start 开发阶段的脚本,使用时代码发生变动,需要重新启动。

  • npm run dev 也是开发阶段使用的脚本,使用时代码会发生变动, nodemon 会自动启动 Node.js 进程。

  • npm run prd 是生产环境使用的脚本,通过 pm2 来启动工程,默认按照 CPU 核数来启动对应的进程数,是目前最流行的方式。(需全局安装pm2,执行npm i pm2 -g即可)

  • npm run test 只会打印未实现日志,和 Express 里的用法是一样的。

在这里插入图片描述

PM2的使用

开启prd之后,会开启进程,需要使用pm2进行管理

在这里插入图片描述

pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能

  • 1、 pm2需要全局安装npm install -g pm2
  • 2、进入项目根目录
  • 2.1 启动进程/应用 pm2 start bin/wwwpm2 start app.js
  • 2.2 重命名进程/应用 pm2 start app.js --name wb123
  • 2.3 添加进程/应用 watch pm2 start bin/www --watch
  • 2.4 结束进程/应用 pm2 stop www
  • 2.5 结束所有进程/应用 pm2 stop all
  • 2.6 删除进程/应用 pm2 delete www
  • 2.7 删除所有进程/应用 pm2 delete all
  • 2.8 列出所有进程/应用 pm2 list
  • 2.9 查看某个进程/应用具体情况 pm2 describe www
  • 2.10 查看进程/应用的资源消耗情况 pm2 monit
  • 2.11 查看pm2的日志 pm2 logs
  • 2.12 若要查看某个进程/应用的日志,使用 pm2 logs www
  • 2.13 重新启动进程/应用 pm2 restart www
  • 2.14 重新启动所有进程/应用 pm2 restart all

三、基础目录说明

配置文件package.json

package.json 是 Node.js 模块定义的核心配置文件。一般有名称,版本,依赖模块,开发方式等。

入口文件 bin/www

端口号及各种监听事件

核心文件 app.js

app.js 是 Koa 的核心文件,主要包含以下 4 个部分

  • 中间件
  • 路由
  • 静态服务
  • 视图
中间件名称 用途 加载顺序
bodyparser 解析 Post 类 HTTP 动词的 body 内容,加上 bodyparser 后就可以处理所有请求了 1
json 更好的支持 JSON 2
logger 开发阶段的日志 3
koa-static 提供 HTTP 静态托管服务 4
koa-views 视图渲染,支持模板引擎 5
自定义的 logger 中间件 记录日志 6

routes 路由

实现api及mvc的文件目录

public 静态目录

存放各种静态文件的目录

views 视图

Koa 多采用 Pug 作为模板,使用时也可根据需要自行选择。


总结

Koa 支持三种中间件写法

  • async 函数优先级最高,最简单易懂。
  • Promise 其次。await 结合 Promise 是非常常见的,而且利用 Promise的特性是刚需,比如,通过 Promise.race 和 Promise.all 等实现并发可以在某种程度上弥补 async 函数的不足。
  • Generator 主要在 Koa v1 中使用,ES6 Generator 风格的中间件非常常见。使用时可以通过 co 库来调用 ES6 Generator,由于 co 的返回值是 Promise,所以相当于重复了 await + Promise 的用法。

如有启发,可点赞收藏哟~

猜你喜欢

转载自blog.csdn.net/weiCong_Ling/article/details/134786624