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

 

原文地址:https://www.cnblogs.com/haoqiyouyu/p/14316094.html