koa 搭建模块化路由/层级路由

摘要:
设置节点项目目录和基本文件初始化包。json文件。执行以下命令以生成包。json文件npminit-yes创建项目目录,创建路由目录路由,存储静态资源目录public和视图目录视图。安装项目所需的依赖项是:{“艺术模板”:“^4.12.2”,“koa”:“^2.5.0”,“koa艺术模板””:“^1.1

搭建node项目目录以及基本的文件

初始化package.json文件

执行下面命令生成package.json文件

npm init --yes

创建项目目录

创建路由目录routes,存放静态资源目录public,视图目录views

koa 搭建模块化路由/层级路由第1张

安装项目所需的依赖

"dependencies": {
    "art-template": "^4.12.2",
    "koa": "^2.5.0",
    "koa-art-template": "^1.1.1",
    "koa-bodyparser": "^4.2.0",
    "koa-router": "^7.4.0",
    "koa-session": "^5.8.1",
    "koa-static": "^4.0.2",
    "mongodb": "^3.0.4"
  }

app.js文件初始化

const Koa = require('koa')
const router = require('koa-router')();

var app=new Koa();

//配置路由
router.get('/',(ctx)=>{
    ctx.body='这是一个首页'
})

//启动路由
app.use(router.routes()).use(router.allowedMethods());

app.listen(8008);

然后启动node服务

koa 搭建模块化路由/层级路由第2张

配置路由

接下来我们定义两个路由模块admin.js(不启动路由只是导出路由模块)和api.js(在模块中启动路由(接口模块))

koa 搭建模块化路由/层级路由第3张

var router = require('koa-router')();

router.get('/',(ctx)=>{
    ctx.body='后台管理系统首页'
})

router.get('/user',(ctx)=>{
    ctx.body='用户管理'
})

router.get('/focus',(ctx)=>{
    ctx.body='轮播图管理'
})
router.get('/news',(ctx)=>{
    ctx.body='新闻管理'
})

module.exports=router;
var router=require('koa-router')();

router.get('/',(ctx)=>{
  ctx.body={"title":"这是一个api"};
})

router.get('/newslist',(ctx)=>{
  ctx.body={"title":"这是一个新闻接口"};
})

router.get('/focus',(ctx)=>{
  ctx.body={"title":"这是一个轮播图的api"};
})

module.exports=router.routes();

然后在项目入口中即app.js引入两个路由子模块,api.js路由模块中已经启动了路由,引入后直接使用,admin.js路由模块没有启动路由只是导出,引入后需要启动路由

const Koa = require('koa')
const router = require('koa-router')();
//引入路由的子模块
var admin = require('./routes/admin.js');
var api = require('./routes/api.js');

var app=new Koa();

//配置路由
router.get('/',(ctx)=>{
    ctx.body='这是一个首页'
})

// 配置子路由  层级路由
router.use('/admin',admin.routes());
router.use('/api',api);   // 在模块里面暴露路由并且启动路由(启动路由在子模块中)

//启动路由
app.use(router.routes()).use(router.allowedMethods());

app.listen(8008);

重启服务进行测试,访问根路由的时候是首页

koa 搭建模块化路由/层级路由第4张

koa 搭建模块化路由/层级路由第5张

koa 搭建模块化路由/层级路由第6张

koa 搭建模块化路由/层级路由第7张

koa 搭建模块化路由/层级路由第8张

以上案例中模块只分了一个层级,如果项目比较复杂有可能会分更多的层级,接下来我们把admin.js这个路由模块在细分一个层级

首先在routes中在创建一个admin的路由,表示存放admin模块中的子模块,里面分别(newscate.js,user.js)

// 用户的增加修改删除

var router = require('koa-router')();

router.get('/',async (ctx)=>{
    ctx.body='新闻分类首页';
})

router.get('/add',async (ctx)=>{
    ctx.body='增加新闻分类';
})

router.get('/edit',async (ctx)=>{
    ctx.body='编辑新闻分类';
})
router.get('/delete',async (ctx)=>{
    ctx.body='编辑新闻分类';
})

module.exports = router.routes();
// 用户的增加修改删除

var router=require('koa-router')();

router.get('/',async (ctx)=>{
    ctx.body='用户首页';
})

router.get('/add',async (ctx)=>{
    ctx.body='用户添加';
})

router.get('/edit',async (ctx)=>{
    ctx.body='用户编辑';
})

router.get('/delete',async (ctx)=>{
    ctx.body='删除用户';
})

module.exports = router.routes();

然后将这两个子模块在admin.js模块中引入

var router = require('koa-router')();
var user = require('./admin/user.js');
var newscate = require('./admin/newscate.js');

//配置admin的子路由  层级路由
router.get('/',(ctx)=>{
    ctx.body='后台管理系统首页'
})

router.use('/user',user);
router.use('/newscate',newscate);

module.exports = router.routes();

最后将admin在app.js中引入

const Koa = require('koa')
const router = require('koa-router')();
//引入路由的子模块
var admin = require('./routes/admin.js');

var app=new Koa();

//配置路由
router.get('/',(ctx)=>{
    ctx.body='这是一个首页'
})

// 配置子路由  层级路由
router.use('/admin',admin.routes());

//启动路由
app.use(router.routes()).use(router.allowedMethods());

app.listen(8008);

重启node服务,浏览器访问测试结果

koa 搭建模块化路由/层级路由第9张

koa 搭建模块化路由/层级路由第10张

koa 搭建模块化路由/层级路由第11张

koa 搭建模块化路由/层级路由第12张

项目中有很多路由时只有一级的,比如/about去访问关于我们的页面,这种情况我们可以在routes中定义一个index.js的模块

var router = require('koa-router')();

router.get('/',async (ctx)=>{
  ctx.body='这是一个首页'
})
//注意 前台后后台匹配路由的写法不一样
router.get('/case',(ctx)=>{
  ctx.body='案例'
})

router.get('/about',async (ctx)=>{
  ctx.body='关于我们'
})

module.exports = router.routes();

然后再app.js中引入并使用

const Koa = require('koa')
const router = require('koa-router')();

//引入路由的子模块index
var index = require('./routes/index.js');
var admin = require('./routes/admin.js');

var app=new Koa();

//配置路由
router.use(index);

// 配置子路由  层级路由
router.use('/admin',admin);

//启动路由
app.use(router.routes()).use(router.allowedMethods());

app.listen(8008);

重启服务,浏览器访问测试

koa 搭建模块化路由/层级路由第13张

koa 搭建模块化路由/层级路由第14张

免责声明:文章转载自《koa 搭建模块化路由/层级路由》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IOS 蓝牙(GameKit、Core Bluetooth)ubuntu server18.04 更换默认源为阿里源-加速下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

爱快路由器的一些注意事项硬件配置+多线负载均衡

原文: https://help.onethingcloud.com/f63a/578d#header-16 https://www.ikuai8.com/zhic/ymgn/lyym/xtsz/qdqdq.html 爱快多对一配置教程 1)开启nat1   ②所有线路dmz到你的设备地址(不要设置端口映射,若设置了dmz则无需开启upnp)  ...

如何绘制漂亮的多序列比对图片

1.下载多序列比对软件 下载链接:https://pan.baidu.com/s/1RYDRQws8DUYLhB7rvXoiGg 2.序列比对 3.序列比对结果保存 输出结果保存为aln后缀 4.图片绘制 网站:http://espript.ibcp.fr/ESPript/ESPript/index.php a.开始新的工作(自己的) b.输入需要的文...

uniapp原生插件开发及打包发布

uniapp原生插件开发及打包发布 一.下载unipp提供的sdk包: 官方链接:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android 二.开发原生插件: 1.创建android空项目: 2.创建Module模块: 3.配置libs: 将sdk中的包lib.5plus.base-relea...

为你的应用加上skywalking(链路监控)

skywalking是什么?为什么要给你的应用加上skywalking?在介绍skywalking之前,我们先来了解一个东西,那就是APM(Application Performance Management)系统。 一、什么是APM系统 APM (Application Performance Management)即应用性能管理系统,是对企业系统即时...

windows下bat批处理实现守护进程(有日志)

开发部的一个核心程序总是会自己宕机,然后需要手工去起,而这个服务的安全级别又很高,只有我可以操作,搞得我晚上老没法睡,昨晚实在受不了了,想起以前在hp-ux下写的shell守护进程,这回搞个windows下的bat版守护程序吧,当时晚上思路已经很迟钝了,就叫了个兄弟让他写了,上去后运行效果不错,至少昨晚我安心睡了7小时。 早上来把程序改完善一些,增加了记...

如何评价软件工程师知识技能水平

1.良好的编码能力   软件人员的一个重要职责是把用户的需求功能用某种计算机语言予以实现。编码能力直接决定了项目开发的效率。这就要求软件工程师至少精通一门编程语言,比如当前国内企业常用的C/C++、VB和国际上最流行的Java语言,熟悉它的基本语法、技术特点和API(应用程序接口)。                  2.自觉的规范意识和团队精神   随着...