Closed tangyiyang closed 8 years ago
原因:Quick的module严重依赖quick本身提供的全局函数,functions.lua下面的所有函数:比如class, dump, import 等等。这样写在quick本身里并没有什么问题。但是如果想和服务端公用一些库的代码的话,也必须加载这些函数,然而服务端并不需要所有的这些函数,这都是小问题。最大的问题是,如果像skynet这样,加载很多个Lua VM 的服务端,在每一个skynet service里都需要加载所有的framework,这样即使有bytecode cache,也并不好,quick本身还输出了日志。
目标:将quick的framework抽象成独立的Lua 文件去组织。按需加载需要的模块。必要的话重写/替换其中的某一些模块,沿用github上的原始版本。做成submodule或者直接把代码集成进来。 已经完成的, class, print_r, dump, table.nums。 现在需要集成的模块有, state-machine, event。
另外: quick 的 framework目录下的这些模块不能直接移除,因为quick本身的UI组件大量依赖component和event这两个模块,所以仍然保留。但是写服务端和客户端共享的业务代码的时候,就不要使用这两个模块。虽然这里有一定的代码重复,但是问题不大。
这个部分完成怎么样了
@fordream 最近在玩skynet很久没维护这边了。
原因:Quick的module严重依赖quick本身提供的全局函数,functions.lua下面的所有函数:比如class, dump, import 等等。这样写在quick本身里并没有什么问题。但是如果想和服务端公用一些库的代码的话,也必须加载这些函数,然而服务端并不需要所有的这些函数,这都是小问题。最大的问题是,如果像skynet这样,加载很多个Lua VM 的服务端,在每一个skynet service里都需要加载所有的framework,这样即使有bytecode cache,也并不好,quick本身还输出了日志。
目标:将quick的framework抽象成独立的Lua 文件去组织。按需加载需要的模块。必要的话重写/替换其中的某一些模块,沿用github上的原始版本。做成submodule或者直接把代码集成进来。 已经完成的, class, print_r, dump, table.nums。 现在需要集成的模块有, state-machine, event。
另外: quick 的 framework目录下的这些模块不能直接移除,因为quick本身的UI组件大量依赖component和event这两个模块,所以仍然保留。但是写服务端和客户端共享的业务代码的时候,就不要使用这两个模块。虽然这里有一定的代码重复,但是问题不大。