代码拉取完成,页面将自动刷新
代码都有注释,结构也比较简单,主要目的还是学习和研究。
原理就是对字符串进行词法分析、语法分析、指令处理等。
其实就是实现了一个类似js的eval功能,只不过eval里面的参数是ts格式的代码。
超小的库,库文件经Uglify压缩后只有66kb。
QQ群:857485170
egret_demo工程说明
cocos_demo工程说明
laya引擎暂无demo
以下为未实现(即将实现16、7、15、9、1、13):
<Array>obj
,建议用as代替class A<T>{}
示例:
qs.run(`
class Start{
public constructor() {
console.log('你好,世界!');
}
}
`, 'Start', window);//如果把所有代码整合到一个文件中的话,则这个更加方便一点,如果代码文件碎片化,则用下面一种方式好一点
另一种方式:
var runTime = new qs.RunTime(window);//创建一个运行时对象
runTime.regedit(`class Test{public constructor(){console.log('你好,世界!')}}`);//注册Test类
runTime.regedit(`class Start{public constructor(){new Test()}}`);//注册Start类
new runTime.g.Start();//实例化Start类,部分情况下,直接new Start();也可以
3月26日新增只更新某方法、某类的Demo
具体实现在egret工程的UpdateFunction和UpdateClass里面。
推荐大家使用局部更新,而不是全部代码都走热更新。
性能测试对比:
华为Mate20执行效率:
PC上运行Unity的三个热门热更新方案(scorpio、lua、cls)执行效率:
性能对比结果: 原生js对for循环是做了优化的,所以执行效率很高。大家可以通过循环一亿次,for循环不实现就可知道。 通过跟Unity的几个热门热更新对比来看,100万次计算在性能上是不弱的。不过仅仅是循环+计算并不能说明全部问题。性能测试也只是反映部分现象,不代表全部。 总体来说,跟Unity的热更新一样,比不上原生代码是肯定的。
写在最后:应大家的要求,仓促的先发一个先行版,说明也不完善,可能还有未知的BUG没有发现。不过满足一般的开发是没问题的。有能力的开发者可以先拿着玩玩。
因为在自主创业,公司事情太多,精力实在有限。还没特别多的时间来整合这个库。如有问题,请理解一下。等公司走上正轨,我一定会精心维护这个库的。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。