Rails与Node.js/PHP/Python等对比

巴扎黑
Freigeben: 2016-11-11 09:58:58
Original
1268 Leute haben es durchsucht

首先,这不是一个比较贴,语言和框架能比较吗? 

其次,我也没有全部用过 

本文唯一的目的在于提醒自己(还有正在浏览的你)真正所需要关注的究竟是什么 

PHP 
PHP是simple but dirty的语言,simple是指学习曲线低,主要是因为有大量的基于php的傻瓜式应用,比如wordpress,discuz之类的,如果你只有一般的博客或论坛需求的话,只要善用google,你不用写哪怕一行代码。但是,php本身simple吗?个人认为不是的,原因就不一一列举了。至于dirty,我更觉得说的是他的设计,语言设计比较糟糕,看着常常的下划线连接的函数名就略窥一二,除了有丰富经验的php程序员,很难有人能写出没有严重漏洞的代码。 

php开发框架推荐:一等:Yii,Yaf,Symfony;二等:Zend,Cake,CI 

Django 
Django是基于Python的web开发框架,和Rails十分的相似,几年前,他比Rails好的地方在于Python比Ruby更“可靠”,所谓可靠,就是更多人用,文档更多,更能通过询问找到答案,但随着近几年Ruby的逐渐兴起(大部分靠Rails的带动),越来越多的网站使用Rails。单论语言设计,Python不见得比Ruby简洁,一致性也略逊于Ruby,可以说Python唯一的优势就是有很多serious scientists都在使用它,在科学计算领域占据大半江山,而Ruby是日本人造的(Ruby借鉴了Python)。倘若Ruby是与Python同时代的的欧美国家诞生的语言,相信现在已经没Python什么事儿了。 

Rails 
Rails是个惊人的web框架,几乎现在所有的主流web框架都能看到Rails的影子,Rails把Ruby的特性用到了极限。Rails能应用于一切大中小型应用,超大规模应用不是单靠任意一个脚本语言就能胜任的。Rails经过多年的发展已经洗尽铅华,现在正处于“一枝独秀”的状态,可以说没有一款框架的综合能力(易用性,简介性,效率,学习曲线等)能超越Rails,NodeJS不行,Django不行,其他“小众”的语言更不行,相反,Rails正处于飞速发展状态,以后超大规模应用的成功案例也会逐一出现。 

NodeJS 
NodeJS是一款很有前途的Web框架,可惜就是晚生了几年,不然现在也是能和Rails一较高下,相比php,Django和Rails,NodeJS的开源项目相对较少,大型的成功案例也略少,但其设计和性能也是相当简洁和高效。相信不久的将来也会大放异彩。 

ASP,JSP等 
复杂,臃肿,企业级,靠人数堆积的公司,国企,银行,电商,创业公司用这些的话就是自杀,重要部门不用这些的话也是自杀(招的人不行,只能用售后啦)。 

其他 
其他语言就是各有各的用途,只不过业务恰好用到该语言罢了,严格的说不能算是专门搞网络开发的,比如Clojure,Io等。这里暂时不讨论了。 

总结: 

如果让我再次选择学习路线(只有语言,不包括server,db方面)的话,我会 

了解一下php,不用深入 

了解一下Yii,一款php的MVC框架,不必深入 

基本学习Ruby 

基本学习Rails 

彻底学习Ruby 

彻底学习Rails 

了解Python,Django,Lisp,Clojure,NodeJS等 

-------------------------分割线------------------------------ 

这篇文章对rails和nodejs的适用场景描述的非常到位。rails和nodejs是最值得关注的两种后台技术。 
声明:这篇文章绝不是一篇讨论 NodeJS 和 Ruby on Rails 孰优孰略的檄文。它描述的只是我们做决策过程中的一些思考、决策背后的原因。两种框架都非常优秀,都出色的完成了它们的设计初衷,这也是为什么我们部分的模块仍然运行在NodeJS上的原因。 

我是NodeJs的大粉丝,认为这是一项让人非常兴奋的技术,相信它会变的越来越流行。我对这项技术非常的欣赏——尽管我们最近把Targeter App从NodeJS迁移到了Ruby on Rails。 

我们当时使用NodeJS开发它的原因很简单。我有一个程序包,能很快的将我们的应用弄上线(我们花了54小时做这个事情),相比起Ruby,我更 常使用的是JavaScript。因为我们的技术架构牵涉到MongoDB,我的这些特长只有在NodeJS环境里才会有意义。然而,随着应用规模的增 长,我认识到,选择NodeJS来实现这个应用是个错误的选择。下面让我来概述一下其中的原因。 

NodeJS很适合做那些有大量短生命期请求的应用。对于传统的CRUD应用,它也很好,但不是非常的理想。在 PHP,Ruby,Python语言里都有很成熟、优化的很好的框架来处理这种应用。NodeJS里的所有东西都异步执行的理念对于CRUD应用来说没有 任何效果。其它语言里的流行的框架能提供非常好的缓存技术,你所有的需求都能满足,包括异步执行。 

NodeJS是一种非常年轻的技术框架,它的周边程序库都不是很成熟。我说这些并没有任何对那些代码捐赠者冒犯 的意思,他们很优秀,开发出来很多优秀的程序库。然而,大部分程序库需要改进,而NodeJS的这种快速成长的环境意味着每一版升级中都带有大量的变化; 当你使用一种前沿技术时,你十分有必要尽快的紧跟最新的版本。这给创业型的企业带来了很多的麻烦。 

另外一个原因是关于测试。NodeJS里的测试框架还不错,但跟Django或RoR平台上的相比还是差一些。对于一个每天都有大量的代码提交、并且在一两天内就要发布的应用来说,程序不能出问题是至关重要的,否则你为此辛苦的努力变得得不偿失。没有人愿意花一天的时间改一些弱智的bug。 

最后一点,我们需要的是一种能缓存一切的东西,并且要尽快的实现。尽管我们的应用在增长,每秒钟有上万次的hits,但绝不会出现很大量的访问请求;这不是一个聊天程序!主程序最多时也就达到1000RPS,这样的负载对于Ruby on Rails和Nginx来说算不了什么。 

如果你现在还在读这篇文章,那你已经看到了我所有要说的了,你也许非常坚持的想知道我们的应用什么地方还在使用NodeJS。是这样的,我们的应用 由两部分组成。一是界面,用户看到的这部分,二是负责报表管理的部分,以及做日志的功能。后者是NodeJS的一个最佳使用场景,存在有大量的短周期的请 求。这部分的动作需要尽快的执行完成,甚至要在我们的数据推送还没有完成之前。这很重要,当请求执行还未结束,浏览器继续等待响应结束,这会影响用户使用 体验。NodeJS的异步特性救了我们。数据要么被存入数据库,要么被处理掉,当请求一旦执行完成,浏览器就可以开始做其它重要的事情了。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!