2016-04-11 1 views
2

Ich habe die folgende Projektstruktur (irrelevante Dateien der Kürze halber weggelassen):Wie kann ich vermeiden, dass ExpressJS app.get() für jede meiner HTML-Dateien hinzugefügt wird?

- 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 

Das Problem ist, dass, wenn ich eine HTML-Datei als templateUrl für AngularJS Routing verwenden, habe ich eine ‚GET/Pfad kann nicht/bekommen /someFile.html Fehler.

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

Heißt das, ich habe folgendes Stück Code in meiner server.js Datei für jede HTML-Datei hinzufügen ich verwenden?

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

Das scheint wie ein großer Schmerz. Ich muss das jetzt auch für jede CSS- und JS-Datei, die ich habe, tun. Ich könnte gulp verwenden, um diese zu verketten, also müsste ich nur eine app.get für eine CSS- und eine js-Datei haben, aber das kann ich nicht für HTML-Dateien tun.

Gibt es einen besseren Weg, damit umzugehen? Es macht wenig Sinn, für jede HTML-Datei eine Winkelroute UND eine Schnellroute zu haben.

Antwort

3

Sie können ganz einfach statische Dateien mit Express dienen:

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

ein Verzeichnis auf einem bestimmten Pfad dienen Sie verwenden können:

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

Dadurch werden die Pfade beheben und die Seiten dienen.

Wenn Sie nur bestimmte Seiten (z. B. Ansichten) bereitstellen möchten, schlage ich vor, Sie alle in einem Verzeichnis zu legen und nur dieses Verzeichnis statisch zu dienen.

Siehe auch: Express API