ホームページ > 記事 > ウェブフロントエンド > Perl 6 の Bailador Web フレームワーク (概要)_html/css_WEB-ITnose
Bailador は、Perl Dancer Web 開発フレームワークのパロディです。インストール方法:
panda install Bailador# orzef install Bailador
スクリプト first.pl を作成しましょう、「hello world」を出力します:
use v6;use Bailador;get '/' => sub { "hello world"}baile;
実行: perl6 first.pl が開始されますポート 3000 でアクセスできる小さな Web サーバー:
$ perl6 first.plEntering the development dance floor: http://0.0.0.0:3000[2016-05-05T12:57:31Z] Started HTTP server.
Bailador では、HTTP リクエスト メソッドとサーバー上のパスを匿名サブルーチンにマップする必要があります。サブルーチンはその内容を返します。この例では、get HTTP リクエストをマップし、文字列 hello world を返す Web サイトのルート パスを伝えます。このプログラムを起動し、ブラウザで http://0.0.0.0:3000/ を開くと、このテキストが表示されます。
他のパスをマッピングすることもできます:
get '/about' => sub { "关于我"}
これは http://0.0.0.0:3000/about URL をマッピングして「about me」を返します。
パスの一部はコロンで始まるプレースホルダーにすることができます:
get '/hello/:name' => sub ($name) { "Hello $name!"};
:name 部分 一致可能スラッシュ / を除く任意の文字列、およびそれに一致する値は、匿名サブルーチンの $name 変数に割り当てられます。
このようなプレースホルダーは複数持つことができ、プレースホルダーの実際の名前は関係ありません。プレースホルダーによって取得された値は、URL に表示される順序で関数パラメーターに割り当てられます。
get '/hello/:first/:family' => sub ($fname, $lname) { "Hello $fname! And hi $lname"};
この例では、:first プレースホルダーがキャプチャしたものは、$fname パラメータに割り当てられます。 by >:family は :$lname に割り当てられます。たとえば、URL http://0.0.0.0:3000/hello/Foo/Bar は次の応答を生成します:
Hello Foo! And hi Bar!もちろん、プレースホルダー名をパラメータ名と同じにすると、コードが読みやすくなります。 2 番目のスクリプトの完全版は次のとおりです。
use v6;use Bailador;get '/' => sub { "hello world"}get '/hello/:first/:family' => sub ($fname, $lname) { "Hello $fname! And hi $lname"};baile;Bailador を使用したテキストのエコー
POST echo を使用します
# echo_post.p6use v6;use Bailador;get '/' => sub { '<form method="POST" action="/echo"><input name="text"><input type="submit"></form>';}post '/echo' => sub { my $text = request.params<text> // ''; my $html = 'You said (in a POST request) '; $html ~= $text; return $html;}baile;
img
POST リクエストを処理するルートを作成する方法を確認できます。
最初のルート
get '/' => { は GET リクエストを送信し、このスクリプト内に含まれる HTML フラグメントを返します。 (わかっています、すぐにテンプレートを使用する予定です) この HTML スニペットには、1 つのテキスト ボックスと送信ボタンを備えたフォームが含まれています。フォームには /echo URL につながる アクション があり、フォームには method="POST" があります。これは、ユーザーが送信ボタンをクリックすると、ブラウザーが POST リクエストを送り返すことを意味します。
2 番目のルートpost '/echo' => sub { は、/echo パスの POST リクエストを処理します。
Bailador が提供するrequest 関数は、Bailador::Request の形式で現在のリクエストを表すオブジェクトを返します。
request 関数にはいくつかのメソッドがあり、そのうちの 1 つは params メソッドで、ハッシュのキーがパラメーターの名前であるハッシュを返します (この例では、text) であり、値は送信された値です。
その値を$text 変数に保存し、ユーザーが指定しない場合は、「//」定義済み論理和演算子を使用して変数の値を空に設定します。あらゆる価値の状況。次に、ユーザーが指定した値を連結して「html」文字列を形成します。最後に文字列を送り返すと、小さなエコー サーバーが動作できるようになります。
img
GET を使用して
use v6;use Bailador;get '/' => sub { '<form method="GET" action="/echo"><input name="text"><input type="submit"></form>';}get '/echo' => sub { return 'You said (in a GET request) ' ~ (request.params<text> // '');}baile;
img
この例では、一時変数
$text と $html は省略されていますが、前の例でも必要ありませんでした。 GET メソッドを使用してリクエストすると、送信後にテキスト フィールドとフィールド値がブラウザの URL アドレス バーに結合されます。
モジュール内の Bailador アプリケーション
% my ($h) = @_;<!DOCTYPE html><html> <head> <title>Bailador App</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> </head> <body> <h1>Bailador App</h1> <div> Version <%= $h<version> %> Current time: <%= $h<date> %> </div> </body></html>Module
unit class Demo;ドメインを持つには- 固有の言語 (DSL)。Bailador をロードしてルートを簡単に定義できるようにします。
use Bailador;最も重要なことは、ルーティングが含まれていることです。
unit class Demo;use Bailador;my $version = '0.01';get '/' => sub { template 'index.tt', { version => $version, date => time }}アプリケーションを開始するスクリプト
use Bailador;Bailador::import();use lib callframe(0).file.IO.dirname ~ '/lib';use Demo;baile;最も興味深いのは、おそらくこのコードです:
use lib callframe(0).file.IO.dirname ~ '/lib';このプロジェクトのルート ディレクトリを計算します - app.pl ファイルがルート ディレクトリにあると仮定して、perl が追加のモジュールを検索する /lib サブディレクトリを追加します。これにより、lib サブディレクトリに Demo.pm ファイルがロードされます。
画像