1 简介

  https://github.com/bungle/lua-resty-template

  如果学习过JavaEE中的servlet和JSP的话,应该知道JSP模板最终会被翻译成Servlet来执行;

  而lua-resty-template模板引擎可以认为是JSP,其最终会被翻译成Lua代码,然后通过ngx.print输出

  这是第三方库,需要安装

2 语法介绍

2.1 标签语法

1){* expression *}

  表达式(变量)转义输出,类似于Spring MVC中输出ModelAndView中的变量;
2){{ expression }}

  表达式(变量)做HTML转义输出;;
3){% lua code %}

  Lua代码执行块;
4){( template )}

  所包含的模板文件,类似于JSP中的include标签,一般我们可以将网页通用的head和footer包含进来;
5){[ expression ]}

  包含表达式文件 (表达式结果),可以这样使用:{["file.html", { message = "Hello, World" } ]},上面是官方文档给的注释,个人觉得和{(template)}没啥区别,直接在上面写表达式会报错;
6){# comment #}

  代码注释(不输出、不执行);
7){-block-}...{-block-}

  该标签对的内容会被识别为一个Lua代码块,(请注意block不要用成verbatim或raw了,否则会被识别为纯文本输出);
8){-verbatim-}...{-verbatim-} 或者 {-raw-}...{-raw-}

  两类标签的内容不会被lua-resty-template解析,并作为纯文本输出;

2.2 配置模板位置

  使用lua-resty-template,可以通过下面两种方式来配置模板文件的位置,在server下可配置

  template_root (set $template_root /var/www/site/templates)
  或
  template_location (set $template_location /templates)

  如果在Nginx配置中没有这些设置,则使用ngx.var.document_root的值。 如果设置了template_location,并且正常返回(状态码200),则使用其渲染。如果找不到,将回溯到template_root或document_root。

3 下载安装

3.1 下载解压

  https://github.com/bungle/lua-resty-template

 

3.2 上传

  将解压后的下面templete.lua文件和templete文件夹上传到openresty/lualib/resty目录下

 

4 http使用示例

4.1 示例(使用reader函数直接构建模板和内容)

4.1.1 修改nginx配置文件

  

  在server加一个location配置

location /lua-templete {
default_type text/html;
content_by_lua_file lua/lua-resty-template.lua;
}

  

4.1.2 添加文件lua-resty-template.lua

内容

-- Using template string
local template = require "resty.template" template.render([[
<!DOCTYPE html>
<html>
<body>
<h1>{{message}}</h1>
</body>
</html>]], { message = "Hello, World!" })

4.1.3 重启后访问

4.2 示例(使用html模板文件)

4.2.1 nginx配置文件

  在server下条件下面配置,配置模板文件位置

set $template_root /usr/local/openresty/nginx/lua/templete;

4.2.2 添加view.html文件

内容

<!DOCTYPE html>
<html>
<body>
<h1>{{message}}</h1>
</body>
</html>

4.2.3 修改lua-resty-template.lua

写法1

local template = require "resty.template"     

-- Using template.new

local view = template.new "view.html"
view.message = "Hello, World!"
view:render()

写法2

local template = require "resty.template"     

-- Using template.new

template.render("view.html", { message = "Hello, World!" })

4.2.4 重启后访问

