食べて、急行の基礎を理解しに行くこと.js


あなたが今まで座ってレストランを訪問した場合は、エクスプレスの基本を理解することができます.しかし、あなたが最初のノードを構築し始めているならば.JSバックエンド.
あなたがJavaScriptで過去の経験があるならば、それは確かにノードを学ぶのがより簡単です.しかし、バックエンドを構築しながら直面する課題は、フロントエンドのJavaScriptを使用しているときに直面しているものとは全く異なります.
私がノードを学んだとき、私は難しい方法を選びました.私は最終的に私がなぜ私がやっていたことを理解するまで、私は電子ブック、チュートリアル、およびビデオを何度も勉強しました.
簡単な方法があります.私はあなたの最初のエクスプレスアプリの4つの重要な部分を説明するためにレストラン類推を使用するつもりです.Express.jsはあなたのコードを組織するための人気のフレームワークです、そして、私はどんな初心者のためにでもそれを推薦します.もっと詳しく説明します.
ここで私たちがカバーする4つの主要部品です
  • 要求文
  • ミドルウェア
  • ルート設定
  • アプリ.listen ()/サーバの起動
    このアナロジーでは、あなたは一般的なマネージャーを雇うために探しているレストランのオーナーです-すべてのプロセスを作成し、それがスムーズに実行し、顧客が幸せになるように場所を管理する人.
    次は次のようなプレビューです.

    最後には、基本的なエクスプレスアプリケーションのすべての部分の機能を理解します.

    Step 1 :マネージャを雇う(必須文)
    この例では、あなたはレストランのオーナーです.そして、あなたの新しいレストランの日々の操作を実行する専門家を雇う必要があります.あなたは確かに専門家ではありません、そして、あなたは把握するためにウェイトスタッフと台所にそれを任せることができません.
    あなたが効率的で安全なレストランを走らせたいならば、あなたはスタッフが最大効率で働くのを保つ必要があります.エクスプレスは新しいマネージャーです.
    最初の部分はかなり簡単です.他のNPMパッケージと同様にNPMにExpressモジュールをインストールし、モジュールをロードするためにrequire文を使用する必要があります.

    他の多くのNPMパッケージとは異なり、この行も使用する必要があります.
    const app = express();
    
    これは、新しいExpressアプリケーションを保持する変数が必要なためです.Expressはノードの既定の部分ではありません.

    Step 2 :レストランでの決断
    ここで一歩戻りましょう.何がレストランで起こるいくつかの一般的なルーチンですか?私の頭にすぐに飛び込む三つがあります.
    256569172座席の新規顧客
  • 食品注文を取っている

  • 食事242479182の終わりにチェックを提示している

  • それぞれのために、あなたができる前に実行する必要がある一連のチェックがあります
    アクションを実行します.たとえば、お客様の前に知っておく必要があります.
  • 彼らはシャツと靴を着ていますか?そうでなければ、
    座った.
  • 彼らがバーに座りたいならば、彼らは21歳です
    州?
  • これはビーチバーではない!同様に、コードでは、
    要求は、彼らが続くことができる前に、特定の基準を持っています.例えば、
    人はあなたのサイトにログインしようとします.
  • 口座はありますか.
  • 彼らは正しいパスワードを入力しましたか?
  • これはミドルウェアのコンセプトが入っているところです.ミドルウェア機能を使用すると、任意の着信要求に対するアクションを取り、応答を送信する前にそれを変更することができます.

    あなたのレストランでは、必要な場合は、着信の人々の席を決める必要があるルールの一連の必要があります.カップルがあなたのドアを通って歩くと言いましょう.あなたは彼らにテーブルを与える前に1つのルールがあります:彼らはシャツと靴を着ているか?

    まず、app.use()から始まります.これは、これらが単に次に来るルートのために適用される必要がある規則であることを意味します.彼らは取得、ポスト、プットまたは削除されていません.
    4行目では、パラメータreq , res , nextを使用して匿名関数を設定します.このコード・ブロックの目的のために、あなたはちょうどそれがシャツと靴を持っているかどうか見るために要求(REQ)を点検しています.
    また、ここでは単に衣服を検証しているので、最後にnext ()関数を使用する必要があります.その後、ルートでは、ゲストが実際のテーブルを取得することができます.
    5行目と6行目に、シャツと靴があるかどうかを確認します.
    そして、7 - 9行目では、両方があるならば、あなたは進行するだけです.
    上のコードブロックは1つの重要なものがありません.これはリクエストに含まれる特定の文字列です.そして、それがパスを欠落しているので、それはすべての単一の要求で実行されます.
    想像できますか.お客様がレストランに入ってきたときには、注文された食べ物を注文しました.それはビジネスから抜け出す簡単な方法だ.

    したがって、上記の例では4行目を変更します.ここで、ユーザーが、/table 'ルートに沿って要求するとき、我々はこのコードを実行するだけです.
    解説


    ステップ3 :共通ルーチンの実行(ルーティング)
    座席の例を続けましょう.これまでのところ、我々は誰かが座っているかどうかを検証する方法を知っている.しかし、我々は実際にテーブルにそれらをリードし、それらを座る方法を知っていない.
    ここはルートが入っているところです.ルートでは、パスに基づいて特定のアクションをスクリプト化できます.オプションは取得、ポスト、プットと削除ですが、我々は今の取得とポストに集中します.
    レストランのコンテキストでは、特定のテーブルを選択し、ゲストの席を選択するためにGETリクエストを作成する必要があります.取得しないデータベースを変更または追加します.これらは特定のパラメータに基づいて情報を取得します.
    この場合、2人のパーティーをする手続きを作成する必要があるとしましょう.ナンバー2はカスタマーリクエストから来ました.

    OK、私が説明する前に:はい、これは最後にメッセージを送るだけです.それは実際には、顧客の席には、特定のテーブルを発見していません.私はオープンテーブルの配列を検索する必要があります.
    第12行では、「テーブル」ルートに沿ってゲストが要求するときにテーブルを見つける手順を定義します.上記のミドルウェアの例と同様に、リクエストとレスポンスのパラメータが利用可能です.また、パラメータ、量があります.これは2例です.
    実際、ライン12の機能宣言の後のすべては、それがユーザー要求を修飾するので、技術的にミドルウェアです.最後に図に表示されます.
    第13行では、リクエストオブジェクトのパラメータからパーティ内の人数をアクセスします.リクエストがユーザーから来たので、それはどこにも宣言されません、そして、我々にはフロントエンドコードがありません.だからここでは、これは本当のアプリだった場合のように要求される可能性があります:
    req = {
      params: {
        amount: 2;
      }
    }
    
    ライン13で、我々の党変数は、要求の範囲内でParamsオブジェクトの量特性にアクセスします.
    最後にライン14では、顧客に返答を送ります.適切なサイズのテーブルを探しています.
    それはすぐにたくさんあります.ダイアグラムです.


    ステップ3.5:あなたのレストランを効率的にする(ルータ)
    今すぐ応答から要求への完全なパスをトレースすることができます.しかし、あなたのアプリケーションのサイズが大きくなると、各ルートごとに規則をコード化する必要はありません.いくつかのルートが同じルールを共有するので、複数のルートに1セットのルールを適用する方法を見つける必要があります.
    座席の面では、いずれかのバーやテーブルでお客様の席をすることができます.それらはシャツ+靴のような一般的な規則を持っています、しかし、バーの座席は、21の党のすべてのメンバーを必要とします.
    そして、お客様には、前菜、メインコース、ディナーを提供するために少し異なる手順を使用する必要があります.しかし、それらの3つのルートには、同様に多くの共通点があります.
    これはルータが入るところです.ルータは、一般的なルールを作成することができますあなたのルートをグループ化することができます.

    これらのケースをカバーするミドルウェアを作成する必要があります.上記のコードを上書きするので、今のところ座っているケースをカバーします.
    以下は完全なコードスニペットです.

    私は個別に各部分をカバーするつもりです.
    4行目では、ルータを宣言します.
    6行目と14行目では、現在の設定はルータです.appの代わりにuse ()を使用します.use ()は、このミドルウェアがルータルートに関連していることを示します.
    最後に、Line 21では、すべてのSeatingRouterルートが「/座席」から始まることを示すミドルウェアを追加します.それで、誰かがバーで席を要求するならば、フルパスは「/座席/バー」ですこれは、4行目にルータを作成するときにパスが定義されることを期待しているかもしれません.それは正常です!
    図では以下のようになります.

    そして、GETルートを加えるとき、あなたはルータにルートを割り当てる最後の声明の上に行きます.


    ステップ4:ビジネス(港)のための開業
    OK、最後の部分.これまでのところ、あなたはマネージャーを雇って、顧客の要求を受け入れる前に何をすべきかを定義して、彼らが入ってくると、特定の顧客の要求をどうするかを決めました.今、あなたはちょうどこれが起こる場所のアドレスを決定する必要があります.
    お客様のサーバーには、レストラン自体のアドレスのようなものがあります.あなたのサーバーは、多くの種類のレストラン(またはサーバー側スクリプト)を一度に扱うことができますので、各スクリプトが実行する場所にそれを指示する必要があります.

    上の例では、ポートは3000で、コンピュータ上にあります.次のように入力します.
    http://localhost:3000/
    お使いのブラウザには、あなたのノードのアプリを実行しているサーバーは、特定のスクリプトを実行する知っている.この場合、URLを入力するとすぐに、コンソールにメッセージを記録し、* * * *のいずれかを使用することができます.レストラン自体があなたの全体のアプリであれば、それは現在住所3000でビジネスのために開いています.