那拿 JavaScript 写一个 JavaScript 解释器不就完了嘛?惊不惊喜?意不意外?
代码传送门 -> https://github.com/bramblex/jsjs
未压缩的代码总共也就 170 K,压缩后大小估计能减到一半以下,远远超不过小程序的 1 M 限制。目前实现了除了 label 和 with 以外所有 es5 语法。
唯一的问题大概是效率低 /内存占用高了,但是就更个业务代码,效率根本不是问题。
第二个版本准备设计一个 IR 来减轻前端的解析执行压力、提高效率,同时也方便实现协程( generator / async await )
所以,鹅厂的小伙伴,有本事把字符串处理的函数全封了,然后再把 ajax 全封了呀~
不能封?封了就废了?那你能奈我何?[滑稽]
1
whileFalse 2018-02-25 09:33:41 +08:00
卧槽,这真是……只能点赞了。
|
2
whileFalse 2018-02-25 09:35:47 +08:00
不过模拟器里面的代码和主代码的变量是隔离的吧。
|
3
zjcqoo 2018-03-05 12:55:40 +08:00
年前我也写了个类似的,可以用在小游戏里动态执行 bytecode。
当然主要出于性能优化设计,用了不少奇技淫巧,性能损失控制在一个数量级内(简单的算法甚至和原生 JS 差不多快~~) 下次有机会分享下。 |
4
life4s 2020-10-08 05:03:00 +08:00
好牛逼呢
|