2011-06-06 177 views
4

非常基本的问题(我认为),但我是这个Web /脚本世界的新手。如何从HTML5脚本/文件/页面调用Lua脚本

我想创建一个网页动态内容...

如果我有一个HTML页面(HTML5),并希望从中调用一个Lua脚本,我怎么:

一)调用它? <script type=text/application><script type=text/lua>? 等?这一定非常基本,我找不到答案。

b)从中检索数据?或者我可以吗?我可以做些什么: int xx = 0; <script type=text/lua> xx = 123; </script> 并有任何希望脚本退出时xx将为123?

c)用lua脚本生成的内容替换当前网页。

对不起,这些补救的问题,但所有的帮助,不胜感激。

:bp:

+1

除非你能在客户端上运行的Lua浏览器以某种方式,你需要一个服务器来运行Lua,然后用某种Javascript(或仅使用html/css的回发)来操作客户端。 – 2011-06-06 20:29:46

回答

8

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

  1. 在Web浏览器

如果你希望它在浏览器中运行Web服务器,那么你就需要内置到浏览器(或提供由一个扩展的语言支持)。出于所有实际的目的,如果您正在为WWW编写网页,那么您可以在HTML <script>中使用的唯一语言是JavaScript。

如果您想在Web服务器上运行它,那么您需要让HTTPD运行脚本以响应请求的URL。最简单的方法是通过CGI。

对于CGI,HTTPD将运行一个程序(作为一个单独的进程)来响应请求。它将通过STDIN和环境变量传递有关请求的各种信息(如the CGI specification中所述)。脚本然后打印一个HTTP响应(头文件(至少是一个Content-Type)和body(例如一个HTML文档)),并将其发送到STDOUT,HTTPD将其拾取并发送回浏览器。

如何配置服务器以使用CGI运行程序取决于服务器。 Apache has a guide为他们的服务器。

有可能是Lua的CGI库,但我不知道该语言,所以不能提出任何建议。

CGI是一个缓慢而低效的协议(因为它需要为每个请求生成一个新的进程)。还有其他的选择,例如FastCGI和各种语言特定选项。再次,我不知道在Lua地区哪些地方是最佳的。

+0

谢谢大家!快速,清楚,有帮助。 – 2011-06-06 20:47:49

+3

你可以看看[开普勒项目](http://www.keplerproject.org/),这是一个在Lua网站开发的框架(包括一个Lua网络服务器等) – jpjacobs 2011-06-07 12:21:20

1

浏览器无法以您告诉它们的任何语言运行代码。

你必须在Lua中生成整个页面,并使用Lua作为服务器后端,如果你想在Lua中完成所有操作,但浏览器不能运行Lua。

对不起......

0

如果您想从浏览器运行脚本,请考虑使用javascript代替。

它与Lua非常相似,与Lua不同,它被大多数浏览器解释。

0

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

这里有一些地方,你可以检查出更详细的信息:

CGILua对如何使用CGI和Lua一起一些有用的信息。

This long forum page有一些很好的代码和输出示例。

The 开始Lua编程本书有一整章介绍如何设置和使用CGI和Lua。 (第15章 - 为Web编程)

(虽然这些地方都有点过时,他们仍然展示了如何做这样的事情的一个好工作。)

记住:如果你是使用CGI或快速在服务器端,你将需要你的Lua文件的第一行有一个指针到哪里Lua解释是,如:

#!/usr/local/bin/lua 
0

如果你想在浏览器中运行的Lua,可以考虑使用Lua Alchemy - Flash VM的Lua解释器。

还有一些Lua的JavaScript实现,但是他们还没有成熟,上次我看了。

如果你想在服务器上运行的Lua,咨询这样的回答:What web server to use for Lua web development

12

在客户端,你可以使用:

  • WebAssembly(首选的解决方案,但都不如兼容使用Emscripten和JavaScript)
  • Emscripten with JavaScript output将C Lua解释器编译为JavaScript,并允许您使用它。编译为JavaScript时,Lua解释器大约需要1.5 MB。
  • lua.js直接将Lua编译为JavaScript。兼容性较低但占位面积较小。
  • moonshine执行已编译的Lua字节码。它比lua.js更兼容,但仍然比Emscripten的占用空间更小。可能是所有最慢的方法,因为它没有使用经过优化的经过测试的Lua运行时的asm.js,并且它不会生成随后可能被JIT处理过的JavaScript。

我会尝试使用月光第一,如果它不工作,你可以尝试Emscripten。

0

通常情况下,这不是那么简单的一部分...

JavaScript用于编写网页脚本。

幸运的是,有一个解决方案

但是有一个JavaScript库“星光”,它实现的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> 
+0

欢迎来到[SO]!请访问帮助中心,获取[撰写良好答案]的提示(http://stackoverflow.com/help/how-to-answer)。 – dg99 2016-09-22 22:24:16