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(co) 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="..." async> and run them with Fengari.
$ git clone https://github.com/fengari-lua/fengari-web.git $ cd fengari-web $ npm install $ npm run build
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