`
xxj
  • 浏览: 426559 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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
    /[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>


生成
引用

  * Hello world!
  * Hello world!
  * Hello world!


有人问,这个东西和helper不一样吗?
恩... 差不多,但是如果你的应用程序涉及到客户编码的话,那么提供这一堆tag应该还是不个不错的主意,譬如最常见的,用户自定义模板、皮肤等,现在的博客仅仅是规定死的布局和内容,无法用户完全自定义的。



分享到:
评论
2 楼 404714 2011-03-28  
提供一大堆tag是不错,有没有想过如何把数据库字段映射成tag? 这样内容也能供人随便编辑了。
想不出思路,求解。有没好方法?
1 楼 404714 2011-03-28  
提供一大堆tag是不错,有没有想过如何把数据库字段搞成tag? 这样内容也能供人使用了。
想不出思路,求解。有没好方法?

相关推荐

    Haml2Html:一个易于使用的编译器,用于使用Haml&Sass开发静态页面

    Haml2Html 一个易于使用的编译器,用于使用Haml&Sass开发静态页面。要求需要以下内容:安装将存储库克隆到本地计算机。 在您的终端中,导航到/haml2html 。 跑步 ./install这将检查需求并安装未安装的需求。用法将...

    为什么要使用HAML和SASS

    标题“为什么要使用HAML和SASS”涉及到的是前端开发中的两个重要工具——HAML(HTML Abstraction Markup Language)和SASS(Syntactically Awesome Style Sheets)。这两个工具都是为了提高HTML和CSS编码的效率和...

    MtHaml:PHP实现的HAML模板语言类库.zip

    $haml = new Haml(); $html = $haml-&gt;render('path/to/your/file.haml'); echo $html; ``` `MtHaml` 提供了一些自定义配置选项,如设置输出的 HTML 版本、开启或关闭 CSS 选择器支持等。通过调整这些配置,你可以...

    Ruby-Haml是一个HTML的模板引擎

    Haml是Ruby社区广泛采用的模板语言之一,因其简洁的缩进式语法而受到青睐。 **Haml的基本语法** 1. **缩进表示嵌套**:Haml中的元素通过空格或制表符来表示层级关系,与Python或Git的代码风格类似。每增加一个元素...

    前端项目-clientside-haml-js.zip

    这个项目的目标是帮助前端开发者在浏览器端直接编译Haml模板,以实现更高效、更简洁的前端代码编写。 Haml是一种预处理语言,旨在提高HTML代码的可读性和简洁性。它通过缩进和简化的语法减少HTML的冗余,使得代码...

    让脚手架直接生成Haml模板

    你可能需要在`app/views/scaffolds`目录下创建Haml版本的模板文件,如`index.haml`, `show.haml`, `new.haml`, `edit.haml`等,以便脚手架可以使用这些模板。 4. **使用插件**:有些Rails插件,如`haml-rails`,...

    d3_dc_deploy

    ruby -- 在编译时使用haml gem,还有指南针 安装 安装haml & sass gem: gem install haml gem install compass 安装依赖: cd angular_c3_nvd3_crossfilter npm install bower install 测试(业力) grunt ...

    minimal-http-ruby:使用 Ryby 的最小 Http 服务器类

    使用 Ryby 的最小 Http 服务器类:Haml & Coffeescript & SSE & AJAX——不到 200 行代码! 服务器将运行它自己的线程,而不会弄乱您的代码任何额外的 EventMachine 样式的依赖项。 您可以使用 AJAX 和 SSE 轻松...

    MtHaml:PHP实现的HAML模板语言类库

    $haml = new \MTHaml\Haml(); $html = $haml-&gt;render('path/to/your/template.haml'); ``` ## 4. MtHaml与其他模板引擎的比较 - **与HTML模板比较**:HAML和 MtHaml 提供了更简洁的语法,减少了模板文件的体积,...

    Laravel开发-laravel-blade-haml

    **Laravel 开发:深入理解 Laravel Blade 和 HAML** 在 Laravel 框架中,Blade 是一个强大的模板引擎,它允许开发者以简洁且可读性强的语法编写视图。Blade 提供了 PHP 代码与 HTML 的无缝集成,使得在处理复杂的...

    ruby-haml-loader:使用实际Ruby`haml`的Webpack Haml加载器

    用于Webpack的Ruby Haml加载程序 将Haml文件作为模块导入Webpack项目中。 返回渲染的模板。 这很慢。 它是为临时使用而创建的,直到转换为Jade。 此自述文件基于自述文件。 设置 添加到您的webpack配置模块....

    haml:HTML抽象标记语言-标记Haiku

    将Haml与Rails一起使用要将Haml与Rails一起使用,只需将Haml添加到您的Gemfile中并运行bundle 。 gem 'haml' 如果您想用Haml替换基于Rails基于Erb的生成器,请将也添加到您的Gemfile中。格式化Haml的最基本元素是...

    haml-to-php:PHP的haml实现

    编写类似于ruby的haml实现的代码 在错误的标签嵌套上失败,例如table&gt; td&gt; tr 图书馆支持 请参阅如果您将对haml-to-php.com的支持添加到框架中,我想参考您的工作。 我知道的相关工作 请参阅此处。 最引人注目。 ...

    herbalizer:转换HAML到ERB

    除草剂 用Haskell编写的HAML到ERB转换器。 该程序将模板转换为 。 为什么 很多人更喜欢HAML而不是ERB。 但不是每个人,也不是每个情况都如此。...但是,使用Haskell,可以为HAML标记编写一个相当不错的解析器-翻

    前端开源库-ewg-haml-coffee-gulp

    "前端开源库-ewg-haml-coffee-gulp"是一个专为前端开发者设计的项目,它整合了三个重要的技术: EWG HAML、CoffeeScript 和 Gulp。 首先,让我们深入了解一下这三个核心组件: 1. **EWG HAML**: EWG HAML是一种...

    hamlet-compiler:Haml 的形式化语法

    《哈姆雷特编译器:Haml的形式化语法详解》 在Web开发领域,HTML作为标记语言,一直是构建网页的基础。然而,随着技术的发展,为了提高开发效率和代码的可读性,出现了许多预处理器,如Haml...

    s-ublime-text-haml-sass-master.zip

    "s-ublime-text-haml-sass-master.zip"这个压缩包文件显然是为Sublime Text 2设计的一个扩展资源,目的是为了增强其对HAML和SASS这两种语言的支持。 HAML(HTML Abstraction Markup Language)是一种简洁、清晰的...

    基于Ruby的Haml模板引擎设计源码

    本项目是基于Ruby的Haml模板引擎设计源码,包含149个文件,主要文件类型为rb、haml、xhtml、erb、x、md、gitignore、gitmodules、yml和yardopts。该项目适用于Haml模板引擎的开发和设计,为用户提供了一个丰富的资源...

    yii-haml:Yii 框架的 HAML 视图渲染器

    Yii 框架的 HAML 视图渲染器 yii-haml是扩展,它为您的视图带来了功能。 基于项目的分支。 使用 Composer 安装 将此添加到您的composer.json : " repositories " : [ { " type " : " composer " , " url " : ...

    gulp-ruby-haml:用于Gulp的Haml插件,使用Ruby Haml gem

    gulp-ruby-haml 这是一个,将使用该插件haml命令行脚本编译Haml的文件转换成HTML。 您需要同时安装Ruby和Haml才能使用此功能。 尝试gem install haml 。 如果使用 ,请将gem 'haml'添加到Gemfile中,然后运行bundle...

Global site tag (gtag.js) - Google Analytics