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

文章目录

  • 前言
  • 一、与express的区别
    • express-generator 提供的功能如下
    • koa-generator 提供的功能如下
    • 两个生成器共同支持的项目骨架描述如下
  • 二、使用步骤
    • 安装 Koa 生成器
    • 使用koa2创建项目
    • PM2的使用
  • 三、基础目录说明
    • 配置文件package.json
    • 入口文件 bin/www
    • 核心文件 app.js
    • routes 路由
    • public 静态目录
    • views 视图
  • 总结
    • `如有启发,可点赞收藏哟~`


前言

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更好的支持 JSON2
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 的用法。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/197838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows下ffmpeg源码编译

参考:windows上使用vs2019和msys64编译 ffmpeg 4.3 | 码农家园 (codenong.com) 安装命令: pacman -S nasm pacman -S yasm pacman -S make pacman -S cmake pacman -S diffutils pacman -S pkg-config pacman -S git 1.编译 x264 将 x264放到home文件下…

mfc 设置excel 单元格的列宽

CString strTL, strBR;strTL.Format(L"%s%d", GetExcelColName(cd.nCol), cd.nRow);strBR strTL;CRange rangeMerge range.get_Range(_variant_t(strTL), _variant_t(strBR));rangeMerge.put_ColumnWidth(_variant_t((long)(20))); 宽度设置函数为 : pu…

CSS新手入门笔记整理:CSS背景样式

背景颜色:background-color 语法 background-color:颜色值; 颜色值有两种 一种是“关键字”,指的是颜色的英文名称,如red、green、blue等。参考CSS 颜色名称。另外一种是“十六进制RGB值”,类似“#FBE9D0”形式的值。参考十六…

HT78621 3.5A开关限流降压变换器基本参数信息

HT78621是一款高压降压开关稳压器,可向负载提供高达2A的连续电流。 HT78621 特性: ・宽输入电压: 5V – 60V ・峰值开关电流限值典型3.5A ・Z高1MHz开关频率 ・支持PWM调光控制输入,应用于LED ・集成G端MOSFET的短路保护 ・200μA静态电…

启动 AWS Academy Learner Lab【教学】(Hadoop实验)

🔥博客主页: A_SHOWY🎥系列专栏:力扣刷题总结录 数据结构 云计算 第一部分 创建实例过程 首先,需要创建3台EC2,一台作主节点 (master node),两台作从节点 (slaves node)。 1.镜像选择 EC2&…

如何基于Akamai IoT边缘平台打造一个无服务器的位置分享应用

与地理位置有关的应用相信大家都很熟悉了,无论是IM软件里的位置共享或是电商、外卖应用中的配送地址匹配,我们几乎每天都在使用类似的功能与服务。不过你有没有想过,如何在自己开发的应用中嵌入类似的功能? 本文Akamai将为大家提…

梯度上升和随机梯度上升

目录 梯度上升算法: 代码: 随机梯度上升算法: 代码: 实验: 做图代码: 疑问: 1.梯度上升算法不适应大的数据集,改用随机梯度上升更合适。 2.改进过的随机梯度算法&#xff0…

Android Edittext进阶版(Textfieids)

一、Text fieids 允许用户在 UI 中输入文本,TextInputLayout TextInputEditText。 在 Text fieids 没出来(我不知道)前,想实现这个功能就需要自己自定义控件来实现这个功能。 几年前做个上面这种样式(filled 填充型)。需要多个控件组合 动画才能实现&a…

游戏开发增笑-扣扣死-Editor的脚本属性自定义定制-还写的挺详细的,旧版本反而更好

2012年在官方论坛注册的一个号,居然被禁言了,不知道官方现在是什么辣鸡,算了,大人不记狗子过 ”后来提交问题给CEO了,结果CEO百忙之中居然回复了,也是很低调的一个人,毕竟做技术的有什么坏心思呢…

基于SSM的老年公寓信息管理的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

如何使用cpolar内网穿透工具实现公网SSH远程访问Deepin

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统,专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…

【C语言】深入理解指针(1)

目录 前言 (一)内存与地址 从实际生活出发 地址 内存 内存与地址关系密切 (二)指针变量 指针变量与取地址操作符 指针变量与解引用操作符 指针的大小 指针的运算 指针 - 整数 指针-指针 指针的关系运算 指针的类型的…

C++ 数组

目录 一维数组 一维数组的创建 一维数组的初始化 一维数组的使用 一维数组在内存中的存储 二维数组 二维数组的创建 二维数组的初始化 二维数组的使用 二维数组在内存中的存储 数组越界 一维数组 数组是一组形同类型的集合。 一维数组的创建 数组的创建方式&…

❀dialog命令运用于linux❀

目录 ❀dialog命令运用于linux❀ msgbox部件(消息框) yesno部件(yesno框) inputbox部件(输入文本框) textbox部件(文本框) menu部件(菜单框) fselect部…

哈希与哈希表

哈希表的概念 哈希表又名散列表,官话一点讲就是: 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记…

线程变量引发的session混乱问题

最近不是在救火,就是在救火的路上。 也没什么特别可写的,今天记录下最近遇到的一个问题,个人觉得挺有意思, 待有缘人阅读 言归正传,售后反馈: 营业查询中付款方式为第三方支付的几条银行缴费,创…

ai绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi【无需魔法使用】: SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!本系统使用NestjsVueTypescript框架技术,持续集成AI能力到…

成为AI产品经理——模型稳定性评估(PSI)

一、PSI作用 稳定性是指模型性能的稳定程度。 上线前需要进行模型的稳定性评估,是否达到上线标准。 上线后需要进行模型的稳定性的观测,判断模型是否需要迭代。 稳定度指标(population stability index ,PSI)。通过PSI指标,我们可以获得不…

Windows使用Redis

Windows使用Redis 前言一、安装wsl2(Windows Subsystem for Linux)二、在wsl中下载并安装Redis一主二仆哨兵模式 前言 主要是记录一下,免得自己忘了。 一、安装wsl2(Windows Subsystem for Linux) Redis官网中说&…

GitHub上1.5K标星的QA和软件测试学习路线图

​最近在GitHub上发现一个项目,项目描述了作为QA工程师,进行软件测试技能提升时的,建议的软件测试学习顺序图​。 虽然2021年起就不再更新了,但是居然有1.5K的​星。 整个项目有两个部分​: ​1.QA和软件测试学习顺序…