Sinatra 可得到的模板語言

2023-12-19 15:25 更新

可得到的模板語言

有些語言存在多個實現(xiàn),為了指定使用的那種實現(xiàn) (或者為了線程安全),可以簡單的提前?require?:

Haml 模板

Dependency: haml

File Extension: .haml

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

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

# 你需要在你的應(yīng)用中引入 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 接受內(nèi)聯(lián)模板的代碼塊。

Nokogiri 模板

Dependency: nokogiri

File Extension: .nokogiri

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

同樣接受內(nèi)聯(lián)模板的代碼塊,看起來也是用來構(gòu)建 xml 的應(yīng)用的。

Sass 模板

Dependency: sass

File Extension: .sass

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

Scss 模板

Dependency: sass

File Extension: .scss

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

Scss 的選項 可以通過 Sinatra 選項全局設(shè)定,參考選項和配置, 也可以在個體的基礎(chǔ)上覆蓋。

Less 模板

Dependency: less

File Extension: .less

Example: less :stylesheet

Liquid 模板

Dependency liquid

File Extension .liquid

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

Liquid 模板中邏輯非常的弱,所以,其強制將邏輯放置到控制器中,從而嚴(yán)格遵尋 MVC 框架。Liquid 模板中不用調(diào)用 Ruby 的方法,總是需要將局部變量傳遞給模板。

Github Pages 就是利用 Liquid 的模板來設(shè)置頁面布局,從而保證了頁面的安全性。簡單說,給你把軟刀,能用且安全。

Markdown Templates

Dependency Anyone of: RDiscountRedCarpetBlueClothkramdownmaruku

File Extensions .markdown, .mkd and .md

Example markdown :index, :layout_engine => :erb

既不可能在 Markdown 中調(diào)用方法,也不能傳遞局部變量給它。通常用來組合其他的渲染引擎 (比如,jekyll 就是組合了 Liquid 和 Markdown。

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

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

注意,可以從其他模板中調(diào)用?markdown?方法:

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

既然你不能在 Markdown 中調(diào)用 Ruby,你不能使用 Markdown 編寫的布局。不過,使用其他渲染引擎作為模版的布局是可能的,通過傳遞:layout_engine 選項:

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

這將會調(diào)用 ./views/index.md 并使用 ./views/layout.erb 作為布局。

請記住你可以全局設(shè)定這個選項:

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

get '/' do
  markdown :index
end

這將會調(diào)用 ./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以及執(zhí)行 js 的方式

File Extension .coffee

Example coffee :index

參考https://github.com/josh/ruby-coffee-script 獲取更新的選項,CoffeeScript 模版的使用樣例:

# 需要在你的應(yīng)用中引入coffee-script
require 'coffee-script'

get '/application.js' do
  coffee :application #調(diào)用的是 ./views/application.coffee
end

Textile 模板 : RedCloth

RDoc 模板 : [RDoc]

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

注:老版的中文翻譯,對模板部分介紹的比較詳細(xì),這里摘錄如下:


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號