ホームページ  >  記事  >  ウェブフロントエンド  >  Perl 6 の Bailador Web フレームワーク (概要)_html/css_WEB-ITnose

Perl 6 の Bailador Web フレームワーク (概要)_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-21 08:49:191225ブラウズ

Bailador を開始します

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 を使用します

Bailador はまだ GET パラメータを処理できないため、このために 2 つのルートを作成する必要があります。

# 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 アプリケーション

テンプレート

次のテンプレートでは、データを変数 $h に受け取り、この変数を使用してバージョン番号と現在の時間 - エポックからの秒数。 bailador/code_in_module/views/index.tt

% 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 ファイルがロードされます。

画像

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。