公司选型中有多少选择egg.js的?(个人项目除外)
发布于 8 年前 作者 MedusaLeee 24626 次预览 最后一次回复是 7 年前 来自 问答
如题,公司选型中有多少选择egg.js的?(个人项目除外)。
个人感觉,egg的插件还不是特别完善,看到egg issue问题中好多人提的问题,作者都想大家去PR,这出发点是好的,但是在公司中,遇到问题就需要自己去PR的话,很花时间啊。如果是个人项目还是可以贡献代码的,因为时间允许。如何做出选择,我的备选方案是koa2和egg。我更倾向于koa2。
45 回复
Egg 本身就是架构在 Koa 之上的框架。选 Koa 什么都要自己搞,为什么不用成熟稳定的框架?我不太理解~~
egg 和 koa 不冲突,egg 只是在 koa 的基础上,做了一次规范约束,以及对应的一些封装而已。 egg 完全可以非常低成本的使用 koa 社区的所有东西。
如果你自己用 koa,也一样需要去做这样的一些封装,或者是用其他人的封装。(那为何不选择 egg 呢? 至少目前看来 egg 的封装还是比较适中的,扩展性也不错,并且有大规模的线上验证)
我觉得egg已经做得很完善了,有时候开发者的思维跟使用者不一样,不是每个使用者都用到你这样的功能,所以开发者也没必要去开发和完善,过度设计不是一件好事 自豪地采用 CNodeJS ionic
@yudawei1230 👍
有三种角色:框架开发者,插件开发者,应用开发者。
我们是同时有这三个角色的,但之间的界限是分得很清的。 egg 你可以看成是一个社区项目,只是刚好目前社区里面最活跃的这批人,他们的雇主是阿里,而且他们的业务中也大量用到 egg 而已。 前两者都是社区的一份子,而不是为第三者去做免费外包,有需求就必须马上跟进,靠人不如靠己。
@MedusaLeee 我个人的看法是,
egg 的定位是怎么样的,它做什么,不做什么,为什么我们推荐大家基于 egg 去定制自己的框架,有兴趣可以看下我这篇 Slide: 「Egg & Node.js 从小工坊走向企业级开发」 https://github.com/atian25/blog/issues/20
来看评论。
From PWA CNode
现在公司总监要求用egg 然后自己就撸了一个 反正早晚要用不如早用 有坑早点趟
没有批评的意思,只是从这里看出楼主应该koa用的也不好。。 参考其他egg插件比如egg-jwt之类的,看他们是怎么在原有插件上封装的,然后自己封装,用不了多长时间吧。。。
哇,egg已经有5000颗星星了
think egg,考虑个蛋
是的,你用 koa,最终搞搞搞也会出来一个和 egg 差不多的东西。
@rwing 关键是,搞出来的东西,是只能用在自己项目的,后来接手的人:
ThinkJS
来自酷炫的 CNodeMD
爱用什么什么, 反正都是node, 如果真觉得这两个东西差别很大的话,说明你node也不太好.
专业助攻
132456
如果公司项目是由你亲手来搭建,那么我觉得用原生的koa2来搭建,这很能磨炼自己(个人对generator的写法有点反感),而且自己也能完全掌控项目情况。如果是别人来搭建那就选egg好了,有文档,大家都能看懂,不会出现意见不合的情况
@hpgt 其实早在 Egg 1.0 版本的时候,就完全可以用 async function 来写了,底层早就兼容好了。只要你的 Node 版本支持就 ok 了。
从 Koa 重新搭建,我觉得真心没必要,就像我们之前用 Express 时也没想过要从 Connect 开始搭建? 适当分层,把时间花在更美好的事上,才是有价值的。
@atian25 最近已经把egg的文档看了一遍,也准备用在自己的项目中, 不过我现在有个问题想请教一下,比如:我使用了egg-mongoose, 这个时候mongoose这个库发布了新版本对一些bug做了修复, egg-mongoose怎么更新到最新的mongoose版本呢
@liuxuech 我们的依赖都是通过
^引入的,所以你只需要简单的重新安装下依赖,就能引入子依赖的更新了,无需上层类库跟随发版本。当然,前提条件是千万不要锁版本。
只能说按照 egg 的约束去做非常有必要,清晰
@okoala 赞 From Noder
统一回复下,感谢大家批评与建议。首先我用node时间也不短了,有三年了。这次选型除了题目中提出背景,还有个其他背景的,那就是团队中前端出身和应届生比较多,用egg的话可能把他们当机器更好,会仿照着写就行。但是我最反对的就是把员工当成机器,公司是为了赚钱,但是科技公司除了钱,技术积累和技术氛围很重要。我们老总也是个技术人。最后我们选择koa,原因是我们会在这次开发中把koa的一些知识都普及给员工,知道一个技术的发展史还是很重要的。毕竟koa相对底层,没有koa基础直接撸egg,也不好理解。我们公司是这样安排时间的,一天8小时,6-7小时开发,1-2小时代码review。新员工的成长比较看中。另外,我们提起了一个内部egg联系项目,当大家不忙的时候,用来练手的项目,egg微信评价系统。因为选型也是需要大家发表意见的,不是一个人说了算的,公开透明。再次感谢大家,我会继续努力。
来自酷炫的 CNodeMD
不了解egg 还是用的express 落后了 哈哈
学习Egg的源码,就知道Egg团队是在用心做,代码质量很高,可以学到很多东西。
@MedusaLeee
我们很多团队中的成员,也都是应届生。
用 egg 不等于把他们当机器,他们还是需要去了解底层的内容的,需要去写插件的。 如这篇 结合源码解密 egg 运行原理 就是一个应届生写的。
egg 只是用来规范化他们的代码风格和质量,达到千人一面,这对新人来说,是好事:
还是上面那张图:
@atian25 egg的csrf怎么做特殊处理,比如微信端POST请求我的服务器的时候 我不做csrf验证
@liuxuech https://eggjs.org/zh-cn/core/security.html
@lluxuech https://eggjs.org/zh-cn/core/security.html#match-和-ignore
@atian25 谢谢 可以了 后面一定仔细看文档
@MedusaLeee 公司给个👍
@MedusaLeee 还是觉得先了解底层框架比较好,express,koa都撸一遍
@diyao 一个 IP 是不是你自己的内部 IP,肯定是要自己写判断啦
@atian25 ^_^,是的,文档上没有看到可以直接取消csrf的,让后那个判断方法,先直接让他返回true了。多谢回复~ let isInnerIp = function (ip) { console.log(‘您的ip地址’ + ip) return true; }
@diyao 谁说没有… 看安全章节,还有 egg-security 文档
上一个公司项目就选egg.js,挺好用的,文档也全
@atian25 例如关闭 xframe 防范: exports.security = { xframe: { enable: false, }, }; 所以xframe换成csrf
thinkjs +1.
thinkjs + 1.
@atian25 在选型讨论的时候,个人非常推荐egg,既然都要做的事,并且别人已经做的非常成熟的事,干嘛不用别人的而去自己撸一遍。唯一的担忧是,ali的kpi产物大多有头没尾,离开了核心开发者后期基本就死,希望egg能一直发展下去
@erdun 我只回复一个点:如果不用 Egg,自行基于 express 或 Koa,你们是不是肯定也会在上面做一层封装,那问题来了:
还是用现成的吧. 等自己封装完 ,chicken3.0都出了
😂Phoenix 3.0
使用 express 或者 koa 的好处是可用的包比较多,但是架构问题需要多费心。 我们目前用的 nest.js
@zuohuadong koa 的中间件生态是可以直接用在 egg 的
2018 Nodejs+Koa2入门实战视频教程百度网盘下载地址:
https://pan.baidu.com/s/1KNaA97kGwNhavch5rP_G7w