小程序不能 eval?能动态执行代码?

2018-02-25 02:24:02 +08:00
 BlockBlockBlock

=== 不存在的!===

那拿 JavaScript 写一个 JavaScript 解释器不就完了嘛?惊不惊喜?意不意外?

代码传送门 -> https://github.com/bramblex/jsjs

未压缩的代码总共也就 170 K,压缩后大小估计能减到一半以下,远远超不过小程序的 1 M 限制。目前实现了除了 label 和 with 以外所有 es5 语法。

唯一的问题大概是效率低 /内存占用高了,但是就更个业务代码,效率根本不是问题。

第二个版本准备设计一个 IR 来减轻前端的解析执行压力、提高效率,同时也方便实现协程( generator / async await )

所以,鹅厂的小伙伴,有本事把字符串处理的函数全封了,然后再把 ajax 全封了呀~

不能封?封了就废了?那你能奈我何?[滑稽]

9507 次点击
所在节点    JavaScript
4 条回复
whileFalse
2018-02-25 09:33:41 +08:00
卧槽,这真是……只能点赞了。
whileFalse
2018-02-25 09:35:47 +08:00
不过模拟器里面的代码和主代码的变量是隔离的吧。
zjcqoo
2018-03-05 12:55:40 +08:00
年前我也写了个类似的,可以用在小游戏里动态执行 bytecode。

当然主要出于性能优化设计,用了不少奇技淫巧,性能损失控制在一个数量级内(简单的算法甚至和原生 JS 差不多快~~)

下次有机会分享下。
life4s
2020-10-08 05:03:00 +08:00
好牛逼呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/432386

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX