Sinatra 可得到的模板语言

2023-12-19 15:25 更新

可得到的模板语言

有些语言存在多个实现,为了指定使用的那种实现 (或者为了线程安全),可以简单的提前​require​:

Haml 模板

Dependency: haml

File Extension: .haml

Example: haml :index, :format => :html5

需要引入 haml gem/library以渲染 HAML 模板:

# 你需要在你的应用中引入 haml
require 'haml'

get '/' do
  haml :index
end

Erb 模板

Dependency: erubis or erb (included in Ruby)

File Extensions: .erb, .rhtml or .erubis (Erubis only)

Example: erb :index

Builder 模板

Dependency: builder

File Extension: .builder

Example: builder { |xml| xml.em "hi" }

builder 接受内联模板的代码块。

Nokogiri 模板

Dependency: nokogiri

File Extension: .nokogiri

Example: nokogiri { |xml| xml.em "hi" }

同样接受内联模板的代码块,看起来也是用来构建 xml 的应用的。

Sass 模板

Dependency: sass

File Extension: .sass

Example: sass :stylesheet, :style => :expanded

Scss 模板

Dependency: sass

File Extension: .scss

Example: scss :stylesheet, :style => :expanded

Scss 的选项 可以通过 Sinatra 选项全局设定,参考选项和配置, 也可以在个体的基础上覆盖。

Less 模板

Dependency: less

File Extension: .less

Example: less :stylesheet

Liquid 模板

Dependency liquid

File Extension .liquid

Example liquid :index, :locals => { :key => 'value' }

Liquid 模板中逻辑非常的弱,所以,其强制将逻辑放置到控制器中,从而严格遵寻 MVC 框架。Liquid 模板中不用调用 Ruby 的方法,总是需要将局部变量传递给模板。

Github Pages 就是利用 Liquid 的模板来设置页面布局,从而保证了页面的安全性。简单说,给你把软刀,能用且安全。

Markdown Templates

Dependency Anyone of: RDiscountRedCarpetBlueClothkramdownmaruku

File Extensions .markdown, .mkd and .md

Example markdown :index, :layout_engine => :erb

既不可能在 Markdown 中调用方法,也不能传递局部变量给它。通常用来组合其他的渲染引擎 (比如,jekyll 就是组合了 Liquid 和 Markdown。

erb :overview, :locals => { :text => markdown(:introduction) }

Note that you may also call the markdown method from within other templates:

注意,可以从其他模板中调用​markdown​方法:

%h1 Hello From Haml!
%p= markdown(:greetings)

既然你不能在 Markdown 中调用 Ruby,你不能使用 Markdown 编写的布局。不过,使用其他渲染引擎作为模版的布局是可能的,通过传递:layout_engine 选项:

get '/' do
  markdown :index, :layout_engine => :erb
end

这将会调用 ./views/index.md 并使用 ./views/layout.erb 作为布局。

请记住你可以全局设定这个选项:

set :markdown, :layout_engine => :haml, :layout => :post

get '/' do
  markdown :index
end

这将会调用 ./views/index.markdown (和任何其他的 Markdown 模版) 并使用 ./views/post.haml 作为布局。

也可用 BlueCloth 而不是 RDiscount 来解析 Markdown 文件:

require 'bluecloth'

Tilt.register 'markdown', BlueClothTemplate
Tilt.register 'mkd',      BlueClothTemplate
Tilt.register 'md',       BlueClothTemplate

get '/' do
  markdown :index
end

CoffeeScript 模板

Dependency CoffeeScript以及执行 js 的方式

File Extension .coffee

Example coffee :index

参考https://github.com/josh/ruby-coffee-script 获取更新的选项,CoffeeScript 模版的使用样例:

# 需要在你的应用中引入coffee-script
require 'coffee-script'

get '/application.js' do
  coffee :application #调用的是 ./views/application.coffee
end

Textile 模板 : RedCloth

RDoc 模板 : [RDoc]

以及其他诸多模板:AsciiDoc ,Radius ,Markaby ,RABL ,Slim ,Creole ,MediaWiki ,CoffeeScript ,Stylus ,Yajl ,WLang。不再一一列举。

注:老版的中文翻译,对模板部分介绍的比较详细,这里摘录如下:


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号