在Lua VM上运行JavaScript是否有意义?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Lua VM上运行JavaScript是否有意义?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1818字,纯文字阅读大概需要3分钟。
内容图文
![在Lua VM上运行JavaScript是否有意义?](/upload/InfoBanner/zyjiaocheng/799/aee21cac4a0e4336b4b446b823b5da4d.jpg)
Lua体积小,可以轻松嵌入.当前的JavaScript VM非常庞大,很难集成到现有的应用程序中.
那么将JavaScript编译为Lua或Lua字节码是不是可能的?
特别是对于移动应用程序中的限制,这似乎是一个很好的选择.能够轻松地将最流行的脚本语言之一集成到任何iPhone或Android应用程序中都会很棒.
我对Lua不是很熟悉所以我不知道这在技术上是否可行.
有了Luvit,有一个活跃的项目试图将Node.js架构移植到Lua.因此,规范的JavaScript世界离Lua不太远.
解决方法:
将Javascript编译为Lua的胜利并不像你想象的那么好. Javascript的语义与Lua的语义非常不同(LuaJIT作者认为Lua的设计是LuaJIT可以与Javascript JIT编译器竞争的主要原因之一).
拿这个代码:
if("1" == 1)
{
print("Yes");
}
这在Javascript中打印“是”. Lua中的等效代码没有,因为字符串永远不等于Lua中的数字.这似乎是一个小问题,但它有一个基本结果:我们不能再使用Lua的内置平等测试.
我们可以采取两种解决方案.我们可以将1 ==“1”重写为javascript_equals(1,“1”).或者我们可以在Lua中包装每个Javascript值,并使用Lua的元表来覆盖==运算符行为.
所以我们已经通过将Javascript映射到它而从Lua中失去了一些效率.这是一个简单的例子,但它一直如此.例如,Javascript和Lua之间的所有运算符规则都不同.
我们甚至必须包装Javascript对象,因为它们与Lua表不同.例如,Javascript对象仅支持字符串键,并将任何索引强制转换为字符串:
> a = {}
{}
> a[1] = "Hello"
'Hello'
> a["1"]
'Hello'
您还必须注意Javascript的范围规则,vararg函数等.
现在,如果有人将精力投入到完整的编译器中,所有这些都是可以克服的.然而,任何效率提升很快就会被淹没.你最终将在Lua中构建一个Javascript解释器.大多数Javascript解释器都是用C语言编写的,并且已针对Javascript的语义进行了优化.
因此,为效率而做是一个失败的原因.可能还有其他原因 – 例如在仅限Lua的环境中支持Javascript,尽管如此可能只是将Lua绑定写入现有的Javascript解释器可能会减少工作量.
如果你想玩一个Javascript-> Lua源到源的翻译,请看一下js2lua,这是我创建的玩具项目.它不是完整的,但玩它肯定会让人有所思考.它已经包含了一个Javascript词法分析器,因此已经完成了艰苦的工作.
内容总结
以上是互联网集市为您收集整理的在Lua VM上运行JavaScript是否有意义?全部内容,希望文章能够帮你解决在Lua VM上运行JavaScript是否有意义?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。