2016-05-25 23 views
0

私はこの形式をいくつかのチュートリアルで見ましたが、私はnode.jsを初めて使用しました。ルートを書くために:代わりにnode.jsエクスプレス - ルートをapp.get( 'route'、folder.file)として扱います

app.get('/example', function(request, response){}); 

、私はそれが好きで使用して多くのを見てきました:

app.get('/example', routes.example); 

が、その後「example.js」内のファイルとフォルダの「ルート」を有する

を缶誰かが私にこのように少し説明を与えるかもしれないルートを扱う理由、それはなぜより優れているのか、それを実装上の点でどのように使用しているのでしょうか?

ありがとうございました!

答えて

2

主な違いは、ルートのロジックが定義されている場所です。 2つの選択肢の後者は、ルートの責任を切り離し、コードを読みやすくするために、通常は推奨されます。上記ルー​​ト定義において

app.get('/example', function(req, res) {});

、そのルートのためのロジックは要求が/exampleに対して行われたときに呼び出される関数の内部で定義されています。このように1つのファイルに多くのルートが定義されていると、追跡して読むことが難しくなります。

app.get('/example', routes.example);

このルート定義は、多かれ少なかれ、同じ前のものとどのようにそれを機能です。主な利点は、単一のファイルに多くのルート定義がある場合には、読みやすくなります。

複数のルートファイルを含む./routesディレクトリの場合、これはRouter Middlewareのためです。これの主な利点は、ルートを別々のファイルで定義し、ミドルウェアとしてメインアプリケーションに注入できることです。

express-generatorを使用して新しいExpressアプリを作成し、アプリとそのディレクトリの構造を確認することをおすすめします。これは、Expressアプリのレイアウト方法を奨励する構造です。また、ルーターミドルウェアを適切に使用する方法を説明し、ルートがメインのExpressアプリケーションにどのように注入されるかをよく理解しています。

+0

優秀な説明!私はルータのミドルウェアについて知りませんでした。私はあなたが私に送ったリンクを読むでしょう。どうもありがとうございました ! –

1

2つの唯一の違いは、懸念の分離を強制することです。

開発者の中には、特定のルートに関連するすべてのコードを別のコントローラファイルに保存し、ルータファイルで参照するだけのものがあります。

これにより、バグの原因を迅速かつ簡単に突き止めることができます。また、他の開発者がプロ​​ジェクトの概要を知ることができます。

例:私にルート/fooがある場合、そのルートに必要なすべてのアクションを処理するfooControllerを作成できます。

1

第2の方法では、ルーターミドルウェアは、経路パスに定義されたすべてのコントローラーを規則に従ってロードします。コードは、設定よりも慣習を使ってよりクリーンであまり冗長ではありませんが、機能、性能、または他の点では違いはないと思います。

関連する問題