热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HeadFirstRuby第十四章总结Webapps:ServingHTML

前言

这一章节主要讲了如何利用 Ruby 中的 Sinatra 这个 gem 来创建一个 Web app 的具体流程,其中的要点包括了:

  1. Sinatra, a third party library for writing web applications
  2. RubyGems,a platform which can download and install libraries automatically.
  3. erb, a HTML type of file which has Ruby's functions 
HTTP 相关知识

Ruby 与 HTTP 的关系

In the early day of the Web, the server usually read the contents of an HTML file on the server's hard drive, and sent that HTML back to the browser.

 

But today, it's much common for the server to communicate with a program to fulfill the request, instead of reading from a file.

 HeadFirst Ruby 第十四章总结 Web apps: Serving HTML

URL 和 port

HeadFirst Ruby 第十四章总结 Web apps: Serving HTML

关于 WEBrick

定义:WEBrick 属于 Ruby Standard library,它的功能是创建一个 Web Server
当我们运行我们的 Sinatra app 的时候, 这个 Web server 也随之启动.
性质:它的 Host 名为 localhost, 即自己的电脑成为 Web Server, port 号默认为 4567,可进行改动.

关于 Sinatra routes

定义: 即 Web 应用程序的反馈程序段.
要求:需要得到两个信息:

  1. type of HTTP request: 四种 HTTP 请求中的一种: GET、POST、PUT、DELETE
  2. path: URL 的 path 部分

格式:

require 'sinatra'

get('/hello') do
'Hello, web!'
end

其中的 get 为对应的 HTTP 中的 get 请求的所提供的 response 的方法.
(‘/hello') 为对 Ruby 程序 的 request 的内容.

关于 RubyGems & 下载安装 Sinatra

原因:曾经安装 Ruby 的 Library 需要经过解压、找放置的文件夹等重复的操作,于是 RubyGems 应运而生.
RubyGems 伴随着 Ruby 一起安装,因此是免安装的.
使用方法: 在 Command-line tool 中进行下载,自动完成解压和存放的任务.
格式: (sudo) gem install sinatra
术语:gem, RubyGems 中的一个 Library.

关于 erb(Embedded Ruby) 这个 method

定义 & ERB library

erb: 是 Sinatra 中的一个 method, 这个 method 可以让我们通过能够通过 Ruby 程序(即 SInatra) 来显示 HTML 网页
ERB library: 是 part of Ruby standard library, 它能够 let you embed Ruby code with the HTML file
要求:

  1. In default, erb method 会在名为 views 这个 subdirectory 中寻找对应的 HTML 文件,并且==》
  2. HTML 文件的后缀应该为 .erb

格式

get('/movies') do
erb :index
end

ERB embedding tags

起因:在 .erb 文件中,不能直接将 Ruby 代码写入 HTML 代码中,而应该使用 ERB embedding tags.
功能:在加载 ERB templates 的同时, erb 这个 method 同时也会计算 ERB embedding tags 所包含的内容.

第一种:ERB output embedding tag

格式:<%= %>,示例如下

  • <%= "A string" %>

  • <%= 15.0 / 6.0 %>

  • <%= Time.now %>
  • 步骤:

    1. 当 erb 进行运行的时候,看到“<% = >" 格式的 tag 的时候,就会 evaluate 其中的 code
    2. 返回结果, 并将其 convert into a string
    3. 最后插入这个 string 来代替这个 tag

    第二种: The regular embedding tag

    格式: <% %>,示例如下:

    <% [1,2,3].each do |number| %>

  • <%= number %>

  • <% end %>

    与 output tag 不同之处:

    1. the results of the code will not be directly insert into the ERB output
    2. 通常用于循环语句和条件语句中.






    推荐阅读
    • 如何自行分析定位SAP BSP错误
      The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
    • Nginx使用(server参数配置)
      本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
    • Nginx使用AWStats日志分析的步骤及注意事项
      本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
    • VScode格式化文档换行或不换行的设置方法
      本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
    • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
    • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
      本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
    • android listview OnItemClickListener失效原因
      最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
    • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
    • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
    • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
    • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
    • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
    • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
    • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
    • switch语句的一些用法及注意事项
      本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
    author-avatar
    那是黑夜过后的黎明_182
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有