web-dev-qa-db-ja.com

Express.jsまたはangular MEANアプリケーションでルートを処理する場合?

私はNodejs/express/angularのすべてにまったく慣れていないので、気になる質問に遭遇しました。

MEANスタックがある場合、ルートはExpress.jsAngularの両方で処理できるようです。

角度

たとえば、Angularでルートを定義すると、次のようになります。

var app = angular.module("app", []).config(function($routeProvider) {
    $routeProvider.when('/login', {
        templateUrl: '/templates/login.html',
        controller: 'LoginController'
    });

    $routeProvider.when('/front', {
        templateUrl: '/templates/front.html',
        controller: 'FrontController'
    });


    $routeProvider.otherwise({redirectTo: '/front'})
});

ただし、express.jsを使用します

app.get('/',function(req,res){
    res.sendfile('templates/angular.html');
});

私の質問は

いつangularルーティングを使用し、いつエクスプレスルーティングを使用しますか?

(私はここで非常に明白な何かを見逃すかもしれませんが、あなたがそれを指摘できることを願っています)

27
Lars Holdgaard

これら2つは、単一ページアプリで異なる目的を果たします。

アプリはすべてのCRUD(プロジェクト、ユーザー、請求書など、コンテンツを作成/読み取り/更新/削除するエンドポイント)を実行します。また、すべての認証処理(/login/registerなど)も実行します。

/api/usersのようなものですべてのユーザーを取得する必要があるため、これらすべてにルートが必要です。これらすべてのルート、別名CRUDルート、および認証ルートは、express.jsルーターに入ります。なぜそこに?それらはバックエンドのルートだからです。

一方、あなたはあなたのangularアプリケーションを持っています、それはあなたのアプリケーションの視覚的な部分を含み、そこにいくつかのルートが必要です。あなたは/があなたの家を指すようにしたいでしょう。 /usersにユーザーを一覧表示するページを作成するか、/users/addに新しいユーザーを追加するためのフォームを含むページを作成する必要があります。

あなたはそれをこのように見ることができます:

バックエンドルート(エクスプレスルート):エンドユーザーがそれらを知る必要がない、または使用する必要がないルートです(angularアプリはそれらを使用してバックエンドと通信し、操作します)そのデータですが、エンドユーザーはそれらをブラウザに直接配置しません))。

フロントエンドルート(角度のあるルート):アプリケーションのさまざまなページにマップされるルートであり、そのため、エンドユーザーはそれらを使用してアプリケーションの一部に直接アクセスできます。

47
Jesus Rodriguez