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

Nginx+lua实现本地HTML页面动态渲染 目标 Nginx接到请求后,直接使用自己本地的数据动态渲染到html页面中然后返回给客户端。 环境说明 操作系统:ubuntu18.04 64bit OpenResty 版本:1.15.8.3 为什么是OpenResty 想用Nginx做一些个性化的功能,一般都会使用脚本语言Lua,那为啥不是C语言呢?因为C语言难啊!而要使用Lua,lua-nginx-module则是个非常好的Nginx扩展模块,但是它是不随Nginx一同发布的,需要自己手动安装,而OpenResty直接集成了,而.. 阅读详情

动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现。而Lua中也有许多模板引擎,如目前我在使用的lua-resty-template,可以渲染很复杂的页面,借助LuaJIT其性能也是可以接受的。

如果学习过JavaEE中的servlet和JSP的话,应该知道JSP模板最终会被翻译成Servlet来执行;而lua-resty-template模板引擎可以认为是JSP,其最终会被翻译成Lua代码,然后通过ngx.print输出。

而lua-resty-template和大多数模板引擎是类似的,大体内容有:

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

变量输出/转义:变量值输出;

代码片段:执行代码片段,完成如if/else、for等复杂逻辑,调用对象函数/方法;

注释:解释代码片段含义;

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

其他:lua-resty-template还提供了不需要解析片段、简单布局、可复用的代码块、宏指令等支持。

模板的一些常用特殊指令,类似与jsp中的指令一样

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

{* var *} :变量输出;

{{ var }}:变量转义输出

{% code %}:代码片段

