使用egg + sequelizejs 开发一个电商平台
发布于 1 个月前 作者 sfyr111 2392 次浏览 来自 分享

https://github.com/sfyr111/egg-commerce 😄大家star 鼓励下哈,初次使用 egg 和 sequelizejs

egg / mysql 开发电商平台 集成支付宝面对面支付、手机网站唤醒APP支付

相关栈

node / mysql / egg / sequelizejs / redis / 支付宝支付

本地开发

$ npm i
$ npm run dev
$ open http://localhost:7071/

API 文档

用户模块

前台商品展示及购物车

前台收货地址

前台订单及支付

后台商品分类管理

后台商品管理

后台管理订单

33 回复

我能安利下 nestjs 么,装饰器,注解,管道,看守器都有~ egg2 就在学这个框架: https://docs.nestjs.cn

@zuohuadong 为什么能得出 egg 学这个框架呢? 自豪地采用 CNodeJS ionic

@zuohuadong 抱歉,egg2 并没有学习 nest。

egg 2.x 主要是升级到 node 8.x 和 async 优先而已。

如果你指的是 TS 这块的话,蚂蚁那边早在 nest 出来很久之前就已经在用 TS 编写内部 egg 应用了,当然 nest 出来后,内部也有过一些对它的观察和点评,但也就仅此而已。

最近我正在整理的是把这两年来内部各部门对 TS + egg 的一些实践给总结提炼出来,这块不属于 egg 的改造,而仅仅是一个基于 egg 的上层框架 ts-egg 以及一套基于 ts 开发 egg 的规约而已。在这过程中,我也有看了一些基于 TS 开发 node 应用的开源项目,nest 也仅仅是其中一款而已。

至于 egg 和 nest 的对比,老实说,根本不是一个层面上的概念,没法对比的,egg 是专注于框架的框架这一层的,它不是一个全家桶类型的集成框架,是很克制的,只有基于 egg 的上层框架,如我说的 ts-egg 才是和 nest 一个层面的,可以用来对比的。

社区能有多一些框架,这个我觉得是好事,虽然我个人觉得 nest 有点繁琐(个人喜好,不想讨论,谢谢),但请不要在每一个 egg 的 topic 下,一句话无脑的去硬广,这样其实效果不是很好的,你应该去写一个真实的 case 来告诉用户场景,而不是一个传送桶硬广。至于 Egg 的架构设计是不是很稚嫩,这点如果你进阿里后,问问那一群 P6, P7,P8,甚至 P9 的体感,或者你真正理解 egg 的定位就知道了。

我也从来没有去什么 Express、ThinkJS 的 Topic 下提到任何 Egg 的推广,这样挺 low 的,社区越繁荣越好,而不是你死我活的黑暗森林。不想撕逼,所以一直旁观,也期望 nest 能发展好,看到但一些不正确的言论,所以只好出来声明下。

@atian25 感谢回复,node 社区一直对架构问题不是很重视(虽然最近几年要比前几年好很多),nest.js 大量学习了 spring 框架的一些思想,目前来说在国内,nest 还是被严重低估了,这是我想快速推广的原因之一。 反感 egg 主要是个人情绪上的,一是因为阿里项目10个开源9个死的情况,二是在产品上认为少即是多,提供更好更少的选择反而有助于生态。 在定位上来说,nest 一定程度上想替代 java 做一些事情,但是从阿里架构来看,node 只是用来做前端部分,所以个人认为不会有太好的发展。

在egg 下推广nest的原因也很简单,能认识到egg 的,大多是意识到node 架构问题的,这点上抱歉~

@zuohuadong 安利就安利,别顺带黑OK ?

@okoala 也希望阿里能将egg 好好开源,别再像 Tengine和SUI等项目一样。。。

@zuohuadong 开源项目说死就死,也是很正常的。你说的阿里项目10个开源9个死这种情况其实跟阿里没什么关系,绝大多数厂都是10个开源9.9个死

我说一句难听的,nest这个项目同样是,因为他也是属于开源项目的一个,这个是不能否定的。

要推广一款产品,「有和没有」的对比是一方面,另一方面就是多写场景进行对比。

最后,你说的nest特性,egg也能做到。带个人情绪很容易使得招黑和给人带来反感。谢谢

@215566435 感谢回复,但是装饰器和注解呢?

开源项目来说,可以参考下 微软,FB,以及谷歌的~

就算你不维护了,写个说明让大家准备好迁移~ 阿里的这种烂摊子太多,简直无力吐槽,外界甚至传言阿里开源是为了KPI,考核完了就不维护了~

@zuohuadong 微软,FB,以及谷歌的,死得不尽其数。

巨硬的东西,竟然有人吹,死了多少半死不活又多少

