What is it?
local js = require "js" local window = js.global window:alert("Hello from Fengari!")
local js = require "js" local window = js.global local document = window.document print("Document's title: " .. document.title)
Lua in the browser means you can use coroutines to write beautiful asynchronous code:
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)()
Test it out!
The easiest way to get started with Fengari in the browser is to use fengari-web. This module will watch the DOM for any <script type="application/lua" src="..."> and run them with Fengari.
$ curl -L -O https://github.com/fengari-lua/fengari-web/releases/download/v0.1.4/fengari-web.js
Include it in your webpage:
Now any script of type application/lua will be run by fengari:
<script type="application/lua"> print("hello world!") </script> <script src="/my-script.lua" type="application/lua" async></script>
Fengari is spread across several repositories:
- fengari: the core, largely a port of the PUC-Rio C implementation of Lua
- fengari-node-cli: Lua CLI but running on top of Node.js
- fengari-loader: to bundle lua code as part of a webpack build process