Sinatra 可得到的模板语言
可得到的模板语言
有些语言存在多个实现,为了指定使用的那种实现 (或者为了线程安全),可以简单的提前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: RDiscount, RedCarpet, BlueCloth, kramdown, maruku
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。不再一一列举。
注:老版的中文翻译,对模板部分介绍的比较详细,这里摘录如下:
更多建议: