xxj 发表于 2013-2-7 19:05:29

Haml&Radius 不错

Haml
http://haml.hamptoncatlin.com/
今天花了点时间读了遍Reference:http://haml.hamptoncatlin.com/docs/rdoc/classes/Haml.html

对haml的印象彻底改变了,说句老实话,之前懒得看这个东西,一直认为它没啥意思,今天才发现,使用他,代码简洁多了,而且很容易上手,成本比较低。

!!! XML!!!%html%head/%body    #main      .articles      .article.title          Hello World      .article.date          2008-8-12 14:10:58      .article.content          Content goes here

生成如下的代码:

<?xml version='1.0' encoding='utf-8' ?>    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    <html>      <head />      <body>      <div id='main'>          <div class='articles'>            <div class='article title'>            Hello World            </div>            <div class='article date'>            2008-8-12 14:10:58            </div>            <div class='article content'>            Content goes here            </div>          </div>      </div>      </body>    </html>

在haml中,我们还可以直接写textile文本,如
#main.articles    .article.title      :redcloth      h2. Hello World    .article.date      :markdown      _2008-8-12 14:10:58_         

生成
<div id='main'>      <div class='articles'>      <div class='article title'>          <h2>Hello World</h2>      </div>      <div class='article date'>          <p><em>2008-8-12 14:10:58</em></p>      </div>      </div>    </div>

资料:
http://redcloth.org/
http://www.rubyinside.com/redcloth-4-released-962.html

来个更复杂点的内容(来自Radiant的application.html.haml):
!!!%html{html_attrs}%head    %meta{"http-equiv"=>"Content-type", :content=>"text/html; charset=utf-8"}/    %title= @page_title || default_page_title    - @stylesheets.uniq.each do |stylesheet|      = stylesheet_link_tag stylesheet    - @javascripts.uniq.each do |javascript|      = javascript_include_tag javascript    /      %script{:type=>"text/javascript", :src=>"/admin/javascripts/pngfix.js"}    - if @content_for_page_scripts      = javascript_tag @content_for_page_scripts    - if @content_for_page_css      %style{:type => "text/css"}= @content_for_page_css%body    #page      #header      #site-title= link_to_unless_current title, admin_url      #site-subtitle= subtitle      - if logged_in?          #navigation= links_for_navigation      %hr{:class=>"hidden"}/      #main      - if flash[:notice]          #notice            %p= flash[:notice]      - if flash[:error]          #error            %p= flash[:error]      #content          = find_and_preserve(yield)      %hr{:class=>"hidden"}/      #footer      %p         This site was made with Ruby and is powered by         %a{:href=>"http://radiantcms.org"} Radiant CMS          version         = Radiant.loaded_via_gem? ? "#{Radiant::Version} (gem)." : "#{Radiant::Version}."      %p#site-links          - if logged_in?            - if admin?            = nav_link_to 'Users', user_index_url            %span.separator=" | "            = nav_link_to 'Extensions', extension_index_url            - else            = nav_link_to 'Preferences', user_preferences_url            %span.separator=" | "            = nav_link_to 'Log Out', logout_url            %span.separator=" | "            = link_to image('view-site.gif', :alt => "View Site", :title => ''), homepage_url      - if @content_for_popups      #popups          = yield :popups

Radius
http://radius.rubyforge.org/

Radius 是一个强大的基于标签的模板语言。

我们引用下文档中的示例:
require 'radius'context = Radius::Context.new do |c|    c.define_tag 'hello' do      'Hello world'    end    c.define_tag 'repeat' do |tag|      number = (tag.attr['times'] || '1').to_i      result = ''      number.times { result << tag.expand }      result    endend

在页面中,我们编写如下代码:

<radius:repeat times="3">* <radius:hello />!</radius:repeat>

生成
<div class="quote_title">引用
页: [1]
查看完整版本: Haml&Radius 不错