急行を理解しましょう.フレームワーク


Node.js has become a reliable and trusted framework for modern web application development, providing a runtime environment that allows the use of JavaScript for both client-side and server-side application code.


この記事では、急行の基本を理解しましょう.JSフレームワークとなぜこのフレームワークを使うべきですか.

エクスプレスは、単一ページ、マルチページ、およびハイブリッドノードを開発するために使用される軽量、バックエンドベースのフレームワークです.JSアプリケーション.Expressは最小限で柔軟なノードです.ウェブおよびモバイルアプリケーションを開発するための機能のロバストなセットを提供するJS Webアプリケーションフレームワーク.これは、MVC(モデルビューコントローラ)アーキテクチャにアプリケーションを整理するのに役立ちます.

Every developer may have heard of an express framework earlier or later during their development phase and maybe using it knowingly or unknowingly while doing their project development life cycle


なぜ私は急行を使用する必要があります。JS ?


Expressは、オープンソースと柔軟なNodeJS Webアプリケーションフレームワーク開発ウェブサイト、Webアプリ、APIを非常にシンプルかつ簡単に設計されています.

You should use this so that you don’t have to repeat the same code over and over again.


ノード.JSはHTTPモジュールを持つ低レベルのI/Oメカニズムです.あなたがちょうどHTTPモジュールを使用するならば、ペイロード、クッキー、セッションを保存すること(メモリの中で、または、redisで)を解析することのような仕事の多くが、正規表現に基づく正しいルート・パターンを選ぶことは再実装されなければなりません.急行で.JS、それはちょうどあなたが使用するためにそこにあります.
いくつかのノードがあります.JSフレームワークは、このExpressフレームワークに基づいて構築された、またはその概念に触発さ.私は参考のために数を書き留めました.
  • クラーケン:構造と慣習を提供することによって明示的に広がる安全でスケーラブルな層.
  • ループバック:高度に拡張可能なオープンソースノード.ダイナミックなエンドツーエンドの休息APIを作成するためのJSフレームワーク.
  • 帆:ノードのMVCフレームワーク.建物実用的な生産準備アプリのためのJS.
  • NESTJSプログレッシブノード効率的でスケーラブルでエンタープライズグレードのサーバーサイドアプリケーションを構築するためのJSフレームワーク
  • iTemsapi:ウェブやモバイルアプリケーションを検索し、FlashSearch上に構築バックエンドを検索します.
  • Kystystjs:ウェブ生成されたAPIとアプリケーションフレームワーク/CMSの自動生成された反応.JS管理のUI.
  • 私たちの最初のハローワールドのアプリを使用して表現を使用してみましょう。以下の5つの単純なステップのJS!


    インストールエクスプレス


    次のようにコマンドをノードパッケージマネージャ(NPM)を使用してExpressフレームワークをインストールすることができます
    npm install express
    

    ステップ2 : import expressモジュール


    サーバと呼ばれるファイルを作成します.JSとインポートエクスプレスモジュールは、次の構文を使用します.
    const express = require(‘express’)
    

    ステップ3 :オブジェクトを作成する


    Expressモジュールの値を保持するオブジェクトを作成します.我々の場合、' app 'はExpressモジュールのオブジェクト保持インスタンスです.
    let app = express();
    

    ステップ4 :コールバック関数を作成する


    上記の手順で作成したオブジェクトを使用してgetコールバック関数を作成します.この関数は、クライアントブラウザが送ることができる2つのparams ' req '要求を受け入れます.
    私たちの場合は、クライアントのブラウザに文字列' hello world 'を返すだけです.
    app.get(‘/‘,function (req, res){
    res.send(“Hello World”);
    });
    

    ステップ5 :クライアント要求を聞く


    このポート番号にクライアントブラウザが衝突するたびに意味するポート3000を聞いてください.
    app.listen(3000, function(){
    });
    
    ハーレイ!私たちはコードを書き終えた!最初のクライアントサーバーアプリケーションを実行します.
    そのためには、まず最初に、我々のサーバーを走らせる必要があるでしょう.そして、それはブラウザからポート3000で打つどんな要請にも耳を傾けるでしょう.
    コマンドプロンプト/ターミナルに移動し、次のコマンドを入力します
    NPMノードサーバ.js
    さて、マシン上のブラウザを開き、http://localhost:3000

    Voila、あなたのブラウザで'こんにちは世界'を見ることができます。


    Expressを使用する顕著な機能。js


    特徴1 :ルーティング


    ルーティングはクライアントのリクエストにどのようにアプリケーションの終点(URI)が応答するかを示します.
    アプリケーションのようなHTTPメソッドに対応するExpressアプリオブジェクトのメソッドを使用してルーティングを定義できます.get requestおよびappを処理するget ().ポストリクエストを処理するポスト.また、アプリケーションを使用することができます.すべてのHTTPメソッドとAPPを処理するalll ().use ()はコールバック関数としてミドルウェアを指定します.
    私たちは下記のミドルウェアについてもっと勉強します.
    これらのルーティングメソッドは、アプリケーションが指定されたルート(エンドポイント)とHTTPメソッドへのリクエストを受信したときに呼び出されるコールバック関数(ハンドラー関数とも呼ばれます)を指定します.

    In other words, the application listens for requests that match the specified route(s) and method(s), and when it detects a match, it calls the specified callback function.


    ルーティングメソッドは引数として複数のコールバック関数を持つことができます.複数のコールバック関数を使用すると、コールバック関数への引数としてnextを提供し、次に関数の本体内でnext ()を呼び出して、次のコールバックに制御を渡すことが重要です.
    var express = require(‘express’)
    var app = express()
    // respond with “Learning Express” when a GET request is made to the homepage
    app.get(‘/’, function (req, res) {
    res.send(‘Learning Express’)
       // Logic
    })
    A route method is derived from one of the HTTP methods and is attached to an instance of the express class.
    // GET method
    app.get(‘/’, function (req, res) {
        res.send(‘You called GET request’)
    })
    // POST method
    app.post(‘/’, function (req, res) {
       res.send(‘You called POST request’)
    })
    
    ルートパスは、リクエストメソッドと組み合わせて、リクエストを行うことができるエンドポイントを定義します.ルートパスは、文字列、文字列パターン、または正規表現です.
    app.get(‘/’, function (req, res) {
       res.send(‘this is default index page’)
    })
    
    さて、例えば、あなたはAboutusページを呼び出したいです
    app.get(‘/aboutUs’, function (req, res) {
        res.send(‘About Us’)
    })
    
    ルートパラメータはURLの位置で指定された値をキャプチャするために使用されるURLセグメントです.取得した値はreqに設定されます.Paramsオブジェクトは、パス内で指定されたルートパラメーターの名前をそれぞれのキーとして指定します.
    例えば、BookIDとUserIDが渡されたときにいくつかの関数を実行したい場合は、次のようにエンドポイントURIを定義することができます
    リクエストURL : http://localhost:3000/users/34/books/8989
    app.get(‘/users/:userId/books/:bookId’, function (req, res) {
       res.send(req.params)
    })
    

    機能2:ミドルウェア


    ミドルウェアは、名前が意味するように、クライアント側のブラウザから送信された生のリクエストと、サーバー側のアプリケーションによって設計された最終的な意図されたルーティングロジックの中間に位置します.それは基本的にどのようにあなたのエクスプレスアプリケーションが動作するように設定できます.ミドルウェア関数は、リクエストオブジェクト(REQ)、レスポンスオブジェクト(RES)、およびアプリケーションの要求応答サイクルで次の関数にアクセスできます.次の関数は、Expressルータで呼び出されたときに、現在のミドルウェアを継承するミドルウェアを実行する関数です.
    ミドルウェア機能は次のタスクを実行できます.
  • コードを実行します.
  • リクエストと応答オブジェクトを変更します.
  • はリクエスト応答サイクルを終了する.
  • スタック内の次のミドルウェアを呼び出します.
  • いくつかの一般的なタスクは、ユーザーのログイン状態のチェック、ユーザー権限の検証、またはミドルウェアとして最も抽出されているクロスサイト攻撃を防ぐことが含まれます.

    If the current middleware function does not end the request-response cycle, it must call next() to pass control to the next middleware function. Otherwise, the request will be left hanging.


    ここでは、Loggerと呼ばれるミドルウェア機能の簡単な例です.この関数は、アプリケーションへのリクエストが通過するとログを出力します.ミドルウェア関数はloggerという変数に割り当てられます.
    ミドルウェア機能をロードするには、Countアプリを呼び出します.use ()は、ミドルウェア関数を指定します.
    たとえば、次のコードは、ルートパス(/)へのルートの前に、ロガーミドルウェア関数を読み込みます
    const express = require(‘express’);
    let app = express()
    let logger = function (req, res, next) {
        console.log(‘Logging’)
        next()
    }
    app.use(logger)
    app.get(‘/’, function (req, res) {
        res.send(‘My home page’)
    })
    app.listen(3000)
    
    アプリケーションが要求を受け取るたびに、それはメッセージを端末にログ出力します.

    The order of middleware loading is important. Middleware functions that are loaded first are also executed first.


    ロガーがルート経路へのルートの後ロードされたなら、リクエストは決してそれに達しません、そして、ルート経路のルートハンドラーが要求応答サイクルを終えるので、アプリケーションは「ログ記録」を印刷しません.
    ミドルウェア関数loggerは単にメッセージを出力し、次にext ()関数を呼び出してスタック内の次のミドルウェア関数にリクエストを渡します.

    You can use third-party middleware to add functionality to Express apps.


    クッキーパーサーと呼ばれるサードパーティ製のクッキー解析ミドルウェア機能のインストールと読み込みを次の例に示します.
    var app = express();
    app.use(cookieParser());
    app.use(bodyParser());
    app.use(logger());
    app.use(authentication());
    app.get(‘/’, function (req, res) {
         // …
    });
    app.listen(3000);
    

    An Express application is essentially Node.js with a host of middleware functions, whether you want to customize your own middleware or take advantage of the built-in middlewares of the framework, Express made the process natural and intuitive.


    機能3:テンプレート


    テンプレートエンジンを使用すると、アプリケーションに静的テンプレートファイルを使用できます.実行時に、テンプレートエンジンはテンプレートファイルの変数を実際の値で置換し、テンプレートをクライアントに送信するHTMLファイルに変換します.
    このアプローチはHTMLページのデザインを容易にします.
    Expressで動作するいくつかの人気のテンプレートエンジンは、パグ、口ひげとEJSです.エクスプレスアプリケーションジェネレータは、デフォルトとして翡翠を使用しても、いくつかの他をサポートしています.
    ビューエンジンが設定された後、あなたはエンジンを指定するか、アプリケーションでテンプレートエンジンモジュールを読み込む必要はありません
    app.set(‘view engine’, ‘pug’)
    
    テンプレートエンジンでは、開発者がバックエンド変数をHTMLファイルに埋め込むことができます.また、要求されたときには、テンプレートファイルは、実際の値で補間された変数をHTML形式でレンダリングされます.

    エラー処理


    他のミドルウェア関数と同じようにエラー処理のミドルウェア関数を定義します.エラー処理関数を除いて、以下の4つの引数を指定します
    app.use(function (err, req, res, next) {
         console.error(err.stack)
         res.status(500).send(‘Something broke!’)
    })
    
    あなたは、他のアプリを定義した後、最後にエラー処理ミドルウェアを定義することができます.use ()およびrouteコール.
    var bodyParser = require(‘body-parser’)
    var methodOverride = require(‘method-override’)
    app.use(bodyParser.urlencoded({
        extended: true
    }))
    app.use(bodyParser.json())
    app.use(methodOverride())
    app.use(function (err, req, res, next) {
        // logic
    })
    
    エクスプレス.JSは開発を簡素化し、安全で、モジュラーで、高速なアプリケーションを書くことをより簡単にします.いつでも、プレーン古いノードですべてを行うことができます.しかし、いくつかのバグは、セキュリティ上の懸念(例えば、文字列を適切にエスケープしない)を含む表面をすることができます.JSは使用される推奨フレームワークです.

    急行を使用するような工夫はありますか。JS ?


    エクスプレスは、最小限の、国連独禁法のフレームワークです.それは、MVC、MVP、MVVMのような一般的なデザインパターンのいずれかを適用しません、あるいは、何でも箱から出ています.シンプルさのファンのために、これはあなた自身の好みと不要な学習曲線を使用してアプリケーションを構築することができますので、これは他のすべてのフレームワークの中で大きなプラスです.これは特に歴史的な負担のない新しい個人プロジェクトを作成するときに有利であるが、プロジェクトや開発チームが成長するにつれて、標準化の欠如はプロジェクト/コード管理のための余分な仕事につながるかもしれない.

    この記事は、どのように、なぜ表現のいくつかの基礎を理解するのに役立ちます。jsは有用です。