OpenResty学习笔记(三) 模块

又是好长的一段时间没有更新了,长时间的出差感觉都没有精力去学习一些东西了,平时休息时间又有太多的诱惑在,所以感觉想找到一个安心学习的时候真的是不容易啊,其实是又在为自己偷懒找借口啦。好啦,言归正传,开始今天的话题。

首先想说一下OpenResty这个名字的由来,为什么要说这个呢,是因为前一段时间公司里开了一个小型的技术交流会,主要讲的是REST方式的架构风格。所以先在这里小白一下什么是REST:REST即表述性状态传递(英文:Representational
State Transfer,简称REST)是Roy
Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。说得不太容易懂,我只做出我片面的理解,如有不对的请指正。在我的认知中,REST架构的表现形式可能就是一个一个的web接口,它是那种标准的,高度抽象的接口,与业务逻辑无关,仅仅实现某一块标准的功能。因此它是开放的,放哪都可以用,在哪个平台上都可以用的,没有任务兼容性的问题,具有很强的复用性。然后我们就可以说一下这个OpenResty的名字,对于这个名字我们引用章大大本人的回答:“OpenResty最早是顺应OpenAPI的潮流做的,所以
Open 取自“开放”之意,而Resty便是 REST 风格的意思。虽然后来也可以基于ngx_openresty实现任何形式的 web
service 或者传统的 web
应用。”摘自http://www.oschina.net/question/28_60461。从这里我们可以看出来OpenResty是保持
着REST 风格的。我们也可以在以后的工作学习当中多做一些这样的尝试。

下面说一下lua的模块,从 Lua 5.1 语言添加了对模块和包的支持。一个 Lua 模块的数据结构是用一个 Lua 值(通常是一个 Lua
表或者 Lua 函数)。Lua 提供了一个名为 require 的函数用来加载模块。要加载一个模块,只需要简单地调用 require
“file”就可以了,file 指模块所在的文件名。这个调用会返回一个由模块函数组成的 table ,并且还会定义一个包含该 table
的全局变量。 在 Lua 中创建一个模块最简单的方法是:创建一个 table ,并将所有需要导出的函数放入其中,最后返回这个 table
就可以了。相当于将导出的函数作为 table 的一个字段,在 Lua 中函数是第一类值,提供了天然的优势。
引用一下最佳实践中的例子:

local foo={}

local function getname()
    return "Lucy"
end

function foo.greeting()
    print("hello " .. getname())
end

return foo
local fp = require("my")
fp.greeting()     -->output: hello Lucy

这里需要注意的是自己定义的模块或包名最好不要跟现有的库里面的重名,因为你定义的会把库给覆盖掉,所以如果有时候遇到问题可能你自己都很难找到问题所在。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leadersnowy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值