189 8069 5689

ruby与javascript开发的简单比较-创新互联

前言

创新互联是网站建设专家,致力于互联网品牌建设与网络营销,专业领域包括成都网站制作、做网站、电商网站制作开发、微信小程序定制开发、微信营销、系统平台开发,与其他网站设计及系统开发公司不同,我们的整合解决方案结合了恒基网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供全方位的互联网品牌整合方案!

    之前用javascript做了可以实现 报名-竞价 活动的party bid,如今用ruby语言为party_bid做了个服务端,可以创建用户,每个用户都可以组织自己的party_bid活动,并且设置的管理员可以看到所有用户信息,并对这些用户信息进行管理。

  这前后分别学习了js与ruby,对它们有了初步的认识,现在对它们之间的共性与不同做个简单的总结。


正文


1. 大概简介

Ruby:Ruby 是一种面向对象、命令式、函数式、动态的通用编程语言,其设计理念是人性化,程序员可以不用写很多代码就能实现想要的功能,多用于后台服务端。

Javascript:JavaScript 是一种广泛应用于客户端网页(浏览器)开发的脚本语言,可以给 HTML 网页添加动态功能,响应用户的各种操作,被广泛用于客户端。

2. 正式PK

Array:
map方法使用:

Ruby:
a = ["1", "2"]
a.push("3")
a.map!(&:to_i)    # [1, 2, 3]

JS:
var a = ["1", "2"];
a.push("3");
a = a.map(function(n) { return parseInt(n, 10); });

遍历方法的使用:

Ruby:
a = [1, 2, 3]
a.each {|n| puts n}
#or
a.each do |n|
    puts n
end
#or
for i in 0..(a.length - 1) do
  puts a[i]
end

JS:
var a = [1, 2, 3];
a.forEach(function(n) { console.log(n); })
//or
for (var i = 0; i < a.length; i++) {
  console.log(a[i]);
}

Strings:

获取字符串的索引:

Ruby:
'hello'.index('e')    # 1
'hello'.rindex('l')   # 3
JS:
'hello'.indexOf('e')             // 1
'hello'.lastIndexOf('l')         // 3

判断字符串的值:

Ruby:
if 'hello'.include? 'lo'
    puts 'found'
end
JS:

if (~'hello'.indexOf('lo')) {
  console.log('found');
}

新建字符串:

Ruby:
'hello' * 3   # 'hellohellohello'
JS:
(new Array(3 + 1)).join('hello')
    // 'hellohellohello'

Hash:

定义(方法一样):

Ruby:
h = {}
h['a'] = 1
h['b'] = 2
JS:
var h = {};
h['a'] = 1;
h['b'] = 2;  //以下两个用例中的h即为此处定义的h

遍历:

Ruby:
h.each {|key, value| puts "#{key} #{value}" }
JS:
for (key in h) { console.log(key, h[key]); }

取属性:

Ruby:
h.keys # ['a', 'b']
h.has_key?('c') # false
JS:
Object.keys(h); // ['a', 'b']
h.hasOwnProperty('c') // false

取长度:

Ruby:
h.length    # 2
JS:
Object.keys(h).length    // 2

删除:

Ruby:
h.delete("b")
JS:
delete h.b
Functions:

定义与调用:

Ruby:
#定义
def plus_5(num = 0) num + 5 end 
#调用
plus_5     # 5
plus_5(10) # 15
[5, 10, 15].map { |k| plus_5(k) } # [10, 15, 20]
JS:
//定义
function plus_5(num) { return (num || 0) + 5; }
//调用
plus_5();   // 5
plus_5(10); // 15
[5, 10, 15].map(plus_5);   // [10, 15, 20]
Math:
Ruby:
[-5, -1, -8].max            # -1
[-5, 15, 20].reduce(0, &:+) # 30
JS:
Math.max.apply(null, [-5, -1, -8])   // -1
[-5, 15, 20].reduce(function(sum, value) {
         return sum + value;
    }, 0)      // 30
Random:
Ruby:
prng = Random.new()
prng.rand(5..9)   # one of [5, 6, 7, 8, 9]
JS:
function rand(a, b) {
  return Math.floor(Math.random() * (b-a+1)+a);
 }
rand(5, 9);    // one of [5, 6, 7, 8, 9]


总结


    总的简单来说,与javascript相比,ruby是纯面向对象语言,对局部变量的定义不用加前缀var,ruby对函数的定义不用function打头,而是def,在方法中不用括号,返回值直接写变量名,不用return,并且ruby代码中没有标点,看上去更加干净整洁。

参考http://agentcooper.github.io/js-ruby-comparison/

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:ruby与javascript开发的简单比较-创新互联
URL网址:http://jkwzsj.com/article/iihho.html

其他资讯