lua模块化实现

作者: 回调的幸福时光 | 来源:发表于2016-05-05 17:48 被阅读790次

公司以lua作为脚本进行前端开发,现在要求实现模块化开发。

lua5.2推荐的方式:将table作为module
--myModule.lua文件名
local myModule = {};
--变量
local temp = 10;
--函数
function myModule.fun_1()
      print("this is first function!")
end
function myModule.fun_2()
      print("this is second function!")
end
--返回table
return myModule  

引用

local testModule =  require("myModule");
testMoudle.temp;
testMoudle.fun_1();

注意

  • 测试文件是和封装好的模块在同一个目录,否则引用时需要设置路径。
  • 模块名称和文件名称必须相同

不建议使用以下方式

lua5.0/lua5.1旧方式
--myModule.lua文件名
module("myModule",package.seeall)

function fun_1()
  print("this is err")
end

引用

require("myModule")
myModule.fun_1();

此方式引起的问题

  • 在定义了一个module()之后,前面定义的全局变量就都不可用了,包括print函数等,如果要让之前的全局变量可见,必须在定义module的时候加上参数package.seeall
--全局变量
gloable_temp = 1;
--定义module
module("myModule");
--以上所有全局变量都不可用,因为module指令运行完后,整个环境(上下文)被压栈
  • package.seeall这种方式破坏了模块的高内聚,它可以读写全局属性

  • 第二个缺陷是module函数的side-effect引起的,它会污染全局环境变量。

参考:

blog.kenshinx.me
blog.codingnow.com

相关文章

  • lua模块化实现

    公司以lua作为脚本进行前端开发,现在要求实现模块化开发。 lua5.2推荐的方式:将table作为module ...

  • JS函数charCodeAt的Lua实现

    JS函数charCodeAt的Lua实现 charCodeAt by Lua @(Lua JavaScript ...

  • Lua与C#的交互实现

    lua与C#交互使用LuaInterface实现定义变量:1,Lua lua = new Lua() --定义一个...

  • cocos2dx-lua表情列表实现

    实现效果 lua代码片段

  • 1,Lua简介及Hello world

    1.什么是Lua? 2.Lua的特点 3.Lua的一些资料 4.Lua安装 Lua是用纯ANSI C实现的,在所有...

  • 2018-08-02

    lua实现继承,重载和多态(上) *讲到lua的继承等面向对象的实现,首先得讲一下lua中的几个元方法和元表. s...

  • Lua实现继承

    Lua实现继承 我们知道在Lua脚本语言中是没有对象这个概念的。但是Lua为我们提供了一堆的元方法,可以实现类的继...

  • Quick-cocos2dx-lua下拉刷新,上啦加载

    Quick-cocos2dx-lua实现的下拉刷新,上拉加载 该控件是使用quick-cocos2dx-lua实现...

  • 2017.5.25

    lua学习总结:数据结构: 使用Lua实现链表(单向链表和双向链表),队列 使用Lua保存图,用table保存,每...

  • 阿里ARouter路由实现模块化开发流程

    阿里ARouter路由实现模块化开发流程(一)阿里ARouter路由实现模块化开发流程(二)

网友评论

    本文标题:lua模块化实现

    本文链接:https://www.haomeiwen.com/subject/udpdrttx.html