非常基本的问题(我认为),但我是这个网络/脚本世界的新手。
我想创建包含动态内容的网页...
如果我有一个HTML页面(HTML5)并想从中调用lua脚本,我该怎么做:
a)调用它? <script type=text/application>
? <script type=text/lua>
?
等等?这一定是基本的,我找不到答案。
b)从中检索数据?或者我可以吗?我可以这样做:
int xx = 0;
<script type=text/lua>
xx = 123;
</script>
当脚本退出时,是否希望xx为123?
c)将当前网页替换为lua脚本生成的内容。
很抱歉有这些补救问题,但非常感谢所有帮助。
:沸点:
答案 0 :(得分:13)
在客户端,您可以使用:
Fengari和Moonshine执行编译的Lua字节码。它们比lua.js更兼容,并且具有比例如更低的代码大小。一个Emscripten编译的Lua解释器。它们可能是最慢的方法,因为它们没有像使用Emscripten编译的Lua解释器那样使用WASM / asm.js,并且它们不会生成随后可能被JIT控制的JavaScript。
我首先尝试使用 Fengari ,因为它似乎最活跃。它比使用WASM的东西更容易JS互操作。
答案 1 :(得分:8)
在WWW上,脚本可以在两个地方运行。
如果您希望它在浏览器中运行,那么您需要支持浏览器内置的语言(或由扩展程序提供)。出于所有实际目的,如果您正在为WWW编写网页,那么您可以在HTML <script>
中使用的唯一语言是JavaScript。
如果要在Web服务器上运行它,则需要让HTTPD运行脚本以响应从其请求的URL。实现这一目标的最简单方法是通过CGI。
使用CGI,HTTPD将运行一个程序(作为一个单独的进程)以响应正在进行的请求。它将通过STDIN和环境变量传递有关请求的各种信息(如the CGI specification中所述)。该脚本然后打印HTTP响应(标题(至少是内容类型)和正文(例如HTML文档))并将其发送到STDOUT,HTTPD将其拾取并将其发送回浏览器。
如何配置服务器以使用CGI运行程序取决于服务器。 Apache has a guide用于他们的服务器。
Lua可能有CGI库,但我不懂语言所以不能提出任何建议。
CGI是一种缓慢且低效的协议(因为它需要为每个请求生成新的进程)。还有其他选择,例如FastCGI和各种语言特定选项。再说一次,我不知道在Lua土地上被认为是最佳的。
答案 2 :(得分:0)
我玩过的大部分CGI和Lua都涉及生成网页和插入动态位,而不是从网页调用脚本。所以更像是原始问题中的选项C.您希望拥有的任何HTML 4或5元素都可以轻松添加到生成的网页中。
以下是一些您可以查看更多详细信息的地方:
CGILua有一些关于如何一起使用CGI和Lua的好信息。
This long forum page在代码和输出方面有一些很好的例子。
Beginning Lua Programming 一书有一整章介绍如何设置和使用CGI和Lua。 (第15章 - 网络编程)
(虽然其中一些地方有点陈旧,但他们仍然很好地展示了如何做这类事情。)
请记住:如果您在服务器端使用cgi或fastcgi,则需要Lua文件的第一行指向Lua解释器所在的位置,例如:
#!/usr/local/bin/lua
答案 3 :(得分:0)
如果您想在浏览器中运行Lua,请考虑使用Lua Alchemy - 用于Flash VM的Lua解释器。
还有一些Lua的JavaScript实现,但是上次我看起来还不够成熟。
如果您想在服务器上运行Lua,请参阅以下答案:What web server to use for Lua web development
答案 4 :(得分:-1)
如果您想从浏览器运行脚本,请考虑使用javascript。
它与Lua非常相似,与Lua不同,它被大多数浏览器解释。
答案 5 :(得分:-1)
JavaScript用于编写网络脚本。
但是有一个JavaScript库&#34; Starlight&#34;,它实现了Lua,以下是你的工作方式:
<!DOCTYPE html>
<html>
<body>
<!WARNING! These will only work if you load the starlight library later>
<script type="application/lua">
print('Hello world')
</script>
<!Here we load the library for 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>