微信小游戏代码热更(转载)

原始链接(如有需求 请去原始链接下载):
https://gitee.com/jianyumofa/qyscript/

方便查找 做个转载记录

运行于JavaScript环境下的TypeScript脚本解释器。微信小游戏代码热更新技术。

原理
原理就是对字符串进行词法分析、语法分析、指令处理等。
其实就是实现了一个类似js的eval功能,只不过eval里面的参数是ts格式的代码。
超小的库,库文件经Uglify压缩后只有66kb。

  1. 可以直接在JavaScript的运行环境中运行TypeScript代码
  2. 性能问题:一般游戏性能不会有问题。如果需要有高性能的需求,请把高性能的代码做成库文件,结尾有一个粗略的性能测试。
  3. 代码体积问题,因为需要从服务器拉取代码,目前没有实现编译成字节码,暂时可以用jsmin先做简单的压缩。
  4. 冷代码(原生的js代码)和热代码(可以热更新的ts代码)之间没有沙箱,可以互相任意调用、继承。
  5. 不用担心字符串处理速度,因为只在第一次进行词法、语法分析。分析结束后会将ts的类生成原生的js对象(Function)。所以内存上也不用太担心。

egret_demo工程说明

  1. 自带一个简单的游戏,发布插件(皮肤必须要commonjs2模式,因为exml也需要热更新)、资源包热更新(在Start.ts中zip下载、解压、缓存全部都实现了)、代码热更新(需自己部署服务器并在主文件的queryCode里面实现)等都已经实现。
  2. 资源包热更新只需要使用命令egret publish --target
    wxgame,然后把项目目录父目录下面的带remote后缀下面的resource打包成zip即可实现资源热更新
  3. 代码热更新在Main.ts里面有示例
  4. 送审的时候请把热更新逻辑也编译成js,审核通过之后,当有新版本要发布的时候,服务器开关切换成热更新代码,同时资源包也打包成zip

你可能感兴趣的:(egret,相关)