{# comment #}:代码注释

{-raw-}:中间内容不会解析,作为纯文本输出;

下载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,使用内部调用internal,alias用于指定文件夹的别名。

 注意:不能使用location =/templates 中的只 等于 ‘=’ 符号来修饰,因为lua脚本的源码 capture(location/file),比如/templates/t1.html,如果使用=匹配,就匹配不到了。

template_root:指向模板页面的根路径。

两者关系:首先从template_location中配置的路径获取模板,如果没有在从template_root配置的路径中获取,如果还是没有的话,最后从nginx的document_root中获取路径中的模板页面

 

API

使用模板引擎的目的就是输出响应内容:主要有两种方式输出:

第一种:通过ngx.print/ngx.say输出渲染后的内容。

第二种:得到模板渲染之后的内容按照想要的规则输出。

 

第一种配置:

模板的内容:

得到的结果:

第二种方式:

模板配置的内容:

结果如下:

模板最终被转换为lua代码进行执行,所以模板中可以执行任意的lua代码。

Openresty模板实时渲染 lua-resty-template 阅读详情

相关推荐

lua-template:最简单的Lua模板引擎

lua-template:最简单的Lua模板引擎

lua 的模板 lua-resty-template

https://github.com/bungle/lua-resty-templatehttps://github.com/bungle/lua-resty-templateNginx 配置 server { ...... set $template_root ./site/demo/tpl; location /tpl { default_type text/html; conte

HzqGhost's Blog 1500

康耐视CogPMAlignTool模板匹配详解

康耐视CogPMAlignTool是一款基于边缘特征的模板匹配工具,适用于工业视觉检测。该工具提供PatMax、PatQuick、PatFlex等不同算法,分别对应高精度、快速匹配和柔性表面等应用场景。关键参数包括特征粒度(粗糙/精细)、边缘阈值、弹性范围等,支持旋转缩放匹配和极性忽略功能。工具操作流程包括图像采集、参数设置、模板训练和运行检测,通过调整查找概数、接收阈值等参数可优化识别效果。配套的卡尺工具(CogCaliperTool)通过一维投影和边缘筛选实现精准定位,适用于高精度尺寸测量场景。

2502_92473474的博客 1318

Lua Web快速开发指南(5) - 利用template库构建httpd模板引擎

介绍template 模板引擎是为了使用户界面与业务数据(内容)分离而产生的, 其本身并不是一种深奥的技术. template模板引擎首先会将合法的模板编译为lua函数, 然后将模板文件和数据通过模板引擎生成一份HTML代码. cf的admin库整使使用了template来构建服务端渲染页面,...

chuosa2737的博客 339

KMS服务器一键部署与激活实战指南

本文详细介绍了KMS服务器的一键部署与激活实战指南,包括快速入门、安装步骤、服务管理技巧及常见问题排查。特别针对Windows和Mac用户提供了Office激活的具体操作步骤,并分享了高级配置与优化方案,帮助IT管理员高效管理批量授权激活。

weixin_29305313的博客 461

电源完整性之Cadence Sigrity Power DC_IR_Drop仿真

之前和大家分享过电源完整性之仿真设计原理链接: link.今天接着上一篇文章总结一下电源直流压降的的仿真操作流程及一些simulation中的设置参数,用到的时候Cadence Sigrity 中的Power DC组件,下面开始享受仿真的快乐吧: 1.仿真模式选择与文件导入 选择Cadence Sigrity下的Power DC组件,然后先择licence,最后就可以打开我们之前转化好的.SPD文件。操作如下图: 2.设置层叠信息和过孔焊盘参数 层叠信息:每层的介质厚度、材料、介电常数、介质损耗角等,如

刘小同学的博客 1万+

OpenResty template

1、 nginx 配置: server { listen 80; server_name 127.0.0.1; location /demo { alias D:/openresty-win64/html/; access_by_lua_file lua/index.template.lua; #index index.htm...

cn_yaojin 906

uniapp串口通信实战:从零搭建物联网设备控制App(附完整代码)

本文详细介绍了如何使用Uniapp实现串口通信,从零搭建物联网设备控制App。内容涵盖环境配置、串口初始化、数据收发、错误处理等核心功能,并提供了完整的代码示例,帮助开发者快速掌握跨平台串口通信技术,适用于智能农业、工业自动化等物联网场景。

weixin_30369041的博客 597

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

动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现。而Lua中也有许多模板引擎,如目前我在使用的lua-resty-template,可以渲染很复杂的页面,借助LuaJIT其性能也是可以接受的。如果学习过JavaEE中的servlet和JSP的话,应该知道JSP模板最终会被翻译成Servlet来执行;而lua-resty-templ...

weixin_35793357的博客 691

第 10 篇:深度学习的“军火库”——CNN、RNN与Transformer,AI如何看懂世界?

深度学习的革命,不是依赖单一的通用大脑,而是为不同任务打造了专属“军火库”:CNN用“局部感知”看懂图像,RNN用“循环记忆”理解序列,而Transformer则用“全局注意力”开启了AIGC时代。理解这些架构,不是记忆孤立的技术,而是洞察AI从“专才”走向“通才”的进化脉络。

maqh_csdn的博客 786

STM32F4 SPI FLASH(W25Q128)驱动详解(含DMA+完整读写擦除+低功耗)

本文实现了一款基于STM32 HAL库的SPI Flash驱动,以W25Q128为例,提供了完整的初始化、读写、擦除、ID读取等功能。驱动集成了DMA传输、超时保护、页对齐写入等特性,支持扇区擦除、整片擦除、页写入及跨页缓冲写入。代码结构清晰,易于移植到其他SPI Flash型号(如W25Q64、W25Q16等),适用于数据存储、固件升级、文件系统等嵌入式场景。

kevin1499的博客 96

openresty lua-resty-template页面静态化

openresty lua-resty-template页面静态化

weixin_43931625的博客 1076

基于matlab的CNN手写数字图像矫正系统

CNN 是一款强大的图像特征抽象和提取工具,常用于图像分类识别,并取得了较为理想的效果。我们通过 MATLAB 可以方便地设计不同结构、不同深度的 CNN 进行图像分类,最后一层一般设置为分类层(ClassificationLayer)进行类别标签的输出。如果我们将最后一层设计为回归层(RegressionLayer),则可以将其应用于对连续数据的预测,这对于曲线拟合、预测分析都有重要的意义。% 自定义 CNN 回归网络结构layers = [% 输入% 卷积% 池化% 池化% 卷积。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 675

探索 Lua-Resty-Template: 动态HTML渲染的利器

是一个基于OpenResty(一个强大的Nginx与Lua的集成)的轻量级模板引擎。它的设计目标是为了解决在Nginx环境中快速生成动态HTML页面的需求,提供简单、高效且灵活的模板处理能力。 ## 技术分析 ### 设计理念 Lua-Resty-Template 采用了类似 ERB (Ruby) 或 EJS (JavaScript) 的标签语法,使得HTML代码与Lua逻辑相融合。这种设计...

gitblog_00046的博客 758

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

openresty模板html页面,OpenResty 中模板渲染引擎 lua-resty-template

项目介绍lua-resty-template是Lua和OpenResty中的模板渲染引擎。由Kong网关核心工程师bungle开源,京东商城使用此项目完成相关开发。快速入门安装luarocks install lua-resty-templatecontent_by_lua_filelocal template = require "resty.template"template.render("...

weixin_33218612的博客 454

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Lua-resty-template 使用教程

`lua-resty-template` 是一个用于 OpenResty 的模板渲染库,它允许开发者使用类似 HTML 的模板语言来生成动态内容。这个库非常适合用于构建动态网页和 Web 应用。 ## 项目快速启动 ### 安装 首先,确保你已经安装了 OpenResty。然后在你的 `nginx.conf` 文件中添加以下配置来加载 `lua-resty-template` 库: ```...

gitblog_00284的博客 556

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

lua-resty-template 使用教程

lua-resty-template 是一个用于 OpenResty 的模板引擎。以下是该项目的目录结构及其介绍: ``` lua-resty-template/ ├── lib/ │ └── resty/ │ └── template.lua ├── LICENSE ├── Makefile ├── README.md ├── dist.ini ├── lua-resty-te...

gitblog_00276的博客 627

高并发 Nginx+Lua OpenResty系列(8)——Lua模版渲染

模版渲染 动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现。而L...

weixin_30652271的博客 261

Lua-resty-template 使用常见问题解决方案

`lua-resty-template` 是一个用于 OpenResty 的模板渲染模块,它可以让用户在 Lua 中使用模板引擎渲染内容。这个模块使用了高性能的 C 扩展,可以有效地在 Nginx 中处理模板渲染。这个项目基于 OpenResty 开发,旨在提供一个轻量级且高效的模板渲染解决方案。 主要编程语言为 Lua,由于在 OpenResty 环境下运行,所以对于熟悉 Lua 和 Open...

gitblog_00369的博客 782

openresty模板html页面,GitHub - senion/lua-resty-template: Templating Engine (HTML) for Lua and OpenResty...

lua-resty-templatelua-resty-template is a compiling (1) (HTML) templating engine for Lua and OpenResty.(1) with compilation we mean that templates are translated to Lua functions that you may call or ...

weixin_39773215的博客 309

OpenResty学习——第五章 常用Lua开发库3-模板渲染

本文转自https://blog.csdn.net/jinnianshilongnian/article/details/84703742,好文要顶,感谢博主分享! 动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现。而Lua中也有许多模板引擎,如目前我在使用的lua-resty-template,可以渲染很复杂的页面,借助...

PeterOK的博客 498

OpenResty的lua-resty-template使用

OpenResty和TOMCAT服务器类似的提供了模板渲染的功能,类似于JAVA Web开发中的JSP。lua-resty-template插件模块并不是           OpenResty官方的,官方目前提供了一个lemplate的插件,截止目前(2017-08-01)还不能作为生产环境使用。 lua-resty-template下载         下载地址:https://githu

Fouy_风度玉门。 6066

OpenResty(5):Openresty 模板渲染

设置模板路径:set $template_root /usr/local/openresty/nginx/html/templates;导入lua文件:content_by_lua_file /usr/local/openresty/nginx/conf/*.lua。下载 http://luarocks.org/modules/bungle/lua-resty-template。将template.lua文件复制到openresty/lualib/resty/目录下。

u013938578的博客 608

openresty模板html页面,springboot+nginx+lua开发+html模板渲染

一、安装openresty+nginx1.安装gccyum install -y readline-devel pcre-devel openssl-devel gcc2 新建目录 mkdir /usr/server, cd /usr/server3 下载 openresty wget http://openresty.org/download/openresty-1.11.2.5.tar.gz...

weixin_39695672的博客 235
上一篇: openresty 中lua操作http请求
下一篇: openresty 中使用lua 的类库 lua-resty-lock,来实现异步非阻塞锁
cuichunchi
博客等级 码龄12年 3734粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值