本文简述了一些自己关于动态重载Lua脚本的思考
平时工作中自己多使用 Lua 脚本,过程中常常会遇到一个痛点:如何动态重载Lua脚本以加快开发的迭代速度....:
不包含内部数据
如最开始提到的那样,脚本不包含内部数据是"解决"内部数据重载最简洁的解决方案(***解决某个问题的方法之一便是回避这个问题~***)
包含可重建的数据
如果脚本包含的内部数据可以重建......
end
包含不可重建的数据
如果脚本包含不可重建的数据,则需要考虑合并新脚本与旧脚本的内部数据了,这里涉及到 upvalue 等数据的合并,你可能需要实现一个复杂的 reload 方法来进行这项操作...拆分脚本为数据脚本和方法脚本是一种相对靠谱的脚本重载方案
由于方法脚本不存在内部数据,重载起来自然非常简单;
但数据脚本的重载仍然会比较麻烦,尤其是包含不可重建数据时,好在一般来讲,方法脚本的变更比较多...,数据脚本的变更比较少,而且数据脚本的变更幅度一般也不会太大,此时实现相应的 reload 函数往往并不困难,相对谨慎的设计基本可以规避数据脚本的重载问题(可以把数据脚本类比于一个数据库).
-- module_data.lua