2016-04-11 4 views
2

私は、次のプロジェクトの構造(無関係なファイルを簡潔にするため省略)があります。問題は、私はAngularJSルーティングにtemplateUrlとしてhtmlファイルを使用する場合、私は/「GETすることはできません/パスを取得することである各HTMLファイルにExpressJS app.get()を追加しないようにするにはどうすればいいですか?

- app 
    - authentication 
     - authentication.controller.js 
     - authentication.routes.js 
     - authentication.scss 
     - registration.html 
     - user.model.js 
    - app.js 
    - app.scss 
- server 
    - server.controller.js 
    - server.js 
    - server.routes.js 
- views 
    - index.html 

を/someFile.html 'エラーです。

(function() { 
    angular 
     .module('appName', [ 
      'ngMessages', 
      'ngResource', 
      'ui.router' 
     ]) 
     .config(function($stateProvider) { 
      $stateProvider 
       .state('registration', { 
        url: '/registration', 
        templateUrl: '/app/authentication/registration.html', 
        controller: 'AuthenticationController' 
       }); 
     }); 
})(); 

それは私が、私が使用してすべてのhtmlファイルのための私のserver.jsファイルに次のコードチャンクを追加する必要がありますということですか?

app.get('/app/authentication/registration.html', function(request, response) { 
    response.sendFile(path.resolve('app/authentication/registration.html')); 
}); 

これは巨大な痛みのようです。私は現在、私が持っている各CSSとjsファイルについてもそれを行う必要があります。私はgulpを使ってそれらを連結することができたので、1つのCSSと1つのjsファイルに対してapp.getを持たせるだけでしたが、htmlファイルではできません。

これを処理するより良い方法はありますか?角度のあるルートと各htmlファイルの高速ルートを持つことはあまり意味がありません。

答えて

3

あなたは簡単Expressで静的ファイルを提供することができます

app.use(express.static('views')); 
// http://localhost/ -> views/index.html 

あなたが使用することができ、特定のパスにディレクトリを提供するために:

app.use('/app', express.static('app')); 
// http://localhost/app/authentication/registration.html 
//  -> app/authentication/registration.html 

これは、パスを解決し、ページを提供します。

特定のページ(ビューなど)のみを配信したい場合は、すべてを1つのディレクトリに配置し、そのディレクトリを静的に配信することをおすすめします。

も参照してください。Express API

関連する問題