日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

openresty模板html页面,openresty 中使用lua 的页面模板类库template来渲染页面

發(fā)布時間:2024/10/8 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openresty模板html页面,openresty 中使用lua 的页面模板类库template来渲染页面 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

動態(tài)web網(wǎng)頁開發(fā)是Web開發(fā)中一個常見的場景,比如像京東商品詳情頁,其頁面邏輯是非常復(fù)雜的,需要使用模板技術(shù)來實現(xiàn)。而Lua中也有許多模板引擎,如目前我在使用的lua-resty-template,可以渲染很復(fù)雜的頁面,借助LuaJIT其性能也是可以接受的。

如果學(xué)習(xí)過JavaEE中的servlet和JSP的話,應(yīng)該知道JSP模板最終會被翻譯成Servlet來執(zhí)行;而lua-resty-template模板引擎可以認(rèn)為是JSP,其最終會被翻譯成Lua代碼,然后通過ngx.print輸出。

而lua-resty-template和大多數(shù)模板引擎是類似的,大體內(nèi)容有:

模板位置:從哪里查找模板;

變量輸出/轉(zhuǎn)義:變量值輸出;

代碼片段:執(zhí)行代碼片段,完成如if/else、for等復(fù)雜邏輯,調(diào)用對象函數(shù)/方法;

注釋:解釋代碼片段含義;

include:包含另一個模板片段;

其他:lua-resty-template還提供了不需要解析片段、簡單布局、可復(fù)用的代碼塊、宏指令等支持。

模板的一些常用特殊指令,類似與jsp中的指令一樣

{(include_file)}:包含另一個模板文件;

{* var *} :變量輸出;

{{ var }}:變量轉(zhuǎn)義輸出

{% code %}:代碼片段

{# comment #}:代碼注釋

{-raw-}:中間內(nèi)容不會解析,作為純文本輸出;

下載lua 模板類庫

wget?https://raw.githubusercontent.com/bungle/lua-resty-template/master/lib/resty/template.lua

wget?https://raw.githubusercontent.com/bungle/lua-resty-template/master/lib/resty/template/html.lua

首先來看下template.lua的模板路徑選擇

lua查找模板頁面路徑的選擇:以下是lua? template.lua的源碼

兩個指定的變量:

template_location:指向ngx的location,使用內(nèi)部調(diào)用internal,alias用于指定文件夾的別名。

注意:不能使用location =/templates 中的只 等于 ‘=’ 符號來修飾,因為lua腳本的源碼 capture(location/file),比如/templates/t1.html,如果使用=匹配,就匹配不到了。

template_root:指向模板頁面的根路徑。

兩者關(guān)系:首先從template_location中配置的路徑獲取模板,如果沒有在從template_root配置的路徑中獲取,如果還是沒有的話,最后從nginx的document_root中獲取路徑中的模板頁面

API

使用模板引擎的目的就是輸出響應(yīng)內(nèi)容:主要有兩種方式輸出:

第一種:通過ngx.print/ngx.say輸出渲染后的內(nèi)容。

第二種:得到模板渲染之后的內(nèi)容按照想要的規(guī)則輸出。

第一種配置:

模板的內(nèi)容:

得到的結(jié)果:

第二種方式:

模板配置的內(nèi)容:

結(jié)果如下:

模板最終被轉(zhuǎn)換為lua代碼進行執(zhí)行,所以模板中可以執(zhí)行任意的lua代碼。

總結(jié)

以上是生活随笔為你收集整理的openresty模板html页面,openresty 中使用lua 的页面模板类库template来渲染页面的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。