HeadFirst Ruby 第十四章总结 Web apps: Serving HTML
前言
这一章节主要讲了如何利用 Ruby 中的 Sinatra 这个 gem 来创建一个 Web app 的具体流程,其中的要点包括了:
- Sinatra, a third party library for writing web applications
- RubyGems,a platform which can download and install libraries automatically.
- 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.

URL 和 port

关于 WEBrick
定义:WEBrick 属于 Ruby Standard library,它的功能是创建一个 Web Server
当我们运行我们的 Sinatra app 的时候, 这个 Web server 也随之启动.
性质:它的 Host 名为 localhost, 即自己的电脑成为 Web Server, port 号默认为 4567,可进行改动.
关于 Sinatra routes
定义: 即 Web 应用程序的反馈程序段.
要求:需要得到两个信息:
- type of HTTP request: 四种 HTTP 请求中的一种: GET、POST、PUT、DELETE
- 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
要求:
- In default, erb method 会在名为 views 这个 subdirectory 中寻找对应的 HTML 文件,并且==》
- 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
格式:<%= %>,示例如下
<li><%= "A string" %> </li>
<li><%= 15.0 / 6.0 %> </li>
<li><%= Time.now %> </li>
步骤:
- 当 erb 进行运行的时候,看到“<% = >" 格式的 tag 的时候,就会 evaluate 其中的 code
- 返回结果, 并将其 convert into a string
- 最后插入这个 string 来代替这个 tag
第二种: The regular embedding tag
格式: <% %>,示例如下:
<% [1,2,3].each do |number| %>
<li><%= number %></li>
<% end %>
与 output tag 不同之处:
- the results of the code will not be directly insert into the ERB output
- 通常用于循环语句和条件语句中.
HeadFirst Ruby 第十四章总结 Web apps: Serving HTML的更多相关文章
- HeadFirst Ruby 第十五章总结 Saving and loading data
前言 在上一章讲述了如何进行基础的操作,比如 处理 GET 请求的 get route, 再比如下载 gem 等等方面的知识.在这一章节,作者告诉我们如何储存.处理数据.整个过程分三步走: 首先,当 ...
- 进击的Python【第十四章】:Web前端基础之Javascript
进击的Python[第十四章]:Web前端基础之Javascript 一.javascript是什么 JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编 ...
- HTML第十四章总结 HTML forms
第十四章主要讲了 html forms,通过 forms,我们可以得到 customers' feedback,使得网页能够 interactive,本章的内容分为三个部分: forms 的 elem ...
- Gradle 1.12用户指南翻译——第六十四章. 发布到Ivy(新)
其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://gith ...
- 【odoo14】第十四章、CMS网站开发
第十四章.CMS网站开发** Odoo有一个功能齐全的内容管理系统(CMS).通过拖放功能,你的最终用户可以在几分钟内设计一个页面,但是在Odoo CMS中开发一个新功能或构建块就不是那么简单了.在本 ...
- 《Linux命令行与shell脚本编程大全》 第十四章 学习笔记
第十四章:呈现数据 理解输入与输出 标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 1.STDIN 代表标准输入.对于终端界面 ...
- perl 第十四章 Perl5的包和模块
第十四章 Perl5的包和模块 by flamephoenix 一.require函数 1.require函数和子程序库 2.用require指定Perl版本二.包 1.包的定义 2.在包间切 ...
- Gradle 1.12 翻译——第十四章. 教程 - 杂七杂八
有关其它已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或訪问:http://gradledoc.qiniudn.com ...
- C和指针 (pointers on C)——第十四章:预处理器
第十四章 预处理器 我跳过了先进的指针主题的章节. 太多的技巧,太学科不适合今天的我.但我真的读,读懂.假设谁读了私下能够交流一下.有的小技巧还是非常有意思. 预处理器这一章的内容.大家肯定都用过.什 ...
随机推荐
- 【python38--面向对象继承】
一.继承 1.语法:class DerivedClassName(BaseClassName):子类继承父类 >>> class Parent: def hello(self): p ...
- linux下安装tomcat和jdk
1.现在的linux服务器一般自带jdk,先查询是否已经安装jdk rpm -qa | grep java rpm -qa | grep jdk 如上则是没有安装,可以直接跳到步骤X,安装jdk.否则 ...
- 上传svn失败,代码冲突解决方式
1,修改文件后提交不了,大多是因为版本不一致造成的.更新一下,不产生冲突的情况,就可以提交了. 2,更新文件,如果出现冲突的情况,打开冲突文件test.php会看到类似以下的内容 <<&l ...
- Django 创建项目笔记
基本命令 mkdir mysite # 创建项目目录,常取名mysite cd mysite virtualenv env # env\Scripts\activate.bat # Win pip i ...
- centos 编译lantrn
github上的安装指导: Custom fork of Go is currently required. We'll eventually switch to Go 1.7 which suppo ...
- SpringBoot 优化内嵌的Tomcat
在通过SpringBoot调用其它服务时,报错 org.springframework.web.client.ResourceAccessException: I/O error on POST re ...
- 【配置】log4j.properties 详解与配置步骤
一.Log4j基本使用方法 Log4j由三个重要的组件构成:[日志信息的优先级],[日志信息的输出目的地],[日志信息的输出格式]. 日志信息的优先级从高到低有ERROR.WARN. INFO.DEB ...
- python学习 day09打卡 初识函数
本节内容: 1.什么是函数 2.函数定义,函数名,函数体及函数的调用 3.函数的返回值 4.函数的参数 一.什么是函数 函数:对代码块和功能的封装和定义 定义一个事情或者功能.等到需要的时候直接去用, ...
- JAVA之经典算法
package Set.Java.algorithm; import java.util.Scanner; public class algorithm { /** * [程序1] 题目:古典问题:有 ...
- Redux基础使用
Redux基础使用: 简介:这里是从需求来响应的执行操作redux,所以理解起来更加的容易铭记在心的三点:action/reducer/store 除此之外就是react/react native的基 ...