• koa-01


    安装:

    npm i koa -D

    koa中不像express自带路由,koa不带路由模块,需要单独去安装:

    npm i koa-router -D

    1)创建服务的时候需要new koa();

    2)使用路由先引入,再去new

    3)ctx代替req和res

    4)输出时候用 ctx.body

    5)注册某个路由要用router.use(路由地址,引入路由地址对应的路由模块),如:

          router.use('/company', require('./company'));
     
    路由模块之所以独立出来,是为了能做嵌套路由,这样就能把一个大的项目通过路由给拆分开来,会很方便。

    第一个koa服务:

     主路由模块 user文件夹下的index.js

     子路由模块admin.js:

     子路由模块:company.js

     路由参数:

     情况:

    1)如果访问/news/1,上面没有next的情况下,页面就会输出bbb,都满足条件先到先得,不会往下执行了。

    2)如果加了next,下面的值会把上面的值给覆盖,页面输出aaa

    3)如果加了next,上面的值可以透传到下面,如上图,进行+=字符串拼接

    ?id=xxx和/:id传参的区别?

     

     server.context:相当于ctx的prototype

    适用于放一些全局的东西,比如说我们经常需要连接数据库,连接完数据库整个服务器内所有的路由用的全是这一个数据库的连接。

    比如:server.context.db = mysql.createPool();

    下面在路由中就可以 ctx.db.query ....对数据库操作

    ctx.request         
    ctx.response    这两个基本很少用

    --------------------------------------------------------------------------------

    信息:
    ctx.method    请求方法
    ctx.url      请求地址
    ctx.path      路径部分,不包括域名,不包括query
    ctx.query      get数据
    ctx.ip       客户端的IP

    ctx.headers     请求头

    --------------------------------------------------------------------------------

    ctx.throw(code, msg)      报错并且退出,第一个参数就是响应状态码,第二个参数要输出的一句话

    ctx.assert(条件, code, msg)   比ctx.throw多了一个判断条件,相当于封装起来的ctx.throw

     

    ctx.state=305;      设置状态码
    ctx.redirect();        重定向
    ctx.attachment();    帮助用户下载文件的    ->后续补充如何用

     

    koa的一些中间件

    静态资源中间件:koa-static

    安装:npm i koa-static -D;

     

     然后在浏览器中输入:localhost:8080 即可看到1.html中的内容

    打开network 在响应头里就可以看到设置的告诉浏览器的缓存时间

     

     设置不同类型的文件的缓存时间

     注意:上面的staticRouter.all(' * ')应该加上*(有误,空字符串代表根路径,*代表所有文件。

    解析post数据的中间件:koa-better-body

    安装:npm i koa-better-body -D;

    后台服务:

     前台代码:

     输出ctx.request.fields的结果:可以看到有普通表单信息和文件信息

     

    session中间件:koa-session

    安装: npm i koa-session -D;

    在koa-session中是强制签名的,因为对于session来说,他所用到的那条cookie来说安全性很重要

     

    cookie在koa中是自带的

     引入数据库:

    安装mysql和co-mysql

    把数据库相关操作提取成一个单独的js

     引入database.js

     

  • 相关阅读:
    事务的基本特性和隔离级别
    mysql锁的类型
    索引设计的原则
    mysql聚簇索引和非聚簇索引的区别
    spring事务什么时候会失效?
    spring事务传播机制
    GAN的Pytorch实现
    DCGAN的Pytorch实现
    PyTorch学习教程、手册
    去噪论文合集Paper
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14316094.html
Copyright © 2020-2023  润新知