This action will force synchronization from qibu111/qyscript, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
代码都有注释,结构也比较简单,主要目的还是学习和研究。
原理就是对字符串进行词法分析、语法分析、指令处理等。
其实就是实现了一个类似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没有发现。不过满足一般的开发是没问题的。有能力的开发者可以先拿着玩玩。
因为在自主创业,公司事情太多,精力实在有限。还没特别多的时间来整合这个库。如有问题,请理解一下。等公司走上正轨,我一定会精心维护这个库的。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。