置顶 企业级 Node.js 框架 Egg 发布 2.0,性能提升 30%,拥抱 Async
发布于 11 天前 作者 atian25 3714 次浏览 最后一次编辑是 1 天前 来自 分享

image.png

原文地址:知乎专栏 https://zhuanlan.zhihu.com/p/31640541 顺便拉下票,OSChina 开源中国正在举办 2017年度最受欢迎中国开源软件评选,请为 Egg 打 Call~

给大家介绍下,Egg 2.0 正式版,今天 12.3 冒泡啦,距 3.21 的 Egg 1.0 版本 时隔 8 个月。

image.png

Egg 是阿里 Node.js 的核心基础框架,面向『企业级的 Web 基础框架』这个领域,提供了「微内核 + 插件机制 + 框架定制能力」,完美达成生态共建和差异化定制的平衡点。
既适合个人小项目快速开发,也适合团队架构师基于自身的技术架构在 Egg 基础上扩展出适合特定团队业务场景的框架。
它沉淀自阿里在各行各业不同领域的大规模工程实践经验,稳定支撑了多年天猫双11大促,顶级流量压力。

2.0 特性

  • 基于 Koa 2.x
  • 框架层优化带来 30% 左右的性能提升,不含 Node 8 带来的提升。
  • 为了方便开发者快速升级,保持了对 Egg 1.x 以及 generator function 的兼容。

image.png

如何升级

Egg 的理念之一是渐进式增强,故我们为开发者提供渐进升级的体验。

  1. Node.js 使用最新的 LTS 版本(>=8.9.0)。
  2. 修改 package.json 中 egg 的依赖为 ^2.0.0。
  3. 检查相关插件是否发布新版本(可选)。
  4. 重新安装依赖,跑单元测试。

搞定!几乎不需要修改任何一行代码,就已经完成了升级。

这得益于 Egg 对 1.x 的兼容,但为了更好的统一代码风格,以及更佳的性能和错误堆栈,我们建议开发者参考 升级指南 进一步升级。

未来规划

如您所知,Egg 采用的是 『微内核 + 插件 + 上层框架』 模式。

其中微内核经过 3 年 4 个版本,以及在阿里的大规模应用,已经打磨的非常稳定。

接下来我们的重心主要在开发者体验方面的优化,包括:

  • 更好的开发者体验,包括 TypeScript,开发者工具,IDE 工具等方面。
  • 社区扶持
    • 协助业界的前端团队,打造适合特定团队业务场景的上层框架,欢迎勾搭。
    • 分享我们在团队、协作、规范化等方面的经验。
    • 分享在 Docker,GraphQL,SSR 等方面的探索和最佳实践分享。
  • 国际化,官网和文档翻译等。

同时,我们也欢迎社区更多的参与,一起打造更完善的生态。

image.png

我们这一年

截止至今天(2017-12-03):

社区方面:

  • 来自 BAT,丁香园,全民直播等多家兄弟公司的反馈和插件回馈。
  • 来自 GitHub Dependents 的统计:992 Repositories, 231 Packages
  • NPM 搜索结果超过 400 个。
  • 上层框架:
    • 北斗 - Isomorphic framework for server-rendered React apps
    • avet - A very comfortable framework for writing isomorphic applications
  • 如果你有好的分享,PR 传送门:awesome-egg

趣味数据:

  • 官网访问量中,Mac 占 47% → 这比例挺高的,看来 Node 程序猿都很幸福。
  • 周末的访问量约为平时的 1/3 → 看来 Node 程序猿周末加班少。(滑稽
  • 官网访问来源:站内,直链,外链各 30% 多,来自搜索引擎的较少。

分享交流:

image.png

image.png

写在最后

开源,痛并快乐着。

image.png

45 回复

顺便拉下票,OSChina 开源中国正在举办 2017年度最受欢迎中国开源软件评选,请为 Egg 打 Call~

另外,顶楼『分享交流』章节的两个 Slide 推荐看下~

不错。继续完善。

加油!async万岁~

支持支持!!

加油!加油!

赞👍赞👍赞👍

接触eggjs半年,真的感谢贵团队,你们辛苦了!

性能提升30%是怎么做到的?

@avwo 主要的一部分损耗在于 co,因为 Egg 1 是兼容 async 的,做法就是使用 co 包裹。而在 Egg 2 里面,async-first,大部分情况下不需要包裹了,这块能减少不少。

具体的可以看:https://github.com/eggjs/benchmark/pull/14

PS:对绝大部分应用来说,这些性能根本没啥意义。

具有里程碑意义,社区价值较大,置顶

赞👍赞👍赞👍

支持支持

支持,支持

已经在研究了 支持支持。

为 Egg 打 Call~~~ 马上在项目中用起来。 另外,有兴趣的可以关注beidou 同构框架, 基于eggjs, 共同建设eggjs生态

如果非要用windows server,该怎么部署。没有入口文件,怎么用pm2

牛逼~下个个人项目一定使用

@coldraincn 写个 index.js 调用 egg.startCluster 即可

已投票,这个项目好用,支持! egg-restapi-module-tool 已经加入oauth2.0功能,下一步争取升级到egg2.0 。

看完security risk in node web, 瞬间觉得Egg强壮的很…

这文案杠杠的! 支持!

@danielsss 在蚂蚁金服线上系统使用的就是这套方案,当然级别不低

@coldraincn PM2 有api的,通过api调用启动脚本就好了。 http://pm2.keymetrics.io/docs/usage/pm2-api/

@coldraincn https://github.com/eggjs/egg-scripts/pull/11 window下停止服务的解决办法。 貌似egg在考虑保存pid方式的实现 https://github.com/eggjs/egg-cluster/pull/51 windows下隐藏worker窗口实现

@waitingsong 😂😂😂

来自酷炫的 CNodeMD

从发布3.21发布1.0就一直在用,真心赞。

很溜,以后有外包就用它了

@atian25 😢原来如此,蚂蚁三次面试与各位大神又失之交臂了. 只能再默默的努力了 自豪地采用 CNodeJS ionic

今天体验了一番,是时候重构项目了 From Noder

@daileimail 从啥重构到啥?

有没有完全使用typescript来写的计划。使用完全的oop风格来编写代码。

@MedusaLeee Egg 本身不会用 TS 重写,但我们会提供一些周边的支持来方便开发者用 TS 写 Egg 应用。

我们的 example 那边有 TS 的示例,蚂蚁那边的 Egg 应用也有很多都是 TS 写的。

回到顶部