在瀏覽器中使用Lua語言:Fengari

banq發表於2022-02-20

Fengari(希臘文中的Moon)是用 JavaScript 編寫的 Lua VM。它使用 JavaScript 的垃圾收集器,因此與 DOM 的互操作性是無洩漏的。
在瀏覽器中使用 Lua 意味著您可以使用協程編寫漂亮的非同步程式碼:

local js = require "js"
local window = js.global

local function sleep(delay)
    local co = assert(coroutine.running(), "Should be run in a coroutine")

    window:setTimeout(function()
        assert(coroutine.resume(co))
    end, delay*1000)

    coroutine.yield()
end

coroutine.wrap(function()
    print "Going to sleep now..."

    sleep(3)

    print "Sleep well?"
end)()


 
步驟:
在瀏覽器中開始使用 Fengari 的最簡單方法是使用fengari-web。該模組將監視 DOM 中的任何<script type="application/lua" src="...">並使用 Fengari 執行它們。
  • 下載 fengari-web:


$ curl -L -O https://github.com/fengari-lua/fengari-web/releases/download/v0.1.4/fengari-web.js

  • 將其包含在您的網頁中:


<script src="fengari-web.js" type="text/javascript"></script>

  • 現在任何application/lua型別的指令碼都將由 fengari 執行:


<script type="application/lua">
print("hello world!")
</script>

<script src="/my-script.lua" type="application/lua" async></script>


點選標題更多

相關文章