`
nbkangta
  • 浏览: 430562 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

Liquid学习笔记

 
阅读更多

Liquid中有2种Markups:

  • Output

    Hello {{ title }}

  • Tag 非文本 {\% 对称的大括号加百分号 \%}

输出Output

简单的输出如

Hello 

另外输出还可以使用过滤器 Filter,如:

Hello TOBI
Hello tobi has 4 letters!
Helo 2013 May

标准过滤器 Standard Filters

标准的Filter, 通过名字基本可以猜得出来,filter的用法类似Linux Pipeline,左边是右边的输入;对于Filter可以有输入参数。 例如plus,将左边数与右边数连接或相加, plus:1, 就代表左边数加1。

- date
- capitalize
- downcase
- upcase
- first
- last
- join
- sort
- map
- size
- escape
- escape_once
- strip_html
- strip_newlines
- newline_to_br
- replace
- replace_first
- remove
- remove_first
- truncate
- truncatewords
- prepend
- append
- minus
- plus
- times
- divided_by
- split
- modulo

Example:

{{ 'foofoo' | replace:'foo','bar' }} #=> 'barbar'
{{ 'barbar' | replace_first:'bar','foo' }} #=> 'foobar'
{{ 'foobarfoobar' | remove:'foo' }} #=> 'barbar'
{{ 'barbar' | remove_first:'bar' }} #=> 'bar'
{{ 'bar' | prepend:'foo' }} #=> 'foobar'
{{ 'foo' | append:'bar' }} #=> 'foobar'
{{ 4 | minus:2 }} #=> 2
{{ '1' | plus:'1' }} #=> '11', {{ 1 | plus:1 }} #=> 2
{{ 5 | times:4 }} #=> 20
{{ 10 | divided_by:2 }} #=> 5
{{ "a~b" | split:~ }} #=> ['a','b']
{{ 3 | modulo:2 }} #=> 1

标签 Tags

Tags是用来表达模板中的页面逻辑。 当前支持的tag包含了: - assign 变量赋值

{% assign var = value %}
  • capture Block tag that captures text into a variable (还没理解。。。)
  • case 类似switch
  • comment 注释
  • cycle 在一组备选值当中循环
  • for 循环
  • if if/else
  • include 包含另外的模板
  • raw 临时停止处理markup
  • unless 条件判断

Case

{% case condition %}
{% when 1 %}
hit 1
{% when 2 or 3 %}
hit 2 or 3
{% else %}
... else ...
{% endcase %}

Cycle

{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}

will result in

one
two
three
one

Comments

We made 1 million dollars {% comment %} in losses {% endcomment %} this year

Raw

\{% raw %\}
  In Handlebars, {{ this }} will be HTML-escaped, but {{{ that }}} will not.
\{% endraw %\}

If / else

{% if user %}
  Hello {{ user.name }}
{% endif %}

{% if user.name == 'tobi' %}
  Hello tobi
{% elsif user.name == 'bob' %}
  Hello bob
{% endif %}

{% if user.name == 'tobi' or user.name == 'bob' %}
  Hello tobi or bob
{% endif %}

{% if user.name == 'bob' and user.age > 45 %}
  Hello old bob
{% endif %}

{% if user.name != 'tobi' %}
  Hello non-tobi
{% endif %}

# Same as above
{% unless user.name == 'tobi' %}
  Hello non-tobi
{% endunless %}

# Check if the user has a credit card
{% if user.creditcard != null %}
   poor sob
{% endif %}

# Same as above
{% if user.creditcard %}
   poor sob
{% endif %}

# Check for an empty array
{% if user.payments == empty %}
   you never paid !
{% endif %}

{% if user.age > 18 %}
   Login here
{% else %}
   Sorry, you are too young
{% endif %}

# array = 1,2,3
{% if array contains 2 %}
   array includes 2
{% endif %}

# string = 'hello world'
{% if string contains 'hello' %}
   string includes 'hello'
{% endif %}

For loops

{% for item in array %}
  {{ item }}
{% endfor %}

在for循环中还包含了很多辅助变量

-   forloop.length # => for的循环总次数
-   forloop.index  # => 当前循环的index,从1开始
-   forloop.index0 # => 当前循环的index,从0开始
-   forloop.rindex # => 当前循环剩余次数
-   forloop.rindex0 # => 当前循环剩余次数,从0开始
-   forloop.first   # => 是否是循环的第一次
-   forloop.last    #=> 是否是循环的最后一次

通过offset:int 控制循环的起始, limit: int控制循环的次数, reversed 反转循环

    # array = [1,2,3,4,5,6]
    {% for item in array limit:2 offset:2 %}
      {{ item }}
    {% endfor %}
    # results in 3,4
    {% for item in collection reversed %} {{item}} {% endfor %}

Python Range重现~

# if item.quantity is 4...
{% for i in (1..item.quantity) %}
  {{ i }}
{% endfor %}
# results in 1,2,3,4
分享到:
评论

相关推荐

    arduino学习笔记1602液晶实验

    **Arduino学习笔记:1602液晶实验** 在电子制作和物联网项目中,1602液晶显示器(LCD)是一个非常常见的组件,尤其对于初学者和爱好者来说,它提供了直观的文本显示方式,使得硬件交互更加直观。1602液晶通常采用HD...

    关于LCD显示,配合使用本人学习笔记《基于stm32f103RB系统板驱动LCD显示屏》

    LCD显示技术是嵌入式系统中的重要组成部分,尤其在单片机开发中有着广泛的应用。本文将基于STM32F103RB系统板,详细阐述如何驱动LCD显示屏,...结合提供的学习笔记和相关工具,相信你能够在驱动LCD的道路上更进一步。

    笔记本led.pdf

    LCD(Liquid Crystal Display,液晶显示器)是笔记本电脑中常见的显示技术,用于提供图形和视频的视觉输出。当LCD显示屏出现故障时,可能表现为屏幕无显示、显示颜色异常、屏幕出现亮点或暗点、显示内容扭曲等问题。...

    study.7z用于平时的一些学习文件

    1. **study_files.txt**:这可能是一个记录学习过程的文本文件,可能包含了学习笔记、参考资料链接、学习计划或者学习心得等内容。对于系统化学习和回顾知识非常有帮助。 2. **work.txt**:这个文件可能涉及到工作...

    LCD1602-processing-m开发笔记

    3. 发送数据:通过微控制器的串行或并行接口将字符矩阵发送给LCD1602,使用相应的LCD控制库(如`LiquidCrystal_I2C`或`LCD1602`库)显示字符。 在`digital-image-processing-main(33).zip`这个压缩包中,可能包含的...

    imyangqi.github.io:这是我的博客

    博客的内容可能包括技术教程、项目经验、学习笔记、行业动态等多种类型。博主可能会分享编程语言的知识(如Python、Java、JavaScript等),探讨软件开发的最佳实践,或者讨论新兴的IT趋势,如云计算、人工智能、...

    液晶屏码片资料大全

    液晶屏码片,通常称为液晶驱动芯片或者LCM(Liquid Crystal Module)控制器,它的作用是将来自图像处理器的数字信号转换为适合液晶像素驱动的电压信号。码片的选择直接影响到液晶屏的显示效果,包括色彩饱和度、对比...

    3.14液晶LCD1602实验.zip

    4. **学习笔记**:可能包含了一些学习心得、问题解答和注意事项,对初学者很有帮助。 5. **参考资料**:可能包括了其他相关资料链接,如相关教程、视频教程等,便于深入学习。 通过这个实验,学习者可以了解到...

    【周立功】2410的几个基础实验代码(四)【完结篇】

    LCD(Liquid Crystal Display)驱动代码是嵌入式系统中必不可少的一部分,因为它负责在屏幕上显示图像和文本。S3C2410具有集成的LCD控制器,能够支持多种分辨率和颜色模式。这部分代码会涵盖如何配置LCD控制器,...

    observable-jekyll:教程:如何将ObservableHQ笔记本嵌入到CMS中

    在IT行业中, ObservableHQ 和 Jekyll 是两个非常重要的工具,分别用于交互式数据可视化和静态...这种方法特别适合数据科学博客、技术文档或者数据报告,使得读者能够在阅读过程中直接与数据互动,提高理解和学习效果。

    3log.github.io

    【3log.github.io】是一个基于GitHub Pages搭建的个人博客项目,通常用于分享技术文章、学习笔记或者个人作品。GitHub Pages是GitHub提供的一项免费服务,允许用户托管静态网站,非常适合个人开发者展示自己的项目或...

    github.io:Progate学习

    用户可能通过学习Progate上的HTML教程,创建了自己的个人网站或者学习笔记,并将其部署到了GitHub Pages上。 通过查看这个压缩包的内容,你可以期待找到HTML文件(`.html`)、样式表(`.css`)、可能的脚本文件(`....

    128x64液晶显示模块原理图+教程+源代码+其它技术资料.7z

    液晶显示模块(Liquid Crystal Display Module,LCD)是电子设备中常用的一种显示部件,尤其是在嵌入式系统、物联网设备以及各种仪器仪表中。128x64 LCD指的是具有128列和64行像素的显示屏,能提供相对较高的分辨率...

    《计算机英语教程双色版》英语答案考试整理.pdf

    平板(flat panel)和液晶显示器(liquid crystal display)是现代显示技术,如LCD电视和显示器;投影表面(projection surface)用于投影显示;真彩(true color)是指能显示大量颜色的能力。此外,位深度(bit ...

    svalqui.github.io

    标题 "svalqui.github.io" 暗示这是一个个人或者项目的GitHub页面,通常用来分享代码、文档或个人学习笔记。由于描述是简单的“笔记”,我们可以推测这个GitHub仓库包含了一位用户或团队的学习记录,可能涵盖了各种...

    FLat panel Vladimir_G._Chigrinov,_Vladimir_M._Kozenkov,_Hoi-(BookFi.org)

    液晶显示技术书籍和文献为我们提供了深入学习液晶显示器工作原理和技术发展的宝贵资源,对于相关领域的工程师、研究人员和学生来说,这些书籍是非常有价值的参考资料。随着科技的发展,液晶显示技术仍然在不断进步,...

    计算机英语词汇表初级、中级

    13. **LCD (Liquid Crystal Display)**:液晶显示器是一种显示技术,广泛应用于电视、电脑显示器和手机等设备。 14. **Disk Drive**:磁盘驱动器用于读写硬盘或其他磁介质,是存储数据的关键组件。 15. **BIOS ...

    LCD 监视器开关程序源码

    在计算机硬件中,LCD(Liquid Crystal Display)显示器是常见的显示设备,它通过控制液晶分子的排列来改变光线的透过率,从而显示图像。LCD监视器的开/关控制通常是通过与主板上的I/O端口或GPIO(General Purpose ...

Global site tag (gtag.js) - Google Analytics