openresty 前端开发轻量级MVC框架封装二(渲染篇)


下载解压到lualib目录之后,就算安装完成了,下面来试用一下,更详细的可以到github上面看文档

conf/nginx.conf

worker_processes  1;error_log logs/error.log notice;events {    worker_connections 1024;
}http {    lua_package_path "/Users/john/opensource/openresty-web-dev/demo9/lua/?.lua;/Users/john/opensource/openresty-web-dev/demo9/lualib/?.lua;/usr/local/openresty/lualib/?.lua";    server {        listen 80;        server_name localhost;        lua_code_cache off;        location / {            root lua; # 这个很重要,不然模板文件会找不到
            default_type "text/html; charset=utf-8";            content_by_lua_file lualib/lite/mvc.lua;
        }        location ~ ^/js/|^/css/|\.html {            root html;
        }
    }
}

lua/index.lua

local template = require "resty.template"local _M = {}function _M.index()
    local model = {title = "hello template", content = "<h1>content</h1>"}    -- 1、外部模板文件
    -- template.render('tpl/index.html', model)
    -- 2、内嵌模板代码
    template.render([[
<html>
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
</head>
<body>
    {* content *}
</body>
</html>
        ]], model)endreturn _M

lua/tpl/index.html

<html><head>
    <meta charset="UTF-8">
    <title>{{title}}</title></head><body>
    {* content *}</body></html>

跟spring mvc 有点像,指定一个 view , model,然后就可以渲染了,模板语法有很多种,{{ 变量 }} 会进行转义,{ 不会转义 },{% lua 代码 %},跟jsp有点类似,但是很轻量,只有单个文件,更多用法可以到github上面看。

浏览器访问 http://localhost/index ,输出content

至此,服务端渲染就搞定了,已经可以开发一些常见的web应用,使用openresty来做前端,然后通过http访问后端的java,也可以在前端,直接访问mysql、redis,只不过mysql只能做一些简单的非事务操作,因为lua-resty-mysql这个库不支持事务,我在github上面问过春哥了,当然如果你直接调用存储过程,把事务放在过程里面控制的话也可以,现在你可以直接写同步的代码风格,就能获得高并发、低消耗,非堵塞等各种好处。

我们已经用openresty开发了pc版,还有微信版的web应用,已经运行几个月了,很稳定,上手也简单,开发的时候不用编译,直接启动一个nginx就搞定,部署的时候只需要10几M的内存,还可以用openresty做各种事情,高并发api、web防火墙,直接跑在nginx里面,简直爽歪歪,有机会跟大家分享。


注:转载请注明本站地址及原文地址
本文转载自https://my.oschina.net/362228416/blog/822535,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除。

上一篇 下一篇


评论



分享

最新加入

最新评论

你知道我是谁: 交友网站上的骗子,打着谈恋爱的旗号,干着骗炮的事情! 查看原文 04月08日 10:30
admin: 编程语言和web服务器如nginx,都可自定义状态码。阿里产品的问题请咨询阿里云的客服,提个工单就可以。 查看原文 12月13日 20:26
a_a_a: 自定义状态码怎么实现? 比如 阿里高防拦截 返回码 560 等等,在线等 急 查看原文 12月13日 16:56
admin: 查看原文 12月11日 22:08