博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
slim(4621✨)
阅读量:5042 次
发布时间:2019-06-12

本文共 3851 字,大约阅读时间需要 12 分钟。

用于代码瘦身。

 

老鸟建议:不要混写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

屏幕上显示: | 

 

类似于 | 

不过会在一行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

结果是: | 

 

Inline tags  a 

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


 

转载于:https://www.cnblogs.com/chentianwei/p/9240544.html

你可能感兴趣的文章
JVM内存回收机制简述
查看>>
洛咕 P2480 [SDOI2010]古代猪文
查看>>
js-创建对象的几种方式
查看>>
JDK JRE Java虚拟机的关系
查看>>
2018.11.20
查看>>
word20161215
查看>>
12th week blog
查看>>
dijkstra (模板)
查看>>
python小记(3)
查看>>
编译Linux驱动程序 遇到的问题
查看>>
大型分布式网站架构技术总结
查看>>
HDU 1017[A Mathematical Curiosity]暴力,格式
查看>>
[算法之美] KMP算法的直观理解
查看>>
EntityFramework 性能优化
查看>>
【ASP.NET开发】菜鸟时期的ADO.NET使用笔记
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>
OA项目设计的能力③
查看>>
Cocos2d-x3.0 文件处理
查看>>
全面整理的C++面试题
查看>>
Activity和Fragment生命周期对比
查看>>