首发于NodeJS
eggjs-feed-03

eggjs-feed-03

> eggjs-feed 系列期刊,用于汇总近期值得关注的 egg 相关动态,将不定期发布。

TOC:
  • 精彩讨论
  • 文档更新 && 导读
  • 值得关注的 Node.js 社区动态



----

??? Egg Star 破 4k 啦!!!

??? Egg Star 破 4k 啦!!!

??? Egg Star 破 4k 啦!!!

你不来一发么?github.com/eggjs/egg

----


## 精彩讨论

在 eggjs 团队的日常协作中,遵循「基于 GitLab 的硬盘式异步协作模式」。
通过 issue 发起 RFC 提案 -> 讨论定稿-> 提交 Pull Request -> Code Review -> 发布。
这样便于沉淀,即使是当时没有参与讨论的开发者,事后也能通过 issue 了解某个功能设计的前因后果。

Θ 子进程的优雅退出 - 再次完善

背景:
在做 egg-cluster 的时候,app worker 是由 cluster fork 出来的,然而 agent worker 是 master 通过 child_process.fork 出来的。他们两者之间在 master 正常退出的情况下,没太大区别。但是在 master 意外被强杀,如 `kill -9` 杀掉,那么 app worker 还是会优雅退出,但是 agent worker 却变成了孤儿进程。

我们发现,通过 child_process fork 出来的子进程,如果需要实现父进程挂了子进程也跟着挂,必须在子进程里面也加上相应的处理才能实现,没办法只通过父进程来实现。

于是我们将该解决方案沉淀到一个 graceful-process 模块,只需要在子进程代码里面执行一下优雅退出逻辑即可。

fix: agent should exit on disconnect event whatever master kill with SIGKILL by fengmk2 · Pull Request #27 · eggjs/egg-cluster

Θ 断点调试插件

在本地断点时,经常遇到的一个痛点就是修改后重启的 worker 的 debugPort 变了,@仙森(黄朝桂) 同学为此专门写了个 egg-development-proxyworker 插件,配合 vscode / atom 调试非常方便。

Θ egg-bin 覆盖率工具替换为 nyc


egg-bin@4.x 把内置的覆盖率工具 istanbul 替换为 nyc,多进程覆盖率的测试速度提升了几倍。都是同一作者的作品,后者目前活跃度高,并支持前端很多新特性。

测试命令行的时候,推荐用我们的 coffee 和 egg-bin,具体可以参见 egg-bin 本身的测试。



Θ Egg 正在逐步支持 TypeScript

感谢 @宋爱华,目前 Egg 已经开始陆续支持 TS,github.com/eggjs/egg/pu,欢迎大家一起参与完善。



Θ 再次公告,Egg 从 1.0 版本开始早就已经支持 Async Await

直到现在,还是很多同学以为 Egg 不支持 Async,其实早在 1.0 版时,你只需要 Node 7.6+ 以上版本,即可在应用开发时使用全 Async 风格的代码。

作为应用开发者,并不需要关注 Egg 底层,我们兼容了 Koa 1.x 和 2.x 的中间件,可以放心的复用 Koa 社区生态。

具体参见文档 - 『使用 async function 开发应用』。



Θ 插件理念进化

在实践中,我们发现很多情况下,一些功能是具备很大共性,但又需要支持不同策略的,于是我们在以下插件中做了一些抽象和实践:

简单的说,统一规范的基础上又支持差异化定制。
主插件负责通用逻辑和流程的处理,二级策略插件用于根据业务场景选择挂载。

不要问我为什么上面那么多「 . 」结尾,@李奇 知乎专栏编辑器那个 Bug 还没修复啊,一个月了吧?

## 文档

对于开源项目来说,文档是非常重要的。虽然我们姗姗来迟,但我们诚意十足。
egg 的文档汇集了很多我们在企业级应用中沉淀下来的框架设计思路,即使你不用 egg,也可以借鉴参考下。



有多位同学参与了我们的文档中译英,非常感谢。目前还未全部完成,我们需要你的帮助,如果有兴趣请访问:github.com/eggjs/egg/is

## 值得关注的社区动态

编辑于 2017-06-29

文章被以下专栏收录