框架结构例子

https://github.com/bayi-lzp/koa-template

官网例子(有很多 示例)

https://github.com/koajs/examples

《Koa2进阶学习笔记》电子书

https://github.com/chenshenhai/koa2-note

实战项目1

  • Node.js + Koa2 + MySQL 开发的一套完整 RESTful API
  • Vue.js + element-ui 管理后台
  • SSR Nuxtjs 前台服务端渲染

https://github.com/lfb/nodejs-koa-blog
实战项目2

https://gitee.com/caiheping/koa-template

https://gitee.com/caiheping/vue-template

项目的结构都可以借鉴。

tip: 注意,不要把 static 中间件放到 Koa 的全局中间件上(如果对于每个请求都需要判断一次是不是静态资源,会影响 QPS),最好结合 koa-router 来处理,按需挂在,上代码。

router.get('/public/', async (ctx, next) => {
ctx.url = path.basename(ctx.url)

  await next()
}, staticServer(resolve('./public'), {gzip: true}))

koa-router提供一种router.prefix方法,此方法对于某一个router来说,是一个全局配置,此router的所有路径都会自动被添加该前缀。

const Koa = require(‘koa‘)
const app = new Koa()
// 引入koa-router
const router = require(‘koa-router‘)
// 这两行代码等同于 const router1 = require(‘koa-router‘)()
const router1 = new router()
// 为router1配置路由前缀
router1.prefix(‘/pre‘)
router1.get(‘/get‘, function (ctx, next) {
ctx.body = ‘this is a get1 response!‘
})
// router2不配置路由前缀
const router2 = new router()
router2.get(‘/get‘, function (ctx, next) {
ctx.body = ‘this is a get2 response!‘
})
// 注册路由
app.use(router1.routes(), router1.allowedMethods())
app.use(router2.routes(), router2.allowedMethods()) app.listen(8000) module.exports = app


使用router.use方法,同样的能够为路由分层,并且不会因为忽略了prefix的全局配置造成一些不必要的失误,
推荐使用这一种方法为路由分层

const Koa = require(‘koa‘)
const app = new Koa()
const router = require(‘koa-router‘)
// 定义子路由
const router_children = new router()
router_children.get(‘/get‘, function (ctx, next) {
ctx.body = ‘this is a get response from router.use!‘
})
// 根路由
const router_root = new router()
// 在根路由中注册子路由
router_root.use(‘/root‘, router_children.routes(), router_children.allowedMethods())
// 在app中注册根路由
app.use(router_root.routes(), router_root.allowedMethods())
app.listen(8000) module.exports = app


nodejs+koa 后台框架结构、demo学习地址的更多相关文章

  1. nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId

    nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId 前言: 我准备用nodejs+koa+uniapp实现一款餐饮点单小程序,以及nodejs+koa+vue实现后端管理 ...

  2. 学习地址(oraclemysqllinux)

    1.安装配置 http://blog.chinaunix.net/uid-27126319-id-3466193.htmlhttp://www.cnblogs.com/gaojun/archive/2 ...

  3. [Unity3D]做个小Demo学习Input.touches

    [Unity3D]做个小Demo学习Input.touches 学不如做,下面用一个简单的Demo展示的Input.touches各项字段,有图有真相. 本项目已发布到Github,地址在(https ...

  4. NodeJS,MongoDB,Vue,VSCode 集成学习

    NodeJS,MongoDB,Vue,VSCode 集成学习 开源项目地址:http://www.mangdot.com

  5. 如何写一套下拉刷新的控件?《MJRefresh原理浅析》(附Demo下载地址)

    相信大家有很多人在做项目的时候都在使用MJRefresh 控件来实现下拉刷新的功能: MJRefresh经过不断的重构与更新迭代,现在不管是功能上还是代码结构上都是相当不错的,都是很值我们去学习的. ...

  6. iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)

    由于app内需要用到支付功能,选择了当前最流行的支付宝进行支付.在进行内嵌支付宝功能开发时,被它狠狠的耍了一把. 根据支付宝开发文档,参考demo代码.将相关支付功能加到了自己的代码中.一些根据文档来 ...

  7. 转:iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)

    iosiOSIOS文档服务器测试电话 由于app内需要用到支付功能,选择了当前最流行的支付宝进行支付.在进行内嵌支付宝功能开发时,被它狠狠的耍了一把. 根据支付宝开发文档,参考demo代码.将相关支付 ...

  8. layui学习地址

    --layui学习地址 ,相当之好用,非常感谢为我们工作和学习提供方便的才子们,谢谢~https://www.layui.com/demo/layim.html

  9. React 学习笔记(学习地址汇总)

    好的博文地址:http://www.ruanyifeng.com/blog/2015/03/react.html 官网学习地址:http://facebook.github.io/react/docs ...

  10. 《IT蓝豹》吹雪花demo,学习android传感器

    吹雪花demo,学习android传感器 吹雪花demo,学习android传感器,嘴巴对着手机底部吹一下就会出现飘着雪花效果. 算是学习android传感器效果.本例子主要是通过android.me ...

随机推荐

  1. ps 合并两张图片为一张

    打开PS并点击左上角的"文件":之后再点击"打开"(也可以按下快捷键"Ctrl+O"),打开文件选择窗口. 2 在打开的文件选择窗口中,找到 ...

  2. mysql8改密码

    登录后执行语句 ALTER USER 'test'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码'; 修改Host范围 updat ...

  3. 在SublimeText3中想使用快捷键调出插件ColorPicker不起作用办法解决

    在SublimeText3中快速打开插件ColorPicker的快捷健是Ctrl+Shift+C,但是我试了却不管用,后来发现是跟插件ConvertToUTF8插件中的快捷键冲突导致,知道原因就好办了 ...

  4. go 编程基础学习笔记

    dos 命令 2023-01-26 1.切换盘符 只要输入 c: d: e: 等即可 2.显示目录详细内容 dir 3.切换目录 cd 留意 一个点 . 代表当前目录, 两个点.. 代表上一级目录 4 ...

  5. MongoDB 6.0.4 安装记录

    须知:版本号x.y.z,看y:偶数版为稳定版,奇数版为开发版 (1)下载zip,解压 1 https://fastdl.mongodb.org/windows/mongodb-windows-x86_ ...

  6. 初学银河麒麟linux笔记 第七章 VMWare虚拟机内的qt程序连接串口和网口

    QT程序可以正常在虚拟机里的麒麟系统里运行了,但是无法连接网口和串口,这里进行配置 网口连接 与硬件的TCP连接,在虚拟机上设置桥接 再重启就能连上了 串口连接 首先参考 https://blog.c ...

  7. 记录multipartFile表单类型转化为file

    导入依赖 <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</a ...

  8. Pytorch实战学习(六):基础CNN

    <PyTorch深度学习实践>完结合集_哔哩哔哩_bilibili Basic Convolution Neural Network 1.全连接网络 线性层串行-全连接网络 每一个输入和输 ...

  9. 搭建CentOS 7

    首先,操作系统要部署在哪一个盘符下就在哪一个盘符下创建一个空文件夹,用来存放实验环境.这里的实验环境的文件夹可以命名为CentOS 7 x64. VMware中,"文件"--&qu ...

  10. ABC 171 F - Strivore 【容斥】

    https://atcoder.jp/contests/abc171/tasks/abc171_f 题意 给你一个数 \(k\) ,一个字符串 \(s\) (只包含小写字母) 定义一次操作:把任意小写 ...