如何从HTML5脚本/文件/页面调用Lua脚本?
我想创建带有动态内容的网页。我有一个 HTML 页面,我想从中调用 lua 脚本。
如何调用 lua 脚本?
<script type="text/application" >
?<script type="text/lua" >
?从中检索数据?我能做类似于这样的事情吗:
int xx = 0; <script type=text/lua> xx = 123; </script>
并且希望当脚本退出时
xx
将是123
吗?使用 lua 脚本生成的内容替换当前网页的内容。
原文链接 https://stackoverflow.com/questions/6257628
如果您想要从浏览器中运行脚本,请考虑使用 JavaScript。
它与 Lua 非常相似,但不同的是大多数浏览器都可以解释它。
大多数我玩过的 CGI 和 Lua 都涉及生成网页并插入动态部分,而不是从网页调用脚本。所以更像原来问题中的选项 C。任何你想拥有的 HTML 4 或 5 元素都可以轻松地添加到生成的网页中。
以下是一些你可以查看更详细信息的地方:
CGILua 上有一些关于如何结合 CGI 和 Lua 使用的好信息。
这个很长的论坛页面 有一些好的带代码和输出的例子。
Beginning Lua Programming 这本书有一整章教你如何设置和使用 CGI 和 Lua。(第 15 章 - 网络编程)
(虽然这些信息有点过时,但它们仍然很好地展示了如何做这样的事情。)
记住:如果你在服务器端使用 cgi 或 fastcgi,你需要在 Lua 文件的第一行中指向 Lua 解释器的指针,比如:
#!/usr/local/bin/lua
如果你想要在浏览器中运行 Lua,考虑使用 Lua Alchemy — 一个为 Flash VM 设计的 Lua 解释器。
此外,也有几个 JavaScript 实现的 Lua,但上次我查看它们的时候还不够成熟。
如果你想在服务器上运行 Lua,请参考这个答案:选择哪个 Web 服务器进行 Lua Web 开发。
在客户端,你可以使用:
- Fengari, 一个用 JavaScript 编写的 Lua 虚拟机
- WebAssembly 和 wasm_lua
- lua.js 直接将 Lua 编译成 JavaScript。 兼容性较低,但占用空间较小。
- moonshine
Fengari 和 Moonshine 执行编译后的 Lua 字节码。它们的兼容性比 lua.js 更好,占用的代码大小比例如使用 Emscripten 编译的 Lua 解释器要小。它们可能是所有方法中最慢的,因为它们不像使用 Emscripten 编译的标准 Lua 解释器那样使用 WASM/asm.js,它们也不生成随后可以 JIT 的 JavaScript。
我建议首先尝试使用 _Fengari_,因为它看起来最活跃。它比使用 WASM 的东西具有更容易的 JS 交互能力。
Lua 不支持在浏览器中直接运行;JavaScript 是唯一的脚本库。
不过,你可以使用名为 "Starlight" 的 JavaScript 库来实现 Lua。
你可以这样使用它:
<!DOCTYPE html>
<html>
<body>
<!-- 警告!只有在稍后加载 starlight 库时才能起作用 -->
<script type="application/lua">
print('Hello world')
</script>
<!-- 在这里我们加载了 Lua 库 -->
<script src="//cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.34/browser.min.js"></script>
<script src="http://paulcuth.me.uk/starlight/browser-lib/starlight.js" data-run-script-tags></script>
</body>
</html>
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
在 WWW 上,脚本可以运行在两个地方。
如果你想在浏览器中运行它,那么你需要在浏览器中支持该语言(或由扩展程序提供)。实际上,如果你正在为WWW编写网页,那么你只能在HTML
<script>
中使用JavaScript这种语言。如果你想在web服务器上运行它,那么你需要让你的HTTPD(Web服务器)在收到来自它的URL请求时运行脚本。最简单的实现方式是通过CGI。
使用CGI,HTTPD将在请求被发出时以单独的进程运行一个程序。它将通过STDIN和环境变量(如CGI规范中所述)传递有关请求的各种信息。然后,脚本会打印HTTP响应(header(至少包括Content-Type)和body(例如HTML文档)),并将其发送到STDOUT,其中HTTPD会将其捡起并发送回浏览器。
如何配置你的服务器以使用CGI取决于服务器。Apache有一个指南适用于他们的服务器。
Lua可能有一些CGI库,但我不懂这种语言,所以无法做出任何建议。
CGI是一个缓慢和低效的协议(因为它需要为每个请求生成新的进程)。有替代方案,例如FastCGI和各种特定于语言的选项。同样,我不知道在Lua领域中什么是最优的。