egg 自9月份在宁JS正式宣布开源以来,一直在迭代改进。源代码是开放出来了,但是文档一直落后于代码进度。
开源不仅仅是代码,文档也是非常重要的部分。
为了让 egg 文档尽快完成第一个发布版本,egg 团队已经齐聚北京,陪伴着雾霾在集中讨论和分工开始编写着自高考以来最大的一次文字工作。
在吸着雾霾写文档之余,我们也想尽快让对 egg 感兴趣的同学在第一时间看到最新鲜的文档,所以我们决定每天都会直播当天 review 通过的文档,会以回复的形式粘贴写来。
当然,第一版文档并不会涵盖 egg 框架的方方面面,如果不足,欢迎大家敦促指正。
mark
前排撒花
m
第一篇 review 通过,因为是分工编写,不保证文档是按序产出的。 框架扩展 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/basics/extend.md ,介绍 egg 框架是如何对 koa 进行扩展的,也详细介绍了开发者如何基于这个 extend 机制扩展 egg 的功能满足自身的业务需求。
第二篇出来了:运行环境不是一件简单的事情,egg 框架给运行环境做了一些基本约定 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/basics/env.md
Mark
@dead-horse 在睡觉之前完成今天的第三篇:详细介绍了 egg 与 koa 历史渊源,以及 koa 和 express 的具体差异点。https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/intro/egg-and-koa.md
ding
mark
mark
mark
第四篇:如何自定义应用启动行为,完成一些初始化工作 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/basics/app-start.md
mark
mark
mark
@sharp-c 太给力了,我们马上 review。
牛牛牛 自豪地采用 CNodeJS ionic
火前留名
嗯,有个疑问: 为什么不切到 koa@2 呢
@magicdawn 看文档
不瞒你说, 都是 TBD …
T_T 过不去北京
你们不开个代码直播么?
你们不开个代码直播么?
碉堡了 你们不开个代码直播么?
看一堆男人挤在一起写文档, 就有一种偷窥的欲望啊, 求开直播~
成人高考,哈哈
mark
第十篇:httpclient: 互联网时代,无数服务是基于 HTTP 协议进行通信的。 web 应用调用 HTTP 服务必然是一种非常常见的应用场景。为此框架基于 urllib 内置实现了一个 httpclient,应用可以非常便捷地完成任何 HTTP 请求。 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/core/httpclient.md
第十二篇:egg 核心功能 Loader,让你知道 egg 如何加载文件的 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/advanced/loader.md
第十三篇:egg 框架的路由实现和使用说明 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/basics/router.md
@fengmk2 koa-router 5.x,resources应该是自己实现的
@fengmk2 好想看直播啊,一对高手被文档逼疯,哈哈
第十四篇:深入了解 egg 所使用的多进程模型 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/advanced/cluster.md
makr
第十五篇:安全 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/core/security.md
web 安全很复杂,egg 对此做了很多封装,看完这篇你就可以伪装成安全工程师了。
@fengmk2 学到了
mark
赞
来自酷炫的 CNodeMD
第十六篇: 快速入门 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/guide/quickstart.md 大家吐槽最多, 最讨厌最常见的 guide TBD 被我吃掉了
赞赞赞
赞赞赞,真希望自己也能贡献一篇 From Noder
第十八篇: controller 负责解析用户的输入,处理后返回相应的结果,例如 … https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/basics/controller.md
第十九篇:插件机制是我们框架的一大特色。它不但可以保证框架核心的足够精简、稳定、高效,还可以促进业务逻辑的复用,生态圈的形成。有人可能会问了
koa 已经有了中间件的机制,为啥还要插件呢?
中间件、插件、应用它们之间是什么关系,有什么区别?
我该怎么使用一个插件?
如何编写一个插件?
…
接下来我们就来逐一讨论 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/advanced/plugin.md
mark
来自酷炫的 CNodeMD
第二十篇:egg 引入了 Service 概念,它有什么作用呢?可以深入看看 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/basics/service.md
第二十一篇:
框架是一层抽象,我们可以基于 egg 开发上层框架,而且 egg 支持多层继承。 如果很多应用都有相同的需求就得提供框架的支持,这种需求存在以下的场景,但不限于此
- 统一的技术选型,比如数据库、模板、前端框架及各种中间件设施都需要选型,而框架封装后保证应用使用一套架构。
- 统一的默认配置,开源社区的配置可能不适用于公司,而又不希望应用去配置。
- 统一的部署方案,通过框架和平台的双向控制,应用只需要关注自己的代码,具体查看部署章节
- 统一的代码风格,框架不仅仅解决代码重用问题,还可以对应用做一定约束,作为企业框架是很必要的。egg 在 koa 基础上做了很多约定,框架可以使用 Loader自己定义代码规则。
https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/advanced/framework.md
第二十二篇:为什么要单元测试? 先问我们自己以下几个问题:
- 你的代码质量如何度量?
- 你是如何保证代码质量?
- 你敢随时重构代码吗?
- 你是如何确保重构的代码依然保持正确性?
- 你是否有足够信心在没有测试的情况下随时发布你的代码?
如果答案都比较犹豫,那么就证明我们非常需要单元测试。 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/core/unittest.md
mark
mark
赞
不错 mark下
在后端开发中,模板渲染是必不可缺的一个功能,并且 view 插件也是 egg 灵活实现差异化定制的一个经典案例。
给大家带来第二十三,二十四篇连发:
所以你现在在北京?
@xadillax 是的,还有几个小时就回杭州了。
第二十五篇:在 web 应用方面 MySQL 是最常见,最好的关系型数据库之一。非常多网站都选择 MySQL 作为网站数据库。本篇文档介绍了如何使用 egg 框架及其插件来访问数据库。 https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/practice/mysql.md
可以出书了你们。
最后一篇:介绍 egg 是什么
egg 为企业级框架和应用而生,我们希望由 egg 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本。
https://github.com/eggjs/egg/blob/master/docs/source/zh-cn/intro/index.md
赞 看源码好好学习下
完整版地址:https://eggjs.org/zh-cn
mark
牛 不错 企业级的框架
最后一篇总结写在这里了:
知乎问答: 如何评价阿里开源的企业级 Node.js 框架 egg? https://www.zhihu.com/question/50526101/answer/144952130
matk
mark
mark
mark
后续值得关注的 egg 动态将更新到 https://zhuanlan.zhihu.com/eggjs
mark
mark
问一下楼主,如何统一管理多个egg项目,使用pm2可以部署多个nodejs项目,egg的话是怎么部署的
mark
mark再来一次
@yycno1 mark
跟普通的 Node.js 项目没啥区别,一样部署。只是我们觉得没必要用 pm2,相关文档:
看上去好屌的样子。。周末玩玩。。
mark,顶一个
@atian25 好的,谢谢~
赞一个
测试
mark
这个文档顺序,看着就很舒服。 官方教程
顶
From Noder
@wbget 这是五个月前的了,后面都已经发布到官网了,直接看 http://eggjs.org 即可