Pomelo 0.5.5 源码分析(1)-组件
由于才接触 Node.js 几天,看源码时各种细节和设计方法都得熟悉下。结合 chatofpomelo-websocket,先从 Pomelo 的使用入口开始看。
chatofpomelo 的开启流程
Pomelo.createApp
出来 Application,然后 Application.start
就开启了。
createApp
时会调 Application.init
来做初始化。
init
里调 AppUtil.defaultConfiguration
来读入默认配置。例如从 master.json 里读入 master 配置(Application.master),从 servers.json 里读入服务器集群各进程的 type、host 和 port 配置(可以通过 Application.get("__serverMap__")
获取)。
组件的挂载
组件放在 components 目录下。各组件可以通过 Pomelo.components
或者直接通过 Pomelo 来按名取。也可以通过 Application.components
来按名取(每个组件的名字在自己的 name 属性里,通常为 JS 文件名加前后双下划线,例如 connector.js 的组件名为 __connector__
)。
下面看下组件的挂载和运行。
Pomelo 里会遍历 componets 目录里的各个 JS 文件,然后 require 到 Pomelo 里和 Pomelo.components
里。
Application.start
里先调用 AppUtil.loadDefaultComponents
,loadDefaultComponents
里会根据 Application.serverType
来 Application.load
需要的 components。
Application.load
里会将 Pomelo 里的 components 放到自己的 components 里。
Application.start/stop/afterStart
等方法会统一执行各 components 里的对应 start/stop/afterStart
等方法。
补充
这篇发表后,在 Google 里搜了下(我的一点恶趣味:经常发表随笔后会看看搜索引擎收录了没)Pomelo 源码分析 组件
,发现了 Pomelo 官方 Wiki 里关于组件的说明,奇怪之前准备看组件时没搜到。分析源码之前也浏览了下官方 Wiki,应该是偏向于了解大概了,各细节没了太大印象。
不过官方已经有了也没关系,随笔给人参考的价值变小后,就当自己的笔记吧。
另外网上也有些 Pomelo 的源码分析了,但是看了眼,跟我想要的不太一样。
附官方组件 Wiki
Pomelo-Framework 里的组件部分:
Pomelo-组件:
https://github.com/NetEase/pomelo/wiki/Pomelo-%E7%BB%84%E4%BB%B6