次のプロジェクトのために新鮮なアイデアを求めてインターネットを旅して、偶然偶然に出会った-革命的な、私には、Webアプリケーションの開発へのアプローチを根本的に変えるpythonフレームワーク。 ハブに関するレビューはまだ行われていないようです。修正する時が来ました。
それで、そもそもWebアプリケーション開発者が直面する困難は何ですか:
- ページをロードするたびにデータを保存する必要性
- ユーザーがURL、GET / POSTリクエストを介して送信したデータの処理と保存
- 有効なHTML / XMLを生成します(たとえば、タグを正しく閉じます)
- クライアント側コード(JS / Ajax)とサーバー側コードの統合
- ...そして、多くの異なるもの
これからわかるように、Nagareを使用すると、これらの問題を非常にシンプルでエレガントな方法で解決できます。 すぐにこの投稿を予約します。これは、短いコースの流しではなく、Webプログラミングに対する興味深い新鮮なアプローチを説明するためのものです。 パイロットとタンカーは
ドキュメントを読む必要があり
ます 。幸いなことに、すべてがそこに明確であり、言葉なしですべてが書かれています。
関数型プログラミングには、継続などがあります。 要するに、関数型言語を使用すると、プログラマはいつでもプログラムのインスタント「スナップショット」を取得して変数に入れることができます。 次に、このスナップショットを呼び出すことができ、プログラムはそれが取られたのと同じ場所から続行します(1つの例外を除き、スナップショットを取った関数の戻り値は異なります)。 このトリックにより、詳細な分析に数時間/数日/数年を費やした後、その美しさに驚かされる非常に不可解なアルゴリズムを構築できます。 しかし、私たちは今それについて話していません。 同じトリックにより、Nagare開発者はWebアプリケーションの「セッションの性質」から離れることができました。 Nagareに基づいて構築されたアプリケーションは、通常のアプリケーションとほとんど変わりません。ユーザーによるページの読み込みに関連する中断は、「拡張」を通じて機能するフレームワークによって透過的に「マスク」されます。 データの保存について心配する必要はありません。変数(またはオブジェクトのフィールド)に値を割り当てるだけで、ユーザーセッションが存在する限り保持されます。 単独で。 たとえば、ユーザーが認証に合格したら、次のように書くだけです。
AuthOk = True
そしてチェック:
AuthOKの場合:
.......
利益? 利益! しかし、それだけではありません。 開発者がURLを知って覚える必要があるのはなぜですか? ユーザーにテキストへのリンクを提供し、ユーザーがそれをクリックすると、必要なテキストを表示する必要があります。 Nagareでは、これは次のように行われます。
h << ha( "これはリンクです")action(my_link_action)
この行は、いくつかの(まあ、誰が気にしますか?)URLを含むリンクを生成します。クリックすると、プロシージャmy_link_action()が呼び出され、以前に定義されます。 この手順では、ページの生成に基づいて変数を変更できます。 入力フォームを作成する必要がある場合、ながれでも特別な努力なしでこれを行うことができます。
with h.form()。action(f_act1):
h << h.input(type = "text"、value = "")。action(set_val1)
h << h.input(type = "text"、value = "")。action(set_val2)
h << h.input(type = "submit"、value = "Send!")。アクション(s_act1)
ユーザーは、2つのフィールド(違いは何ですか?名前の属性は何ですか?)と送信ボタンのあるフォームを受け取ります。 (「blablabla」および「hehehe」フィールドに入力して)ボタンを押した後、set_val1(「blablabla」)、set_val2(「hehehe」)、f_act1()、およびs_act1()が呼び出されます。 それだけです 入力したデータは、必要な処理を実行します。 タスクを簡素化することもできます-入力ごとに個別の関数を作成する必要はありません。 プログラマーは怠け者であり、彼にはそれに対する権利があります-彼の作業時間は高価です。 Nagareにフィールド値を変数に直接入力させてください! これは次のように行われます。
v1 = var.Var( "")
v2 = var.Var( "")
with h.form()。action(f_act1):
h << h.input(type = "text"、value = "")。action(lambda v:v1(v))
h << h.input(type = "text"、value = "")。action(lambda v:v2(v))
h << h.input(type = "submit"、value = "Send!")。アクション(s_act1)
出来上がり-v1()は「blablabla」を返し、v2()-「hehehe」を返します!
ところで、私たちはなんらかのHTMLを作成しなかったことに気づきましたか? なぜこれが必要なのですか? HTMLデザイナーに書かせてください、彼らは彼にこれのためにお金を払います。 はい、まだタグを閉じます。 ながれは、プログラマーをこの退屈な義務から解放します。 たとえば、テーブルを作成します。
h.tableを使用:
h.trの場合:
h.tdを使用:
h << "111"
h.tdを使用:
h << "222"
h.trの場合:
h.tdを使用:
h << "333"
h.tdを使用:
h << "444"
きれいですか? あなたはまだブロックのインデントでPythonに遭遇しますか? それだけです!
では、他に何が残っているのでしょうか? アヤックス? あなたとAjax。 ところで、なぜプログラマーはそこにある種のAjaxについて知る必要があるのでしょうか? プログラムのロジックは変更されません。Ajaxが存在するかどうかは変わりません。 同じフィールド、リンク、ページ、ブロック、コンテンツなど。それらは全体ではなく部分的に更新されます。 プログラマーはそこで更新される前に何を気にしますか? NagareのAjaxでのプロジェクトの翻訳は次のように行われます。
プログラムの一か所で
xhtml.Renderer(h)
に置き換える
xhtml.AsyncRendrer(h)
...そして、どこにでもAjaxがあります! 気に入らない人は誰でも再び消すことができます。
動的翻訳python-> javascript、テンプレート、コンポーネントモデル、データベース(sqlalchrmy / elixir経由)など、まだ多くのチップがあります。 これはすべて
サイトで見つけることができます。 例もあります。 一般的に-どういたしまして!
PSもちろん、落とし穴があります。 たとえば、スタックレスpythonをインストールする必要があります。 しかし、私を信じて-このフレームワークは価値があります! コメントでは、もしあれば、質問をすることができます。 私は流の特別な第一人者ではありませんが、私は彼女とたくさん遊んだ。