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


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

    初始化package.json文件

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

    npm init --yes

    创建项目目录

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

    安装项目所需的依赖

    "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服务

    配置路由

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

    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);

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

    以上案例中模块只分了一个层级,如果项目比较复杂有可能会分更多的层级,接下来我们把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服务,浏览器访问测试结果

    项目中有很多路由时只有一级的,比如/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);

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

  • 相关阅读:
    Python 2.x版本和Python3.x版本的不同
    如何给澳洲路局写信refound罚金,遇到交通罚款怎么办
    Java 用自带dom解析器遍历叶子节点内容
    更改Xampp-sql的默认密码-配置appche运行环境
    TSP旅行商问题的Hopfield求解过程
    神经网络hopfield的学习
    分类器的组合算法提升准确率概要
    因子分析——主成份算法实现补充
    因子分析——主成份算法实现
    主成分分析PCA的前世今生
  • 原文地址:https://www.cnblogs.com/LO-ME/p/10863292.html
Copyright © 2020-2023  润新知