2011-06-06 119 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