開源模板語言Liquid

2021-08-01 08:44:34 字數 1646 閱讀 4208

其實我早就應該了解liquid的,但是因為一些原因, 終究還是沒去了解liquid,直到今天,再次遇見它,我準備進入它的世界,看看它面紗下的樣子。

liquid是一門由shopify使用ruby實現的開源模板語言,這門語言應用比較廣泛,所以才會再次遇見它,哈哈。liquid的**分為這三部分物件(object),標記(tag),過濾器(filter)。

這個物件相當於就是物件導向程式設計語言裡的類的例項化物件,其訪問物件的屬性的方法也是一樣的,都是通過物件打點加屬性訪問。唯有一點不同就是,liquid的物件和變數名必須寫在雙大括號中,具體格式如下:

}

上面這行**就可以輸出object

物件的屬性值了

我感覺這個標記其實就是程式語言中的基本控制結構吧!先看個例子吧!

}hello world

這個**簡直就是if-else即視感吶!只不過是把**放在了大括號和百分號中間而已。上面只是乙個小例子。下面開始詳細說一下標記。

標記分為三類,控制流,迭代,變數賦值。下面分別說說這三個東西都是啥意思。

assign

建立新的變數,建立的變數沒有啥要求

capture

建立的變數都是字串,而且是把自己的所有都賦值給建立的變數,它真的是用情至深吶!看下**就明白了。

i am being captured.

}輸出結果:

i am being captured.

它是不是付出了自己的所有呢?真的是啊!可惜的是,這種人的結局往往是悲劇。

increment

這個厲害了,它自帶加1屬性,它建立的是數值變數,其初始值是0,但之後每次呼叫這個變數的時候,其值自動加1,掉一次加一次,是不是很6吶!還是看**:

輸出結果如下:01

2

還有一點要說明的就是,increment 比較小心眼吶!它的加1屬性只對自己建立的變數有效,而對capture 或assign建立的變數無效,是不是很小心眼吶!下面看**。

}輸出結果如下:01

210

decrement

它和increment 以前肯定是愛人吶!俗話說,愛有多真,恨便有多深,所以別說分手後做朋友,怎麼可能呢?看看decrement和increment 就知道為啥做不了朋友了,哈哈。

decrement定義的也是數值型別,但是它的初始值是-1,每次呼叫都減1,是不是和increment 完全相反吶!哎,相愛相殺吶!它們倆若再在一起的話,唯有消失了。哈哈,下面是**。

輸出結果如下:

-1-2

-3

還有一點要注意的就是,decrement 同樣是很小心眼滴,它的減1特性,對assign 或 capture 建立的變數是沒有效果滴。看吧,果真是,不是一家人,不進一家門吶!

我的天吶!我寫了這麼多,竟然還沒把這個liquid寫完吶!估計明天不會 再寫它了吧!因為明天要學乙個新東西。哈哈。它的面紗,我應該已經揭開一半了吧!另一半,待我下次揭開,哈哈。

go語言開源專案

谷歌官方維護了乙個基於go語言的開源專案列表 其中有非常多的優秀專案值得學習,有幾百行 適合新手閱讀的專案,也有大型如nsq docker等的專案。1 cache2go 比較簡單的乙個快取庫,量很少,適合新手學習,可以學習到鎖 goroutines等。2 groupcache 與memcached同...

13 2 4 模板層 模板語言

django約定將所有的html文件都放在templates資料夾下,注意,templates是模板的意思,這是因為放在templates資料夾下的並不全是html文件,如果文件中包含django的模板語言,那就是django模板檔案。來思考乙個響應的過程,當我們使用render 函式返回乙個文件時...

Django模板語言

1.1 模板由兩部分組成 html 邏輯控制 1.2 作用 快速生成html頁面 1.3 優點 模板的設計實現了業務邏輯與現實內容的分離 檢視可以使用任何模板 1.4 模板處理 載入 渲染 2.1 只需要記兩種特殊符號 和 變數相關的用 邏輯相關的用。2.2 邏輯相關 2.2.1.if判斷 2.2....