zoukankan      html  css  js  c++  java
  • 服务端编程——初始koa

    服务端编程

    零、初识服务器编程

    • 服务器编程一般由python、Java、nodejs等,但前端一般使用的都是nodejs来写

    • nodejs就是可以让JavaScript脱离浏览器运行,之前的js只能在浏览器中运行,就不能做一些关于资源文件的操作,现在可以脱离浏览器就可以有更多的可能性,nodejs就可

    • 绝大多数后端都在:

      • 读写数据库:前端是不能直接在数据库中取出数据的
      • 编写API:给前端使用来拿到数据
    • 一般有 commonJS(同步 服务器)、AMD(异步 浏览器)、promise

    一、koa

    koa基本使用

    其实官网都说的挺好的了,就说下现在要用的一些操作吧:

    Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的

    1. 导入koa:const Koa = require('koa'):注意这里要用ES5的require方式导入,而不用ES6的import方式
    2. 实例化koa对象:const app = new Koa()
    3. koa对象的listen方法来监听某个服务器:app.listen(3000),这里是监听3000端口
    4. 注册中间件函数koa.use(中间件函数名)

    中间件函数

    • 在koa中,要想在用户对服务器发起请求时做点什么,就要写在中间件函数里(类似于 响应时的动作)

    • 若注册了多个中间件,则运行它们的运行顺序遵循——洋葱模型,但这也是要有条件的,洋葱模型是最容易想到和理解的模型,所以只要遵循它就可使问题变得简单一些,条件就是加上async和await标识

      • async和await标识细节就不多说了,这两个标识符就是为了让函数能够同步的执行代码,不会出现意料之外的结果 详见

    • 中间件常见写法如下,ctx是上下文信息,里面包含了请求的所有信息(如这里是path是路径,method是请求方式),next是下一个中间件函数

    app.use((ctx, next) => {
      if (ctx.path === '/classic/latest' && ctx.method === 'GET') {
        console.log('123')
      }
      next()
    })
    

    koa-router 路由库

    • koa-router可以处理客户向服务器发送的请求,其实这就是个路由中间件;
    • 先引入koa-router模块,再进行实例化,例子如下:
    const Router = require('koa-router')
    const router = new Router()
    
    // 写法一
    router.get('/book/hot_list', async (ctx, next) => {
      ctx.body = '/book/hot_list'
    })
    
    // 写法二
    app.use((ctx, next) => {
      if (ctx.path === '/book/hot_list' && ctx.method === 'GET') {
        ctx.body = '/book/hot_list'
      }
      next()
    })
    
    • 上面例子中的两种写法含义是一样的,但上面那种就有助于模块化、更加清晰直观,且不用把所有的判断都放在一个文件里;
    • 同时router实例还有post、put、get等方法,对应http各种请求方式
  • 相关阅读:
    使用sql语句查询表结构
    plsql出现录相机后卡屏解决方法
    oracle的“ORA-01480:STR绑定值的结尾Null字符缺失”错误
    oracle创建表空间并对用户赋权
    Scrapy安装错误(error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools)
    震惊你不知道的python
    django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'
    python3 ImportError: No module named 'ConfigParser'
    python import报错
    No migrations to apply(django不能创建数据库中的表的问题)
  • 原文地址:https://www.cnblogs.com/TRY0929/p/13854262.html
Copyright © 2011-2022 走看看