如何从HTML5脚本/文件/页面调用Lua脚本?

我想创建带有动态内容的网页。我有一个 HTML 页面,我想从中调用 lua 脚本。

  1. 如何调用 lua 脚本?

    <script type="text/application" >

    <script type="text/lua" >

  2. 从中检索数据?我能做类似于这样的事情吗:

    int xx = 0;
    <script type=text/lua>
       xx = 123;
    </script>
    

    并且希望当脚本退出时 xx 将是 123 吗?

  3. 使用 lua 脚本生成的内容替换当前网页的内容。

原文链接 https://stackoverflow.com/questions/6257628

点赞
stackoverflow用户19068
stackoverflow用户19068

在 WWW 上,脚本可以运行在两个地方。

  1. 在web浏览器中
  2. 在web服务器上

如果你想在浏览器中运行它,那么你需要在浏览器中支持该语言(或由扩展程序提供)。实际上,如果你正在为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领域中什么是最优的。

2011-06-06 20:33:10
stackoverflow用户312586
stackoverflow用户312586

如果您想要从浏览器中运行脚本,请考虑使用 JavaScript。

它与 Lua 非常相似,但不同的是大多数浏览器都可以解释它。

2011-06-06 20:59:33
stackoverflow用户531085
stackoverflow用户531085

大多数我玩过的 CGI 和 Lua 都涉及生成网页并插入动态部分,而不是从网页调用脚本。所以更像原来问题中的选项 C。任何你想拥有的 HTML 4 或 5 元素都可以轻松地添加到生成的网页中。

以下是一些你可以查看更详细信息的地方:

CGILua 上有一些关于如何结合 CGI 和 Lua 使用的好信息。

这个很长的论坛页面 有一些好的带代码和输出的例子。

Beginning Lua Programming 这本书有一整章教你如何设置和使用 CGI 和 Lua。(第 15 章 - 网络编程)

(虽然这些信息有点过时,但它们仍然很好地展示了如何做这样的事情。)

记住:如果你在服务器端使用 cgi 或 fastcgi,你需要在 Lua 文件的第一行中指向 Lua 解释器的指针,比如:

#!/usr/local/bin/lua
2011-06-06 22:42:49
stackoverflow用户6236
stackoverflow用户6236

如果你想要在浏览器中运行 Lua,考虑使用 Lua Alchemy — 一个为 Flash VM 设计的 Lua 解释器。

此外,也有几个 JavaScript 实现的 Lua,但上次我查看它们的时候还不够成熟。

如果你想在服务器上运行 Lua,请参考这个答案:选择哪个 Web 服务器进行 Lua Web 开发

2011-06-19 02:21:47
stackoverflow用户309483
stackoverflow用户309483

在客户端,你可以使用:

Fengari 和 Moonshine 执行编译后的 Lua 字节码。它们的兼容性比 lua.js 更好,占用的代码大小比例如使用 Emscripten 编译的 Lua 解释器要小。它们可能是所有方法中最慢的,因为它们不像使用 Emscripten 编译的标准 Lua 解释器那样使用 WASM/asm.js,它们也不生成随后可以 JIT 的 JavaScript。

我建议首先尝试使用 _Fengari_,因为它看起来最活跃。它比使用 WASM 的东西具有更容易的 JS 交互能力。

2012-09-09 20:26:15
stackoverflow用户6867064
stackoverflow用户6867064

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>
2016-09-22 21:39:37