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.mfbz.cn/a/234135.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[CTFshow 红包挑战] 刷题记录

文章目录 红包挑战7红包挑战8红包挑战9 红包挑战7 考点&#xff1a;xdebug拓展 源码 <?php highlight_file(__FILE__); error_reporting(2);extract($_GET); ini_set($name,$value);system("ls ".filter($_GET[1])."" );function filter($cmd){$cmd s…

C语言精选——选择题Day42

第一题 1. 下面程序输出的结果是&#xff08;&#xff09; #include <stdio.h> int main () {int x;x printf("I See, Sea in C");printf("x%d" , x); } A&#xff1a;2 B&#xff1a;随机值 C&#xff1a;都不是 D&#xff1a;15 答案及解析 D p…

unittest 数据驱动DDT应用

前言 一般进行接口测试时&#xff0c;每个接口的传参都不止一种情况&#xff0c;一般会考虑正向、逆向等多种组合。所以在测试一个接口时通常会编写多条case&#xff0c;而这些case除了传参不同外&#xff0c;其实并没什么区别。 这个时候就可以利用ddt来管理测试数据&#xff…

什么是高防IP,高防IP该如何选择。

高防IP&#xff0c;指的是高防御能力的IP地址。在互联网的世界里&#xff0c;网络安全问题成为一个重要的话题。作为一个用户&#xff0c;你是否曾遇到过被黑客攻击造成的网站瘫痪、信息泄露等问题&#xff1f;如果你是一个企业&#xff0c;你是否考虑过自己公司的网站和业务的…

【基于ESP32无线蓝牙上传电脑Excel透传数据】

【基于ESP32无线蓝牙上传电脑透传数据】 1. 引言2. 环境搭建2.1 硬件准备:2.2 软件准备:2.3. 配置Excel端口接收功能3. 测试代码4. 连接电脑和 ESP324.1 烧录程序4.2 启动蓝牙服务4.3 测试数据透传5. 总结1. 引言 随着物联网技术的发展,越来越多的设备开始支持无线通信,其…

java数据结构2------深入学习LinkedList

目录 一、概念 二、源码分析 1、属性 2、节点结构 3、常用方法 ①get(int index) ②add(E e) ③set(int index, E element) ④remove(int index) 三、总结 一、概念 LinkedList 是一种基于链表的集合&#xff0c;用双向链表实现的&#xff0c;提供了高效的插入和删…

设计模式篇---代理模式

文章目录 概念结构实例静态代理动态代理 总结 概念 代理模式&#xff1a;给某一个对象提供一个代理或占位符&#xff0c;并由代理对象来控制对原对象的访问。 比如我们想从其他国家买东西&#xff0c;但我们无法直接联系外国的商家&#xff0c;可以找代理商&#xff0c;让他们…

错题总结(四)

1.【一维数组】输入10个整数&#xff0c;求平均值 编写一个程序&#xff0c;从用户输入中读取10个整数并存储在一个数组中。然后&#xff0c;计算并输出这些整数的平均值。 int main() {int arr[10];int sum 0;for (int n 0; n < 10; n){scanf("%d", &arr…

算法Day25 01子串

01子串 Description 给你一个二进制字符串s&#xff0c;该字符串不含前导零。 如果s包含零个或一个由连续的’1’组成的字段&#xff0c;返回true​​​。否则&#xff0c;返回false Input 输入一个只含01的字符串s 1≤s.length≤100 Output 输出true或false Sample 代码 imp…

坚鹏:中国邮政储蓄银行数字化转型战略、方法与案例培训

中国邮政储蓄银行拥有优良的资产质量和显著的成长潜力&#xff0c;是中国领先的大型零售银行。2016年9月在香港联交所挂牌上市&#xff0c;2019年12月在上交所挂牌上市。中国邮政储蓄银行拥有近4万个营业网点&#xff0c;服务个人客户超6.5亿户。2022年&#xff0c;在《银行家》…

LabVIEW开发新型电化学性能测试设备

LabVIEW开发新型电化学性能测试设备 开发了一种基于Arduino和LabVIEW的新型电化学性能测试装置&#xff0c;专门用于实验电池&#xff0c;特别是在锂硫&#xff08;Li-S&#xff09;技术领域的评估。这种装置结合了简单、灵活的硬件和软件工具&#xff0c;使新科学家能够设计针…

智能优化算法应用:基于被囊群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于被囊群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于被囊群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.被囊群算法4.实验参数设定5.算法结果6.参考文…

实用篇 | 一文快速构建人工智能前端展示streamlit应用

----------------------- &#x1f388;API 相关直达 &#x1f388;-------------------------- &#x1f680;Gradio: 实用篇 | 关于Gradio快速构建人工智能模型实现界面&#xff0c;你想知道的都在这里-CSDN博客 &#x1f680;Streamlit :实用篇 | 一文快速构建人工智能前端展…

谷歌云数据中心利用地热能实现能源转型突破

随着全球气候变化问题日益严重&#xff0c;各大公司纷纷寻求更加可持续的能源解决方案。作为科技巨头的谷歌&#xff0c;近日在内华达州的数据中心取得了突破性的进展&#xff0c;开始使用100%地热能供电&#xff0c;为全球数据中心能源转型树立了新的标杆。 作为全球最大的搜…

VOL-vue 框架 文件上传控件关于大文件上传等待的修改

我的项目在测试voltable列表组件中对阿里云OSS做附件上传时&#xff0c;几十M的文件可能就会需要一段时间来上传&#xff0c;才能有OSS的状态和链接返回。 但是控件VolUpload.vue并没有去在这方面做任何交互体验上的控制&#xff0c;而且VolUpload.vue本身写的几个上传函数都是…

逆序对的数量

归并排序模板题 相关文章 //采用归并排序,归并的过程可以算出逆序对的个数//所有的逆序对个数 /*排序后,两个数都在左边的逆序对数排序后,两个数都在右边的逆序对数如果一个数在左边,一个数在右边,在归并的过程中*/ //左边 < 右边,正常归并。如果左边 > 右边 //那么左边…

Kubernetes简介与部署

一、Kubernetes 简介 1、概念&#xff1a; Kubernetes 又称 k8s&#xff0c;是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化应用和服务&#xff0c;通过 Kubernetes 能够进行应用的自动化部署和扩缩容。(k8s不是容器&#xff0c;而是一套容器编排系统) 官网&…

Java学习笔记——instanceof关键字

instanceof关键字&#xff1a; 作用&#xff1a;保证对象向下转型的安全性在对象向下转型前判断某一对象实例是否属于某个类 判断时&#xff0c;如果对象是null&#xff0c;则 instanceof 判断结果为 false

侯捷C++ (二--STL标准库)

CSTL标准库与泛型编程 STL六大部件 容器 Containers分配器 Allocators 一种用来修饰容器或仿函数或迭代器接口的东西算法 Algorithms迭代器 Iterators适配器 Adapters仿函数 Functors 容器 前闭后开 大致分为两种容器&#xff1a;序列容器&#xff0c;关联容器 所谓关联容器…

C# WPF上位机开发(动态库dll的开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多时候&#xff0c;我们并不希望所有的程序都放到一个exe里面。因为这样相当于把所有的风险都放在了一个文件里里面&#xff0c;既不利于程序的升…
最新文章