zoukankan      html  css  js  c++  java
  • slim(4621✨)

    用于代码瘦身。

    老鸟建议:不要混写js 和 html,如果避免不了,当前文件可以改为erb格式,混用slim和erb不是什么问题。 


    git:  https://github.com/slim-template/slim 

    不同编译器有不同的高亮等工具,在git最底部。

    atom: 直接从设置里面搜索language-slim选择下载最多的那个。然后自行设置。

    可选: 

    Auto Ident自动缩进。

    Scroll Past End 窗口下面增加一大段空白,可选。 

    Show indent GuideShow Invisibles都选上,代码结构更清晰。

    Preferred Line Length 设定每行字符数,超过了就换行必须和soft Wrap At。。。一起用。

    Soft Wrap 根据编辑器的窗口宽度来自动换行。和Soft Wrap Hanging Indent一起用,下一行选择缩进的字符默认0,设置2最好,关键字不会断,会换行显示。。 


    text输出:| 和 '

    p
      | This is a test

    等同于 

    <p>This is a test</p> 

    p
      | <h1>fuck you!</h1>

    可以插入HTML代码到文本行,等同于

    <p><small>fuck you!</small></p> 

    另外HTML tag可以直接在p内简写:

    p
      strong Name:
    可以产生 <p><strong>Name:</strong></p>

    加上<strong>尖括号更容易分辨,不过由于加入了slim高亮插件, HTML代码以红色字体显示,所以无需加尖括号也容易分辨。 

    p
      '
        This is a test

    一个单独的 ,和pipe类似,不过文本最后会加一个空格,等同于

    <p>This is a test</p> 

    Inline html <作用和  |  类似,可以直接写Html tags

     这样Slim和Html可以混合用。

    <div>

      <span>hello

    一定写上</span></div> 

    否则,后面的代码都会放入这个div中了。

     

    Control code -,  代表了控制代码,如条件和循环 

    不能在最后添加 end . 块是通过缩进定义的。如果你需要多行,可以在每行后添加一个  

    。如果本行以逗号,结束则无需添加blackslash 。相当于<% ...%>

     
    - if 3 >4
      | 耶耶耶
    - else
      | NO

    Output =

    相当于<%= ... %>, 同样,主动换行使用   , 也同样,逗号相当于换行符。 

    = javascript_include_tag

          "jquery",

          "application" 

    另外,=>=< ,等同于=。 ⚠️注意 =>会在HTML的文本输出最后增加一个空格, =<会在HTML文本输出的前面加入一个空格。

    => link_to 'Edit', edit_product_path(@product)
    '| 
    =< link_to 'Back', products_path

    屏幕上显示:Edit | Back

    类似于

    不过会在一行text末尾加上一个空格。因此在新一行 || 

    ,相当于“|”字符串,而 '|  ,  相当于一个加y空格字符串"| " 

    Output without HTML escaping == ❌不明白 

    Code comment /

    会生成注释,颜色变淡代表成功。快捷键不变command + /  

    HTML comment /!

    同样,注释颜色会变淡。 

    P
      | his is a test
      /!ddd  

    会生成,产生一个HTML的注释,<!-- >

    <p>his is a test<!--ddd  --></p>

    HTML tags

    Closed tags (trailing /)

    明确一个html tag的尾部,在尾部添加一个 反斜杠。通常是不必要的。

    标签<a>的写法

    可以直接写a href="#" Link1 

    如果写a>或者a<, 只的是添加空格在末尾和前头 , a<>代表前后都加空格

    a> href='url1' Link1
    ||
    a< href='url2' Link2

    结果是:Link1 | Link2

    Inline tags  

    ul
      li.first: a href="/a" A link
      li: a [href="#"] B line
    选择性加上[]方括号。

    Text content

    写一行无需 |   , 分2行则需要加上 |  

    h1 id="headline" Listing products
    h2 id="headline2"
      | 标题2

    Dynamic content 

    插入=或者==,就是插入ruby语法,在同一行,或者换下一行都可以拉。

    ==用在render和yield 


    Attributes 

    可以直接把属性写如tag中。必须加引号。 

    a href="http://slim-lang.com" title='Slim Homepage' Goto the Slim homepage

    等同于

    <a href="http://slim-lang.com" title="Slim Homepage">Goto the Slim homepage</a> 

    为了方便阅读,可以把Attributs, class, id 用括号wrap起来,(),{},[]都可以。

    还可以把括号分行 :

    h2 [id="tagline"
       class="small tagline"] = page_tagline

    插入Ruby代码,使用 = ,也可以使用#{} 

    a> href="#" Link #{@product.name}
    ||
    a< href='url2' = "Link " + @product.name 

    得到的结果是一样的。 

    Boolean 属性, 直接使用true, falses, nil

    input type="text" disabled=true

    属性中的类,的合并。有几种写法

    第一种,混用: 

    a.menu class="highlight" href="#" Slim-lang.com 

    第二种,链式:

    a.menu.highlight  href="#" Slim-lang.com 

    ⚠️加上id的写法, a#laber1.menu.highlight href="#" Slim-lang.com 

    第三种,传统写法:

    br

    a class="menu highlight" href="#" Slim-lang.com 

    第四种, 传统变形:

    a class=["menu","highlight"]

    a class=:menu,:highlight

    还有Splat attributes * 的写法,觉得不方便

    就是把*{"xxx" => "ddd", ...}转化为正常的属性写法。 *后面可以添加实例变量,或者方法,只要它返回的是hash就行。

    使用动态标签tags *, 不经常用到,忽略

    , 主要是为了配合方法。 

    定义了一个方法:
      def a_unless_current
        @page_current ? {tag: 'span'} : {tag: 'a', href: 'http://slim-lang.com/'}
      end
    - @page_current = true#把实例变量赋值为true
    *a_unless_current Link#使用*调用方法,因为方法返回的是hash,所以可以这么用。
    - @page_current = false
    *a_unless_current Link

    转化为HTML:

    <span>Link</span>

    <a href="http://slim-lang.com/">Link</a>


    Helpers, capturing and includes (没看)

    capture(*args) 把块转化为一个String object并返回。

    defined?(::Rails),没有找到defined?方法的出处: 猜测某个对象是否在::Rails中定义了,返回它的类型。

    main.defined?(::Rails) => "constant"  


    文本插入:

    h1 Welcome #{@product.name} to the show. 

    如果使用反斜杠  , #{}, 则插入符失效。

    h1 Welcome #{"dd"} to the show. 

    显示结果是 Welcome #{"dd"} to the show. 


    Embedded engines(ruby:, javascript:, css:, sass:, ...)

    slim使用了Tilt gem,可以直接在view中插入其他的模版engines。

    如:

    javascript:
      $("#my-click").click(function(){$("#foo").html('<h1>zoo</h1>');})

    ⚠️有些engines需要配置, 如插入Markdown,具体看git.


    Slim有4个官方插件提供更多的简写方式。(忽略)


  • 相关阅读:
    JID 2.0 RC4 发布,高性能的 Java 序列化库
    FBReaderJ 1.6.3 发布,Android 电子书阅读器
    Arquillian 1.0.3.Final 发布,单元测试框架
    JavaScript 的宏扩展 Sweet.js
    Hypertable 0.9.6.5 发布,分布式数据库
    JRuby 1.7.0 发布,默认使用 Ruby 1.9 模式
    httppp 1.4.0 发布,HTTP响应时间监控
    Redis 2.6.0 正式版发布,高性能K/V服务器
    OfficeFloor 2.5.0 发布,IoC 框架
    XWiki 4.3 首个里程碑发布
  • 原文地址:https://www.cnblogs.com/chentianwei/p/9240544.html
Copyright © 2011-2022 走看看