PHP中文网2017-04-17 11:30:51
不建议使用node写。因为node的特点是偏向于性能,而php的特点是注重逻辑。
开发电商网站的话。是对逻辑有更多要求。比如说,分类,商品,评论,订单,之类的都是业务逻辑。
php 的(fpm)模型是基于线程的同步模型。所以你可以把大把的精力花在怎么处理你的业务逻辑。而不是去向java那样去捣鼓线程同步,资源抢占上面。更不用想node那样去考虑阻塞,异步流程,和异常管理。这种模型对于性能上很粗暴但是对于业务开发成型非常有效。进程模型在低并发的场景中是非常有效的,没有内存泄漏,和健壮性不高带来的问题。因为一个线程的结束,就意味着所有占据的资源都得到释放。php使用c作为扩展载体也确保了计算和io的性能。
node 是基于单线程异步模型。所以你需要考虑的事情就比较多了。异步流程控制,单线程是脆弱的,需要做master/slave来增强健壮度。还要考虑异步下的异常处理。单线程也意味着不能容忍任何低性能(耗时计算等)和阻塞。
php社区现在发展的也越来越好,有symfony2和laravel等框架都让你不用去自己去造轮子。自己现在的各种第三方平台都对php提供支持。而且以上两个框架都提供了依赖注入,orm,模块化开发,资源管理等特性。可以轻松开发业务复杂而了扩展性好的web程序。对rest也都有很好的支持。横向扩展也很好。
node在web开发框架上只有connect,express比较成熟一些,而且express并不是一个mvc框架,准确来说是一个http业务层框架。也就意味着你需要分散一些精力去处理除业务逻辑之外的部分,比如如何分层,选择什么样的orm,采用什么样的模板引擎等。而且express的很多功能需要中间件提供支持,比如 cookies, session, json,crsf等。驾驭好express需要对http有深入的认识。对rest支持比较裸露。需要使用第三方类库才能优雅支持,通过express构建业务复杂扩展性好的web程序需要开发者不仅拥有比较强的js功底和开发复杂业务的经验还要有维护优雅可扩展代码的能力。
所以个人认为nodejs不适合开发具有以下性质的产品
1.原型产品
2.对性能无要求产品
3.计算量更多
4.团队中js能力整体比较弱
所以 你的 的问题 起码占了1,2。不推荐使用node。
node固然美使用需谨慎,因为他有很多坑需要开发者来填。nodejs个人认为相比较其他平台还是太年轻,这也意味着,我们需要帮助node长大。变成高性能和易用并存的强大平台。
伊谢尔伦2017-04-17 11:30:51
如果题主是一个对js很熟悉的程序员,用node是极好的,统一了语言,可以兼顾开发速度和性能。
如果是一个团队来做,还要考虑队友是否能接受node,php也许更合适。
单纯进行理论可行性的讨论是没有意义的,Just do it!
PHP中文网2017-04-17 11:30:51
因为Node的特点和灵活性,加上几年发展生态也比较成熟了。我学得规避一下大计算的部分,和Node做电商项目还是挻合适的。
有个问题: Node做电商数据库是用mongodb还是Mysql合适。