FB的玩意儿,死得也很多的,去看看仓库,有些你都不知名,react这种成名的就不说了,社区起来了没什么死不死。

最后说一下谷歌,谷歌这个公司的策略本身就不同各厂。

@215566435 最近几年微软开源的东西比较多,整体也比较开放。 比如 typescript 。 最起码的,你不维护了,说一声,大家该迁移迁移,该成立新项目组接手的接手,issues 压一堆,然后老外发话了这才回复~~

起码的态度问题和对开源的尊重~

平常心。讨论框架有毛用,来钱才是王道,issues 多代表参与者多,ts 没有不维护啊。

@zuohuadong

以下仅代表我的个人吐槽,就事论事,非针对个人攻击,请理解。

我们来看一组数据:阿里有几万个的研发人员,开源项目有 600 多个,不可否认,肯定有一些老鼠屎,但那也只是个别,现在也有阿里开源小组在运作了。 你再看看国内,开源项目死掉很正常,但要盯着这几个来黑阿里的整体开源,有点「有色眼镜偏差」了。 请告诉我,国内有哪些公司的开源运作比阿里更好的?Alibaba 在 GitHub 上 Star 数超过 170,000,组织排名世界前十,国内第一。 请再告诉我,国内非大公司,有哪些个人开源项目是多年优秀劳模?要黑,也轮不到一些自己都没搞过几个开源的人来黑,那叫人云亦云,眼红。 双重标准


回到 Egg 本身,目前开源一年多了,发布 20 多个版本(还不算插件的),解决了 1500 个 issue,500+ 个 PR,100 多个质量优秀的库(你见过多少覆盖率 100% 的?) Egg 的核心开发者中:

  • @fengmk2@dead_horse 是 CNPM 和 Koa 的核心开发者,也是资深开源者(人均 300 多个包谁敢一战)
  • 疑难杂症方面,我们有朴灵老师,还有张秋怡(Node TSC 成员) ,要鄙视阿里的 Node 啊,抱歉,国内阿里自称第二,谁敢当第一。

就算你不维护了,写个说明让大家准备好迁移~

这是巨婴心态,项目都开源出来了,如果是高需用户,自然会深度参与,去推动,如果原维护者精力不在了,然后你们就一直没发现,还需要别人发个公告?难道自己就没能力 fork 继续维护。

讲个笑话:有个农夫耕田,要自己榔头除草;后面有个人做了一个割草机,并免费开源出来,后面那个人转去搞其他技术了。然后农夫就抱怨了:你怎么不继续维护了?我儿子和孙子以后都还要用呢,我自己不懂做割草机,也不打算做。我不管,你既然曾经给过我了,就要免费终身负责到底。


玉伯说过一句:我们是做开源,不是做外包。

转一段之前在知乎回答的问题中,『关于开源的心声』

你是阿里的,阿里都是那个尿性 个人感觉会烂尾,毕竟是阿里的作品,不烂尾对不起自己

遇到这种调调,一般我们也只能无视掉,谁让你是阿里的呢,在这个平台,你有 buff 加成,享受它的好处,自然也要承担这样的所谓的原罪和诋毁。 但今天既然有机会,那就第一次也期望是最后一次吐槽下我的心声: 说的好像,他们自己在部门做的框架(如果能做出来的话),都是不烂尾的,文档注释也能写的好好的,他们离职了,也会默默的一直帮忙维护下去,也不知道他们那些还没我们单测行数多的代码,是不是一直维护下去。真的,你是好人。 阿里前几年包括现在确实会有一些这样的项目,但大哥啊,你要看比例啊,抓个例有什么意思,我撂一句话在这里,他们搞的那些的烂尾概率远远大于阿里。

又是一个阿里的 KPI 项目,每年 4 月份声起,6 月份匿迹

大姐,有在真实公司待过么?这是一个跨了超级多部门的自主发起的共建项目,你来分配 KPI 看看啊?蚂蚁苏千的 KPI 跟我 UC 的 KPI 有屁关系! 涉及到十几个部门的 KPI,要真的是从上面分解下来的,那也不是我们自己下面为了 KPI 而扯出来的项目了,而是真实的大项目了。 时间会证明一切的,我有自信 Egg 的维护时间会比这些喷子的在职时间长。


起码的态度问题和对开源的尊重~

是啊,我有时候也挺心灰意冷的,社区的一些人啊,缺乏对开源者最起码的尊重。

如果阿里搞开源就能混到 KPI 的话,我估计可以当个总监什么的了。

@atian25

  1. 来看看阿里人怎么说,知乎:阿里开源就是垃圾 https://www.zhihu.com/pin/921538038006616064

  2. 近日,有国外开发者在使用 Tengine 后,表现出了对其维护现状的不满,吐槽开发者是不是从不主动维护该项目,只是在空闲时间做一些无关紧要的小更新。Tengine 是由阿里巴巴开发的一款 Web 服务器项目,在 Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。