Nginx13 openresty使用lua-resty-template的更多相关文章

  1. lua resty template && openresty 使用

    1. 安装 luarocks install lua-resty-template 2. 使用   配置模板页面位置     有多种方式:   a.  直接使用root 目录     代码如下:    ...

  2. OpenResty(nginx+lua) 入门

    OpenResty 官网:http://openresty.org/ OpenResty 是一个nginx和它的各种三方模块的一个打包而成的软件平台.最重要的一点是它将lua/luajit打包了进来, ...

  3. LUA+resty 搭建验证码服务器

    使用Lua和OpenResty搭建验证码服务器 雨客 2016-04-08 16:38:11 浏览2525 评论0 云数据库Redis版 摘要: Lua下有个Lua-GD图形库,通过简单的Lua语句就 ...

  4. (转)OpenResty(nginx+lua) 开发入门

    原文:https://blog.csdn.net/enweitech/article/details/78519398 OpenResty 官网:http://openresty.org/  Open ...

  5. CentOS安装OpenResty(Nginx+Lua)开发环境

    一.简介 OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高 ...

  6. 给lnmp一键包中的nginx安装openresty的lua扩展

    lnmp一键包(https://lnmp.org)本人在使用之后发现确实好用,能帮助我们快速搭建起lnmp.lamp和lnmpa的web生产环境,因此推荐大家可以多试试.但有的朋友可能需要使用open ...

  7. 【原创】大叔问题定位分享(36)openresty(nginx+lua)中获取不到post数据,ngx.req.get_body_data返回nil

    openresty(nginx+lua)中获取不到post数据,ngx.req.get_body_data返回nil This function returns nil if the request ...

  8. Openresty编写Lua代码一例

    1.前段时间纠结了很久,一直弄不清lua和tomcat的联系.一直认为是lua调用tomcat的接口才可使用,后面才明白过来,进入了一个误区,lua本身就是一门独立的脚本语言.在openresty里面 ...

  9. 【原创】运维基础之OpenResty(Nginx+Lua)+Kafka

    使用docker部署 1 下载 # wget https://github.com/doujiang24/lua-resty-kafka/archive/v0.06.tar.gz# tar xvf v ...

  10. Openresty(Lua+Nginx)实践

    简介: OpenResty(也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. OpenRest ...

随机推荐

  1. Web浏览器Linux Shell(shellinabox解决通用区服务器Linux Shell访问很麻烦的问题)

    问题背景 通用区服务器的Linux Shell访问,比较麻烦 需要动态密码(手机上装Token)连跳板机,再用跳板机上的终端工具连Linux Shell 改进方法 使用shellinabox,就能直接 ...

  2. Kubernetes介绍和资源管理

    Kubernetes介绍和资源管理 Kubernetes介绍 官网:https://kubernetes.io/ 一.应用部署方式演变 1.传统部署:互联网早期,会直接将应用程序部署在物理机上 优点: ...

  3. 【Java并发002】使用级别:线程同步与线程通信

    一.前言 本文介绍Java多线程技术,分为五个部分:多线程的两种实现方式--继承Thread类和实现Runnable接口:线程同步应用:三人吃苹果:线程同步+线程通信应用之一:生产者-消费者问题:线程 ...

  4. UBOOT编译--- UBOOT顶层Makefile中目标_all和all的关系及背景(四)

    @ 目录 1. 前言 2. 概述 3. 老版本UBOOT(背景) 4. 新版本UBOOT 5. 参考 1. 前言 UBOOT版本:uboot2018.03,开发板myimx8mmek240. 2. 概 ...

  5. python调用程序路径中包空格,及包含特殊字符问题

    解决办法 import os s = r'"C:\Program Files\Google\Chrome\Application\chrome.exe"' print(s) os. ...

  6. Jmeter——结合Allure展示测试报告

    在平时用jmeter做测试时,生成报告的模板,不是特别好.大家应该也知道allure报告,页面美观. 先来看效果图,报告首页,如下所示: 报告详情信息,如下所示: 运行run.py文件,运行成功,如下 ...

  7. 爬虫之xpath插件下载与安装

    目录 简介: 下载xpath文件 打开chrome浏览器 点击右上角小圆点 更多工具.阔展程序 拖拽xpath插件放到阔展程序 如果失效,再次拖拽 关闭浏览器重新打开 按ctrl+shift+x 出现 ...

  8. CompletionService 使用小结

    本文为博主原创,转载请注明出处: 实现异步任务时,经常使用 FutureTask 来实现:一个简单的示例代码如下: public static void main(String[] args) thr ...

  9. 关键字break和continue

    关键字:break 和continue提供了另一种控制循环的方式. break 是直接退出循环体 如: continue  是退出当前循环迭代 如: 需要注意的是:使用过多的break和continu ...

  10. 记一次 .NET 某工控MES程序 崩溃分析

    一:背景 1.讲故事 前几天有位朋友找到我,说他的程序出现了偶发性崩溃,已经抓到了dump文件,Windows事件日志显示的崩溃点在 clr.dll 中,让我帮忙看下是怎么回事,那到底怎么回事呢? 上 ...