六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 112|回复: 0

Haml&Radius 不错

[复制链接]

升级  96.67%

59

主题

59

主题

59

主题

秀才

Rank: 2

积分
195
 楼主| 发表于 2013-2-7 19:05:29 | 显示全部楼层 |阅读模式
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    /[if lt IE 7]      %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    end  end

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

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

生成
<div class="quote_title">引用
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表