0

我第一次学习如何编程(使用 Ruby),因为我想最终构建一个 Web 应用程序。我很好理解,并且正在完成 2 个不同的教程,但有一个主要问题......

我已经学到了很多关于对象、方法、字符串等的知识,但是到目前为止,我所经历的教程几乎没有提到实际上将它与网站的前端集成,或者在 HTML 中“嵌入”代码。所以我的问题是,这一切到底如何转化为与网站和用户命令的实际交互?我没有看到这里的大局,并且真的可以使用一些指导。

我是不是很想知道这里发生了什么?!

4

3 回答 3

2

它不会在 HTML 中调用它。HTML 不是一种语言。HTML 是一种为 Web 设计的输出格式。

就是这么简单。

在您的“简单”红宝石程序中,您的代码输出显示在STDOUT控制台、屏幕等上。

由 ruby​​ 解释器驱动的服务器会翻译您的 ruby​​ 代码并将其作为 HTML 呈现给客户端。您可以通过指定扩展名(在 rails 中)并用code tags.

例子

这是一个用纯 ruby​​ 编写的简单 webrick 示例

# in server.rb
#
require 'webrick'
server = WEBrick::HTTPServer.new(:Port=>8080)

trap 'INT' do server.shutdown end

class Dog
  attr_accessor :name
  def initialize(name)
    self.name = name
  end
  def bark
    "#{name} is barking!"
  end
end

dog = Dog.new("Fido")

server.mount_proc('/bark'){ |req, resp|
    resp['Content-Type'] = 'text/html'

    resp.body = "#{dog.bark}"
}

server.mount_proc('/run') do |req,resp|
    dog.instance_eval do
      def run_away
        "#{name} is running away..."
      end
    end

    resp['Content-Type'] = 'text/html'
    resp.body = "#{dog.run_away}"
end

server.start

运行ruby server.rb并查看localhost:8080/run结果localhost:8080/bark

编辑 - Sinatra 示例

如果您发现 webrick 示例难以理解,请查看Sinatra

# in sinatra_example.rb
require 'sinatra'

class Dog
  attr_accessor :name
  def initialize(name)
    self.name = name
  end
  def bark
    "#{name} is barking!"
  end
end

fido = Dog.new("Fido")

get '/bark' do
  fido.bark
end

get '/run' do
  fido.instance_eval do
    def run_away
      "#{name} is running away!"
    end
  end

  fido.run_away

end
于 2012-04-10T00:43:12.700 回答
2

冒着吓跑你的风险,要学习如何(正确地)编写 Web 应用程序,你需要学习:

  • 您将使用的语言(红宝石)
  • 您的应用程序框架(rails?或 sinatra?)
  • HTML
  • CSS
  • javascript
  • HTTP 协议,它是浏览器和服务器之间通信的基础

但是,在深入学习下一个之前,您不需要学习所有这些。

我建议,在你学习 ruby​​ 的时候,至少可以玩一个更简单的框架,例如Sinatra。这样您就可以感觉自己实际上是在学习如何编写 Web 应用程序。

当然,你也可以玩 Rails,但至少在学习如何编写 Web 应用程序方面,它可能有点令人生畏。新手很难区分红宝石的特性和铁轨的特性。

于 2012-04-10T00:49:01.627 回答
1

很高兴你开始学习 Ruby!但 Ruby 本身只是一种编程语言。我认为你不想检查 Rails!

http://guides.rubyonrails.org/getting_started.html

Rails 是用 Ruby 编写的,您将编写的很多内容都是 Ruby,因此您可能会很快上手。

于 2012-04-10T00:48:18.270 回答