帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:Elixir  TEMP  sli  Minim  SLIM  minima  template  
An Elixir library for rendering slim templates

  • 源代码名称:slime
  • 源代码网址:http://www.github.com/slime-lang/slime
  • slime源代码文档
  • slime源代码下载
  • Git URL:
    git://www.github.com/slime-lang/slime.git
  • Git Clone代码到本地:
    git clone http://www.github.com/slime-lang/slime
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/slime-lang/slime
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • Build StatusHex VersionLicense

    让你的标记变成Elixir的全新方法。

    mud是一个用于渲染 Slim -like模板的Elixir 库,作为 HTML 。

    如需使用 Phoenix,请查看PhoenixSlime 。

    轻松打开:

    doctype htmlhtmlheadmetaname="keywords"description="Slime"title = site_titlejavascript:alert('Slime supports embedded javascript!');body#id.classul = Enum.map [1, 2], fn x ->li = x

    到这里:

    <!DOCTYPE html>
    <html>
    <head>
     <metaname="keywords"description="Slime">
     <title>Website Title</title>
     <script>alert('Slime supports embedded javascript!');</script>
    </head>
    <body>
     <divclass="class"id="id">
     <ul>
     <li>1</li>
     <li>2</li>
     </ul>
     </div>
    </body>
    </html>

    用这个:

    Slime.render(source, site_title:"Website Title")

    引用

    属性

    属性可以以类似于普通HTML的方式分配。

    ahref="elixir-lang.org"target="_blank" Elixir
    <ahref="elixir-lang.org"target="_blank">Elixir</a>

    Elixir表达式可以使用插值语法作为属性值。

    ahref="#{my_variable}" Elixir
    <ahref="elixir-lang.org">Elixir</a>

    布尔属性可以使用布尔值设置

    inputtype="checkbox"checked=trueinputtype="checkbox"checked=false
    <inputtype="checkbox"checked>
    <inputtype="checkbox">

    类和id属性有一个文本语法

    .foo.barselect.bar#foobody#bar
    <divclass="foo bar"></div>
    <selectclass="bar"></select>
    <divid"foo"></div>
    <bodyid="bar"></body>

    代码

    and可以以使用 -= 编写 inline 。

    - evalutes表达式 = evalutes表达式,然后将该值插入到模板中。

    - number = 40p = number + 2
    <p>42</p>

    插入语法可以用于在文本中插入表达式。

    - name ="Felix"p My cat's name is #{name}
    <p>My cat's name is Felix</p>

    评论

    行可以用 / 字符注释掉。

    / p This line is commented outp This line is not
    <p>This line is not</p>

    可以使用 / 插入 HTML <-- --> 注释!

    /! Hello, world!
    <!-- Hello, world! -->

    条件条件

    我们可以使用常规的tcm流控制,比如 if 表达式。

    - condition = true= if condition dop It was true.
    - elsep It was false.
    <p>It was true.</p>

    文档

    有常用文档的快捷方式。

    doctype htmldoctype xmldoctype transitionaldoctype strictdoctype framesetdoctype 1.1doctype basicdoctype mobile
    <!DOCTYPE html>
    <?xmlversion="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">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN""http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">
    <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN""http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">

    迭代

    可以用于在模板中迭代集合的tcm操作表达式集合。

    - names = ["Sarah","Mia","Harry"]/! Enum.map= Enum.map names, fn name ->p = name/! for comprehension= for name <- names doh1 = name
    <!-- Enum.map --><p>Sarah</p>
    <p>Mia</p>
    <p>Harry</p><!-- for comprehension --><h1>Sarah</h1>
    <h1>Mia</h1>
    <h1>Harry</h1>

    嵌入式引擎

    例如:

    javascript:console.log("Test javascript");css:
     body {
     color: black;
     }elixir:
     a = [1, 2, 3]b = Enum.map(a, &(&1 + 1))eex:
     Hello from <%="eex" %>

    你可以在slime应用程序配置中定义自己的嵌入式引擎:

    # config.exsconfig :slime, :embedded_engines, %{
     markdown:MyApp.MarkdownEngine}# markdown_engine.exdefmoduleMyApp.MarkdownEnginedo@behaviourSlime.Parser.EmbeddedEnginedefrender(text, _options) doEarmark.to_html(text)
     endend

    因为在编译时读取引擎,所以在添加新引擎后需要重新编译库。 你可以通过以下方式执行这里操作:

    mix deps.compile slime --force

    预编译

    模板可以像EEx模板那样编译到 MODULE 函数中,使用 Slime.function_from_file/5Slime.function_from_string/5

    若要使用Slime模板( and ) 和 Phoenix,请参见 PhoenixSlim 。

    与Slim的区别

    我们的目标是与原始的实现,但在某些方面我们却偏离了。 我们这样做是为了成为 true Elixir就像原来的瘦实现是 true 到它的ruby 基础。

    比如在黏液中

    = if condition dop It was true.
    - elsep It was false.

    ruby Slim会做什么

    - if conditionp It was true.
    - elsep It was false.

    注意 do 和初始 =,因为我们将条件的返回值呈现为一个整体。

    命令行调试

    如果你在Slime模板中查找异常有问题,可以添加

    config :slime, :keep_lines, true

    config.exs 文件中,在结果 eexhtml 中,Slime将保留原始模板行。 记住,输出与默认的泥浆输出稍有不同,例如 | 工作起来像 ',并且不忽略空行。

    欢迎使用反馈。功能请求和修复功能。 请适当使用问题请求请求。 所有代码都应该有伴随的测试。

    许可证

    MIT许可证请查看许可证的详细信息。



    文章标签:TEMP  template  sli  Minim  minima  Elixir  SLIM  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语