KOA2框架的学习和使用

KOA2框架的学习和使用

简介:

koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。 使用 koa 编写 web 应用,通过组合不同的 async函数,可以免除重复繁琐的回调函数嵌套, 并极大地提升错误处理

的效率。koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。

简而言之Koa就是基于NodeJs的Web开发框架

项目结构

  • 这是我们创建的后端项目的结构:

    • bin, 存放启动项目的脚本文件
    • node_modules, 存放所有的项目依赖库。
    • public,静态文件(css,js,img)
    • routes,路由文件(MVC中的C,controller)
    • views,页面文件(pug模板)
    • package.json,项目依赖配置及开发者信息
    • app.js,应用核心配置文件
    • package.json,node项目配置文件
    • package-lock.json,node项目锁定的配置文件
  • app.js 文件分析

    • app.js 是应用核心配置文件,我们把这个文件能够看明白,整理koa就非常容易了。app.js文件,我们可以分割为X个部分进行解读:依赖包加载、错误处理、中间件加载、web界面渲染模板、自定义日志、自己定义路由、外部调用接口。

        //依赖包加载
        const Koa = require('koa');
        const app = new Koa();
        ...
      
        // 中间件加载
        app.use(cors({
        credentials: true
        }));
        ...
      
        //自定义路由
        app.use(routers.index.routes(), routers.index.allowedMethods());
        ...
      
        //外部调用接口
        module.exports = app;
      
  • 路由管理

    • 普通的web应用,通常都是多个页面组成,每个页面会对应一个URL的地址,用户在浏览器输入URL可以打开不同的页面。路由管理,就是把URL和页面的关系对应起来的。这是我们项目定义的路由:

        app.use(routers.index.routes(), routers.index.allowedMethods());
        app.use(routers.team_api.routes(), routers.team_api.allowedMethods());
        app.use(routers.task_api.routes(), routers.task_api.allowedMethods());
        app.use(routers.user_api.routes(), routers.user_api.allowedMethods());
        app.use(routers.tr_api.routes(), routers.tr_api.allowedMethods());
        app.use(routers.file_api.routes(), routers.file_api.allowedMethods());
        app.use(routers.toast_api.routes(), routers.toast_api.allowedMethods());
      
    • 在 app.js 中,路由来提取到 ./routes/index.js 文件中进行实现了:

        const router = require('koa-router')();
      
        const db = require('../config/db');
        const Sequelize = require('sequelize')
        const sequelize = db.sequelize;
        const models = require('../table/all_tables')
        const TRModel = require('../modules/trModel');
        const checkUndefined = require('../utils/url_params_utils').checkUndefined;
        const FileController = require('../controller/fileController');
        const path = require('path');
        const TaskModel = require('../modules/taskModel');
        const ToastModel = require('../modules/toastModel');
        const ToastInfo = require('../utils/toast_info');
        const Op = Sequelize.Op
        const UserModel = require('../modules/userModel');
        const normal = require('../dist/index');
        const trController = require('../controller/trController');
        const sd = require('silly-datetime');
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值