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

news2025/6/9 15:29:18

文章目录

  • 前言
  • 一、与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.coloradmin.cn/o/1285622.html

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

相关文章

Python脚本模拟真实设备刷视频播放量、浏览量

简述 Python3脚本刷视频播放量 前情提示 系统:centOS7,8阿里云一折优惠云小站_专享特惠_云产品推荐-阿里云 宝塔8.x 一说 部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤带有#号、删除线、不操作、不执行字样的为提示或者…

【GIT】.gitignore 在忽略目录中放开某目录

示例:忽略build下面的所有目录,只放开build/ast2500-default/workspace/recipes-phosphor/ 目录 .gitignore 实现文件代码 # 忽略 build 目录下的所有目录 # 并放开build/ast2500-default/workspace/recipes-phosphor/ build/* !build/ast2500-defaul…

DenseNet分类网络改进--亲测有效

最近,我在做多分类问题。在针对基模型的选择中,我使用了DenseNet作为基本模型。我在阅读论文时,遇到了一种改进方式: 如上图所示,在全连接层之前引入SPP模块: 代码如下: SPP模块代码&#x…

系统运维工具KSysAK——让运维回归简单

系统运维工具KSysAK——让运维回归简单 1.基本信息 1.1概述 系统异常定位分析工具KSysAK是云峦操作系统研发及运维人员总结开发及运维经验,设计和研发的多个运维工具的集合,可以覆盖系统的日常监控、线上问题诊断和系统故障修复等常见运维场景。 工具…

Java---异常

文章目录 1. 异常概述2. try...catch3. Throwable成员方法4. 编译时异常和运行时异常区别5. 异常处理之throws6. 自定义异常7. throws和throw的区别 1. 异常概述 1. 异常:就是程序中出现了不正常的情况。 2. Error:严重问题,不需要处理。Exce…

揭秘MQTT:为何它是物联网的首选协议?

文章目录 MQTT 协议简介概览MQTT 与其他协议对比MQTT vs HTTPMQTT vs XMPP 为什么 MQTT 是适用于物联网的最佳协议?轻量高效,节省带宽可靠的消息传递海量连接支持安全的双向通信在线状态感知 MQTT 5.0 与 3.1.1MQTT 服务器MQTT 客户端 MQTT 协议简介 概…

亿胜盈科AT8236 刷式直流电机驱动器

AT8236是一款刷式直流电机驱动器,能够以高达6A的峰值电流双向控制电机。利用电流衰减模式,可通过对输入信号进行脉宽调制(PWM) 来控制电机转速,同时具备低功耗休眠模式。 AT8236集成同步整流功能,可显著降低系统功耗要求。内部保…

【鸿蒙应用开发】开发环境搭建及IDE安装使用

1.下载安装包 安装包下载地址: 点击跳转下载页面 可以根据自己的操作系统选择对应版本下载。 本文以Windows安装为例,Mac安装方式相同 2. 安装 下载好后,打开安装包,进入安装界面: 点击Next,进入安…

傻傻分不清楚的分区、分库、分表

一、分区 MySQL 在 5.1 时添加了对 分区(即水平分区) 的支持。MySQL 的物理数据存储在表空间文件(.ibdata1和.ibd)中,分区 的意思是指将同一表中不同行的记录分配到不同的物理文件中。有几个分区就有几个 .idb 文件。…

CPP-SCNUOJ-Problem P23. 计数排序(使用C/C++)

Problem P23. 计数排序(使用C/C) 计下标从 1 开始。有n 个取值范围在 [1,m] 的整数ai 。请将它们升序排序,设排序后数组为b 。为避免输出过长,请输出: 输入 输出 输出一个整数代表计算结果 样例 标准输入 10 3 1 …

智能液压传动综合实验台比例阀放大器

智能型液压传动实验台具有开发测试分析系统,通过对流量、压力、功率、转速、扭矩、位移、时间、温度--计算机人机画面 -- 计算机智能数据采集、分析、处理、--自动生产报表、曲线等一系列智能化动作后,完成各类常规的液压回路、马达、各类阀泵的动静态测试等实验.通…

C语言枚举详解,typedef简介(能看懂文字就能明白系列)

系列文章目录 C语言基础专栏 笔记详解 🌟 个人主页:古德猫宁- 🌈 信念如阳光,照亮前行的每一步 文章目录 系列文章目录🌈 *信念如阳光,照亮前行的每一步* 前言一、枚举类型的声明枚举常量三、枚举类型的优…

情怀零食店溢价严重,网友:情怀就是智商税,贵可以不买!

小时候的零食,是每个人心中无法抹去的甜蜜记忆。在广东,那些5毛钱的零食更是让无数人回味无穷。但近年来,这些情怀零食店的价格乱象却让不少人大呼“离谱”。 有市民反映,在一家主打怀旧主题的零食店内,三样商品竟然要…

ros2+UBUNTU读取STM32发送过来的数据(C++)

ATTENTION:一般ros2上位机访问STM32不是使用串口,即使树莓派有串口,我也不会用的,因为那还要去学习其他的语言,一般就是ros2---------ubs转串口-------STM32串口。 这个USB转串口,我们已经安装了CH340驱动了&#xff…

mall电商项目(学习记录2)

运行mall-admin Java项目 需要安装Redis,需要安装mysql,同时需要运行其项目提供的mall.sql 运行mall-admin后端程序 安装完Redis、mysql、HeidiSQL(用于执行mall.sql,界面化操作高效直观)、IntelliJ IDEA 运行mall-…

写给初学者的 HarmonyOS 教程 -- 页面路由(router)

页面路由(router)是指在应用程序中实现不同页面之间的跳转和数据传递。 HarmonyOS 提供了 Router 模块,通过不同的 url 地址,可以方便地进行页面路由,轻松地访问不同的页面。 类似这样的效果: 页面跳转是…

MISRA C 2012 标准浅析

MISRA(The Motor Industry Software Reliability Association),汽车工业软件可靠性联会; 1994年,英国成立。致力于协助汽车厂商开发安全可靠的软件的跨国协会,其成员包括:AB汽车电子、罗孚汽车、宾利汽车、福特汽车、捷…

从0到1的跨境电商创业经验分享!个人如何做跨境电商创业?

近年来,跨境电商成为了一种非常流行的创业方式,都知道国内贸易不好做,许多卖家都想通过跨境电商创业,但他们不知道具体的过程,今天龙哥我就分享一下我自己在跨境电商创业总结出来的经验,帮助你在跨境电商领…

Apollo新版本Beta自动驾驶技术沙龙参会体验有感—百度自动驾驶开源框架

在繁忙的都市生活中,我们时常对未来的科技发展充满了好奇和期待。而近日,我有幸参加了一场引领科技潮流的线下技术沙龙,主题便是探索自动驾驶的魅力——一个让我们身临其境感受创新、了解技术巨擘的机会。 在12月2日我有幸参加了Apollo新版本…

基于Linux的网络防火墙设计方法

摘要 随着Internet的迅速发展,网络越来越成为了人们日常生活不可或缺的一部分,而随之引出的网络安全问题也越来越突出,成为人们不得不关注的问题。 为了在一个不安全的网际环境中构造出一个相对安全的环境,保证子网环境下的计算机…