当前位置:网站首页 > 编程语言 > 正文

libgdx源码(libx11源码)



从第5行代码开始看起,先翻到源码:

chache是于保存render时的结果的,engines是模板引擎,至于settings保存的是一些设置,诸如是否开启e-tag,x-powerd,还有响应头的一些字段。下来调用了。代码比较长,直接在源码里做注释了:

这种如果没有再定义的策略,设计模式上叫单例模式,初次执行肯定没有,所以这里先会初始化一个rouer绑定到app._router上, 表示路由对大小写敏感,开启路由的严格模式,好,接着走到Router构造函数:

router本身是一个函数,调用自身的而handle方法,传递http,setPrototypeOf 将router的__proto__属性指向proto,借此实现js式的继承,至于proto,也定义于此处,就是router的一系列方法,诸如param,handle,use等等。当然router也有自己的get,post等等方法,这些和app上定义的时候大同小异的,最后声明了几个保存变量的属性,将router返回了出来。初始化router完毕之后,router使用了两个中间件,第一个是parse query的,第二个中间件是用于初始化req和res的,他做了一件很重要的事就是将,部分代码如下:

Route是描述路由的一个数据结构,他的构造函数如下:

这里边比较重要的一点是会将当前path转化成能匹配他的正则并把这个正则保存到this.regexp上,并且会把param参数在此处提取出来保存到this.keys上,还有一个handle属性保存在这个layer上执行的回调函数,以以上形式生成的layer上,其handle函数为,这个函数是route实例上的方法,用于执行他的栈上保存的layer。然后layer生成完毕,此时的layer实例会将一个route属性指向当前的route,此刻,将这个layer保存到router的stacks里。

这里多提一句就是,router.use这种形式生成路由时layer上的route是undefined的,并且layer的handle就是传进去的回调函数。在后边router遍历自己stack上存储的layer时,正是基于此 判断他是中间件还是一个路由业务函数。

router.route执行完毕,接下来开始执行, route[method]的定义方法,和app,router大同小异:

  • 用于parse query的中间件;
  • 用于初始化req,res的init中间件;

以上两个是初始化的时候就use的中间件,接下来是:

  • 调用 的时候为route创造的layer。

server还是使用http模块的createServer创造的, 只不过this指向的是app也就是开头我们提到的整个程序的入口,是个函数,接着用了函数的apply方法,将调用时传过去的参数使用arguments巧妙的传过去,并将server设置为listen的上下文。listen之后,app就开始正式运行了,监听了9999端口。

——————

当在浏览器上输入http://localhost:9999/ 时,首先,app会被执行,而app里只有一句话就是 参数分别是request,response和next(在此时为undefined),所以我们继续往下看app.handle:

开始执行 router.handle并将done默认值作为next参数传递过去: 此处代码稍长,所以还是将解释放到源码里边。

下来开始说layout的执行方法,首先对于正常的layer执行方法,其中next就是next函数,由于循环变量idx置于next函数外边,因此开始执行此函数就意味着开始寻找下一个匹配的layer。

res的set使用来设置响应头的,各种响应头,至于send,除了为我们写了一些头还判断了http缓存逻辑,最后调用res.end()方法,将我们的 返回给了客户端,剩下的工作是一些异步工作,诸如tcp挥手,node自己内部的一些方法,俺也没多做了解,就不展开讲了。至此hello world完成。

到此这篇libgdx源码(libx11源码)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 易梯认证码(易梯认证码在哪里找)2025-12-10 17:36:09
  • bt1120(bt1120协议)2025-12-10 17:36:09
  • u盘制作pe系统启动盘需要多大(u盘装pe系统要多大内存)2025-12-10 17:36:09
  • 划词翻译插件(划词翻译插件哪个好用)2025-12-10 17:36:09
  • py文件怎么执行(py文件怎么执行 linux)2025-12-10 17:36:09
  • 速排小蚂蚁编辑器的文章怎么预览(速排小蚂蚁编辑器怎么保存)2025-12-10 17:36:09
  • ip查域名怎么查不到(域名找不到ip地址的原因)2025-12-10 17:36:09
  • fontawesome字体图标库(fontawesome字体图标库 自定义)2025-12-10 17:36:09
  • ad200-f(ad200防水吗)2025-12-10 17:36:09
  • Ubuntu镜像下载地址(ubuntuiso镜像下载)2025-12-10 17:36:09
  • 全屏图片