首页 后端开发 php教程 Rails与Node.js/PHP/Python等对比

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

Nov 11, 2016 am 09:58 AM
ruby

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

其次,我也没有全部用过 

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

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的异步特性救了我们。数据要么被存入数据库,要么被处理掉,当请求一旦执行完成,浏览器就可以开始做其它重要的事情了。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

深入分析 Golang 与 Ruby 的异同 深入分析 Golang 与 Ruby 的异同 Jun 01, 2024 pm 08:46 PM

Go与Ruby的主要区别在于:Go是一种静态类型编译语言,支持轻量级并行和高效内存管理,适合编写高并发应用程序;Ruby是一种动态类型解释语言,支持真正的并行但内存管理需手动控制,适合编写灵活的Web应用程序。

为什么 Python、Ruby 等语言弃用了自增运算符? 为什么 Python、Ruby 等语言弃用了自增运算符? May 11, 2023 pm 04:37 PM

许多人也许会注意到一个现象,那就是在一些现代编程语言(当然,并不是指“最近出现”的编程语言)中,自增和自减运算符被取消了。也就是说,在这些语言中不存在​​i++​​​或​​j--​​​这样的表达,而是只存在​​i+=1​​​或​​j-=1​​这样的表达方式了。本回答将从设计哲学这个角度上探讨这一现象产生的背景与原因。严格来说,说"i++正在消失"也许有失偏颇,因为主流编程语言中似乎只有Python、Rust和Swift不支持自增自减运算符。​当我第一次接触Python时,这也

Ruby怎么使用Mysql2连接操作MySQL Ruby怎么使用Mysql2连接操作MySQL Apr 17, 2023 pm 10:07 PM

Ruby操作MySQL使用mysql2连接mysql并操作mysql。geminstallmysql2连接mysql建立连接:require'mysql2'conn=Mysql2::Client.new({host:'192.168.200.73',username:'root',password:'P@ssword1!'})接受的连接选项包括:Mysql2::Clie

如何使用MySQL和Ruby实现一个简单的数据转换功能 如何使用MySQL和Ruby实现一个简单的数据转换功能 Sep 21, 2023 am 08:07 AM

如何使用MySQL和Ruby实现一个简单的数据转换功能在实际的开发工作中,经常需要进行数据转换,将一个数据格式转化为另一个数据格式。本文将介绍如何使用MySQL和Ruby来实现一个简单的数据转换功能,并且提供具体的代码示例。首先,我们需要安装并配置MySQL和Ruby环境。确保已经安装了MySQL数据库,并可以通过命令行或其他工具连接到数据库。另外,需要安装

如何使用MySQL和Ruby实现一个简单的数据分析报表功能 如何使用MySQL和Ruby实现一个简单的数据分析报表功能 Sep 20, 2023 pm 05:09 PM

如何使用MySQL和Ruby实现一个简单的数据分析报表功能引言:在当今数据驱动的时代,数据分析对于企业的决策和发展起到了至关重要的作用。而数据分析报表作为数据分析的重要组成部分,对于对数据进行整理、可视化和解读具有重要意义。本文将介绍如何使用MySQL和Ruby来实现一个简单的数据分析报表功能,并提供相应的代码示例。一、数据库设计与建表要实现数据分析报表功能

如何使用MySQL和Ruby实现一个简单的异步任务调度功能 如何使用MySQL和Ruby实现一个简单的异步任务调度功能 Sep 20, 2023 am 10:48 AM

如何使用MySQL和Ruby实现一个简单的异步任务调度功能以前的Web应用程序大多采用同步的方式来处理请求,即用户发送请求后,服务器会立即处理完请求并返回结果。然而,随着应用程序复杂度的增加,同步方式的处理效率逐渐变得低下,因此异步任务调度成为了现代Web应用程序中常见的需求。本文将介绍如何使用MySQL和Ruby来实现一个简单的异步任务调度功能,包括任务的

如何使用Vue.js和Ruby语言构建可扩展的Web应用 如何使用Vue.js和Ruby语言构建可扩展的Web应用 Aug 03, 2023 pm 02:27 PM

如何使用Vue.js和Ruby语言构建可扩展的Web应用近年来,随着Web应用的发展和需求的不断增长,构建可扩展的Web应用已经成为一个重要的课题。Vue.js作为一种轻量级的JavaScript前端框架,提供了灵活、高效和可扩展的解决方案。与此同时,Ruby作为一种简洁易读的编程语言,可用于构造强大的后端系统。本文将介绍如何结合Vue.js和Ruby语言构

深入了解:网站构建除了PHP以外的选择 深入了解:网站构建除了PHP以外的选择 Mar 21, 2024 am 08:51 AM

在当今互联网时代,网站构建已经成为了许多人不可或缺的技能之一。PHP作为一种广泛使用的后端编程语言,被许多开发人员所熟知和使用。然而,除了PHP之外,还存在许多其他选择可以用来构建网站。本文将带您深入了解除了PHP以外的网站构建选择,并为您提供具体的代码示例。PythonPython是一种功能强大且易于学习的编程语言,被广泛用于Web开发中。使用Python

See all articles