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を使用してウェブサイトを作成する方法のアイデアを提供できたことを願っています。