这位国外开发者表示:当时从 Nginx 转为 Tengine,就是因为 Tengine 更前沿,具备 Nginx 没有的功能。但 Tengine 自 2.2.0 发布后,8 个多月的时间里,只是在修复已知漏洞,没有任何小版本的发布。现在,更像是 Tengine 落后于 Nginx。

他认为 Tengine 的维护者似乎没有尽到应尽的职责,虽然目前仍在使用 Tengine,但如果问题持续下去,将切换回 Nginx。

我们也做开源,但是有些人用我们项目已经在跑线上了,我从来不觉得这些人应该求着我跪着膜拜我,我爱更新不更新,我只觉得,作为一个开源软件,有责任和义务做维护,缺人,可以向社区求助,即使不维护了,那么告诉用户一声。 开源,收费 同样有义务。

@atian25 我不知道,当你使用 tengine 跑线上的时候,后面发现一些BUG,等官方更新,官方也没说不更新,却也没更新~ 当你使用SUI的时候,公司项目维护了几年,发现,没有任何说明的情况下,SUI 这个项目没了,你是什么心态~

尊重是相互的~

所以,我并不是要求项目不烂尾,而是能在烂尾前告知一下用户,然后是用户组建社区维护呢? 还是 给个转移的方式或者方案。这过分么

@zuohuadong 你对 Tengine 开发者的怒气,不应该撒在非 Tengine 开发者身上,谢谢。尊重确实是相互的,从你我做起。

end of discussion

@zuohuadong 讲来讲去你也是盯着 tengine 来直接类比 egg 了,其实说到底还是阿里靶子太大,无形中会放大出现的几个黑点,想必你说的阿里开源 10 个死掉 9 个也是道听途书,没有详细的数据支撑吧

其实 nest 包括你做的是一个好项目,我也在学习,但是目前看来 egg 还在火热地发展并没有看到弃坑的趋势,所以私以为你在推广时应该多讲点干货对比优势,而不是一句模糊的多么多么像 spring 就一定好了,框架说到底是拿来解决问题的,我想开发者选择时更想看到的是在一些实际的开发业务场景下两者或者更多框架对比各自真正解决的痛点,而不是无意义的带有个人情绪的撕逼吧

@zuohuadong 说两句关于SUI的, SUI是基于jQuery的,后来集团整体切换到React技术栈。SUI就没有继续维护了。

@hyj1991 项目不少,不止我一个开发者埋怨,只是我们主要遇到的是这些~ 最近一年阿里的态度好很多了。

@atian25 但是阿里系的开源基本上 都这个尿性~~

所以我怀疑的这个公司价值观~ 从侧面来看的话,月饼事件~

tengine 只是整个事件的一个缩影,你看看其他项目的issues ~ 为什么 谷歌 微软 FB 百度 腾讯 很少有人说他们的开源态度?alinode egg 提升了阿里在 node 社区的口碑,但是 其他语言开发者,对阿里项目都要考虑再三~

@tao1991123 嗯 ,但是 也没有交给第三方开发者,也没有说不维护,也没有大概告诉如何迁移成本最低

想问一下生成支付宝二维码后如何确定用户付款完成?还有手机端的那个生成支付宝手机网站支付的"data": "https://openapi.alipaydev.com/gateway.do?app_id=2016091200492877 这个url地址要怎么用?

@qichangjun 1如何确定用户付款完成? 付款完成后支付宝服务器会发送一个付款状态的 POST 请求至你预先设置好的 notify_url ,这时候你需要写好一个在公网上能访问到的 notify_url 接口来处理此回调,具体你可以查看项目中的 notify_url 配置和 alipayCallback service

2生成支付宝手机网站支付 项目中使用了alipay 第三方库,具体调用请查看 {{host}}/order/mobilePay 接口实现, 它将返回一个支付订单生成的 url ,手机打开此 url 会自动唤醒 APP ,支付成功后回调与问题1相同

口水仗,最无辜的就是楼主啊。不过egg蛮好的,在选用egg之前已经用了koa2,有想法但一直没来得及切到egg。

@zuohuadong 我们定期在更新Tengine,包括推出了重量级的硬件加速方案等等,欢迎使用。 详细Changelog见如下链接: http://tengine.taobao.org/changelog_cn.html#2_2_2

image.png

@wangfakang 感谢还能看到tengine 更新,2.2.0 当时停留了好久,一度认为 tengine 停止了开发。 建议合并 Nginx 的一些更新~

openresty 目前也走在前列了~

我之前一直用的 tengine,后来换成 openresty 了,期待未来 tengine 有更好的发展,为Nginx 生态添砖加瓦。

打起来啦,打起来啦!

来自酷炫的 CNodeMD

回到顶部