hello.luanというファイルを作成し、以下を含めます:
%>
Hello World
<%
これを実行するには、コマンドラインでluan hello.luanと入力します。これによりHello Worldが表示されます。
ここでの構文はJSPに基づいています。少し変更してみましょう:
local name = "Bob"
%>
Hello <%= name %>
<%
これによりHello Bobが表示されます。次に、より一般的なアプローチを試してみましょう:
local Io = require "luan:Io.luan"
local print = Io.print
print("Hello World")
Luanでは、1つの文字列引数を持つ関数呼び出しには括弧が必要ありません。したがって、print("Hello World")はprint "Hello World"と同じであり、require "luan:Io.luan"はrequire("luan:Io.luan")と同じです。requireとprintはどちらも関数です。
require関数はURIを引数として取ります。URIの例としてはluan:Io.luanやfile:hello.luanがあります。requireはモジュールをインポートするために使用され、require関数呼び出しから返されます。上記の例では、モジュールをローカル変数Ioに割り当てます。関数printはこのモジュールのメンバーです。Io.print("Hello World")とすることもできますが、代わりにprintをローカル変数に割り当てて、その変数を使用して関数を呼び出します。
Luanはrequireという1つの定義済み関数から始まります。必要なものをインポートするためにrequireを使用します。これは少し手間がかかりますが、各ファイルで各関数がどこから来ているのかを明確にします。
もっと凝ったバージョンを作ってみましょう:
local Io = require "luan:Io.luan"
local print = Io.print
local function hello(name)
print("Hello "..name)
end
hello("Bob")
..演算子は連結を行います。これによりHello Bobが表示されます。
次に、ウェブページを作成しましょう。まず、ウェブサイト用のディレクトリが必要です。srcというディレクトリを作成します。このディレクトリにhi.html.luanというファイルを作成し、以下を含めます:
local Io = require "luan:Io.luan"
local Http = require "luan:http/Http.luan"
return function()
Io.stdout = Http.response.text_writer()
%>
<!doctype html>
<html>
<body>
Hello World
</body>
</html>
<%
end
次に親ディレクトリに戻り、luan luan:http/serve.luan srcを実行します。これにより、Luanウェブサーバーがポート8080で実行されます。http://localhost:8080/にアクセスしてみてください。ディレクトリが表示されます。hi.html.luanをクリックするとソースが表示されますが、.luanを削除してhttp://localhost:8080/hi.htmlにアクセスすると、プログラムが実行され、ウェブページが生成されます。実際、現在見ているページtutorial.htmlはtutorial.html.luanから生成されています。
Luanウェブサーバーは、ファイルが関数を返し、それを呼び出してページを生成することを期待しています。%>...<%形式のコードは、その出力をIo.stdoutに書き込みます。デフォルトでは、これはコマンドラインの標準出力です。したがって、返された関数では通常、Io.stdoutをHTTPレスポンス(ウェブブラウザへの出力)に書き込むtext_writerに設定して開始します。
この例や他の例は例のディレクトリにあります。次にhi2.html.luanを見てみてください。コードを実行するには、URLから.luanを削除することを忘れないでください。
これでウェブサイトを構築し、ウェブに公開したいと思います。独自のドメインを持っている場合は、それをs1.luan.softwareに向けるCNAMEレコードを作成します。ドメインを持っていない場合は、bob.s1.luan.softwareのようなドメインを使用します(*.s1.luan.softwareの形式のもの)。ディレクトリがsrcで、パスワードをsecretとして使用する場合、コマンドラインから次のように実行します:
luan luan:host/push.luan bob.s1.luan.software secret src
形式はluan luan:host/push.luan domain password directoryです。サイトを変更した場合は、再度これを実行するとサイトが更新されます。サイトを削除するには、luan luan:host/delete.luan domain passwordを実行します。
この短いチュートリアルが、Luanを使用してウェブサイトを作成する方法のアイデアを提供できたことを願っています。