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个官方插件提供更多的简写方式。(忽略)


  • 相关阅读:
    ViewFlow增强onItemClick功能及ViewFlow AbsListView源代码分析
    函数递归与迭代
    UIPanGestureRecognizer上下左右滑动方向推断算法
    Eclipse中的Web项目自己主动部署到Tomcat
    《从程序猿到项目经理》读后感-职业瓶颈
    安卓开发之简单的短信操作模块
    [Swift通天遁地]二、表格表单-(15)自定义表单文本框内容的格式
    [Swift通天遁地]二、表格表单-(14)实时调整表单元素的激活和失效
    [Swift通天遁地]二、表格表单-(13)实时调整表单元素的显示和隐藏
    [Swift通天遁地]二、表格表单-(12)设置表单文字对齐方式以及自适应高度的文本区域TextArea
  • 原文地址:https://www.cnblogs.com/chentianwei/p/9240544.html
Copyright © 2011-2022 走看看