egg框架使用(二)

  • Post author:
  • Post category:其他



目录


路由器 router


egg框架的静态资源和路由之间的关系


路由器 router

生活中有一个设备,叫路由器:用户把请求数据发送给了路由器,路由器根据用户的需求,连接不同的服务器。

路由:指不同的网址去执行不同的分支或者程序。

  router.get('/ajax1',controller.user.ajax1);  //注册路由

分析:用户把请求的网址 /ajax1 发送给路由器,路由器根据用户请求的网址执行其对应的程序 controller.user.ajax1,然后返回对应的结果。

egg框架的静态资源和路由之间的关系

1.当用户输入 网址 后,

先看下静态托管目录(public文件夹)里面有没有所需要的资源

,有就读取静态文件然后发给用户,如果没有就

再去 router.js 文件夹里面 有没有匹配的 注册网址

,有就调取对应的函数执行,

没有就返回 404 Not  Found

注意点:

注册路由时,路由名不要跟静态文件名冲突,不然会优先访问静态资源。

2.当注册的路由有相同的,只会匹配第一个,后面相同的就不会再匹配了:

分析:当用户输入  ip:port/ajax1 时,只会匹配 第一个/ajax1然后执行 controller.user.ajax1,这里相当于是 res.end(),一次请求只会运行一次。

3.  router.get(‘/*’,controller.home.all);  这段代码的含义是:

  router.get('/*',controller.home.all);

分析:

‘/*’  表示浏览器输入的任何网址都能匹配上

如果:

  //代码顺序是这样的:
  router.get("/*",controller.home.all);
  router.get('/', controller.home.index);
  router.get('/ajax1',controller.user.ajax1);
  async all() {
    this.ctx.body = '返回一个前端接口'   //返回给前端的
  }

浏览器输入网址:

127.0.0.1:7001/ajax1

就访问不到 /ajax1  ,因为访问到了  ‘/*’

总结:egg中路由网络请求时,后端的处理属性:静态文件 > 路由匹配(按照顺序匹配)

‘/*’  信号路由 代表所有网址都能匹配



版权声明:本文为weixin_47075145原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。