当前位置:Gxlcms > PHP教程 > 用Node.js做全栈开发电商平台合适吗,性能怎么样?和JSP、PHP比怎么样?

用Node.js做全栈开发电商平台合适吗,性能怎么样?和JSP、PHP比怎么样?

时间:2021-07-01 10:21:17 帮助过:37人阅读

node.js做全栈开发电商平台 合适吗,性能怎么样?考虑用kraken做web框架。比起jsp和php做网站怎么样

回复内容:

主要观点:适不适合,看用的人,无关工具。

做了近五年的Node.js开发,我能给你几点建议:
1. 臭名昭著的异步回调:回调很头疼,即便已经非常熟悉了,有很多用来让回调更优雅的库:一开始的step,when,小田(@朴灵)的EventProxy,然后到@赵劼的wind.js(曾名jscex,已停止维护)和至今仍流行的async,当然还有嘉宝哥的一个异步库。都是能给你更好的异步回调处理体验的。再后来ECMAScript Harmony(俗称ES6)的日程版本发布,Generator特性被引入到JavaScript中,由此诞生的co库(created by TJ),也成为了改变node中差劲的异步体验的一个里程碑,后来TJ带领express团队,基于co开发了koa框架(现在由@死马主导维护)。这两个库的出现意味着ES6中的node开发,将是no more callback!而国内目前主要用koa的产品有cnpm(http://cnpmjs.org)和鄙团队的柚木时尚(umer.cc),从经验可以负责任地说,无论是开发效率还是体验,都比我们几年前好了100倍!跟世界上最好的语言是有得比的。
2. JavaScript太难学?:我只能说,扯蛋吧,你学不好别诋毁人家。多得是书籍和文献,在此推荐松峰老师(@李松峰)和闪闪(@曹力)翻译的《JavaScript高级程序设计》。如果你说JavaScript太不严谨,不够工程化,那我建议你直接接触有M$创造的TypeScript。作为JS的超集,它增加了强类型特性和稳定的类机制。
3. 稳定性:有不少人问我,他们的node服务承受到一定数量的连接后,内存开销立马飞涨。其实,这个情况,换做是Java也不能避免,而在node中,注意JS自身的GC运行、数据库连接的管理、TCP连接池的管理、文件读取之后的善后等等,就基本差不多了。广告一下,对于JavaScript语言层面的内存优化,可以看下搓文:http://lifemap.in/javascript-memory-optimize/。PS: 更优秀的Node.js Profiling工具也在开发当中。
4. 工程化:目前就以程序部署而言,就有很多种方案供选择,在此我推荐两种:PM2,相信很多接触过node的人都不陌生(为啥是2?哈哈,有内幕哦~)。另外一种,是Phusion Passenger,一个工程化工具,以前用于Ruby和Python,后来增加了Node.js和Metoer的支持,可以直接从Ngnix/Apache启动和管理node的进程。
5. 多线程:这个其实我并不想多说,不过我怕遗漏,还是提一下吧。虽然标称单线程,但其实node中也是有使用多线程的方法。libuv是node社区为C++社区作出的最大贡献,它是支撑node在三大平台上的异步机制和线程运行的重要基础,前身是libev。现在也有libuv到JS的binding,因为现在是手机码字,后来再补上。

-------------广告分割线---------
圣诞节快乐~
做整个平台 -》 不合适
做平台内的部分接口 -》可以尝试一战,比如国内有QQ team做过尝试,D2上也做过分享,支付宝出过基于node的chair前后端分离方案。

电商逻辑极其复杂,以node.js目前工程化的程度来说我认为还难以覆盖(已知问题的解决方案,IDE,debug,profiling等等),而且要真正以node来支撑开发一个电商平台对JS工程师的要求非常高,我觉得业内这样的人才依然相当难觅,不要以为现在前端从业人数很多就想当然的认为招人容易,也不要被眼前JS的上手难易以及性能所迷惑,最后导致顾此失彼,项目流产。

同时核心系统的编码者通常要求对业务逻辑非常清楚,而就目前而言大部分写node的人员多少都与前端打交道或者干脆是FE转的,在整条技术栈上,往往可能是前端对业务了解的最少。

同时题主提到了拿node和php比较,前面也提了,电商系统的逻辑和计算量都很高,而无论是php还是JS这一块都是短板。而相对来说大型系统里的php基本上也只负责整个系统前端的渲染与展示这部分,所以直接拿来比较是不合适的,实在要比较的话,也是用支付宝chair这样的前后分离项目来做比较会合适一些,但试问国内有几家公司能有淘宝这样的体量和前后端的人才积累。

node.js是一门领域内强适用的“语言”,中小型项目/个人项目完全基于node实现没问题,但就现阶段而言真的不建议动不动说什么纯JS的 Full Stack,还请做更多思量和打算。

另外,在真正的重要的、大型的项目上请不要盲目,追求一些比如“语言层面的前后端统一”这样的议题,这是没有意义的。选择一个真正合适的地方用node.js。

=======================================================================
另外,说paypal什么的,pp是我印象里最早将node引入生产环境的大型公司之一了,但人家只是把web端开发从JSP切换成了node.js,系统平台里的该是什么还是什么。
还有类似的例子就是Groupon,他们也用node重构了网页部分内容,沃尔玛亦然。 我随便说一点:大部分网站流量之低以及代码之烂,根本不到谈服务器性能的时候。 真是服了你们这帮人,搞了个node,就天天全栈挂嘴边。 感觉不合适node的特点偏http层,而复杂的业务实现及扩展最好交给后端语言java,c#等 就目前来讲做全栈肯定不合适。

这个也要看你的业务还有你的团队,小打小闹的电商业务你当然可以随便来。但是中大型的要考虑的事情就不只是某个具体技术了。

其他有的的答案很明显只知其一不知其二,鼓励学习尝试新技术是好的,但是得要多方求证,小心决断。

Amazon 沃尔玛 PayPal 只是用了,不是全栈用了好不好?Nodejs再好也要分场景来用,做他最适合的。如果一个技术负责人总喜欢做激进的决定,在正式环境上激进的技术,我只能说他还不成熟。


最后,凡是不讲业务形态和需求,直接罗列具体技术细节,诸如支持什么什么,性能什么什么,都是耍流氓。对于提问者也是。 性能不是问题,开发效率更是杠杠的。

唯一的问题,代码不是给人看的,回调就够坑死维护的同事!
团队精干、人员流动率低,值得考虑;
要是庸才比较多,经常换人维护,趁早歇了吧...

另gitlab上的项目,随便挑一些出来看是否有耐心看完,基本就有答案了。 电商平台肯定要考虑以后几万几十万人用吧,虽然可能项目失败了都没到5000。
想成本低速度快,找个开源php java的改改。
想从头做、迅速出demo去搞天使投资,nodejs走起。
有预算,下周就要用,现在很多电商的saas平台,规模小的话,一年几k,随时租用,自营和多商户都有。
有长期规划,有资金支持,还是参照大型电商平台的业务,用java开搞吧,以后上各种框架、中间件,技术体系建设,都不是问题了,毕竟那么多电商已经躺出路子了。 已经有无数案例证明NodeJS性能,稳定性什么的不是问题,选什么语言,我觉得楼主应该更多的从未来的趋势,成本,对语言的驾驭能力等方面去考虑!

根据我地经验,PHP,JAVA更成熟,而且感觉人更好招,但是过一两年就说不好了 全栈用nodejs做电商平台?你疯了吗 ?稳定性是硬伤,用nodejs写复杂业务和事务问题也会很头疼。nodejs+soa还稍微靠谱些

人气教程排行