2016-04-11 13 views
2

aşağıdaki proje yapısını (kısaca geçilmiştir ilgisiz dosyaları) vardır:Her html dosyam için ExpressJS app.get() eklenmesini nasıl önleyebilirim?

- 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 

Sorun angularjs yönlendirme için bir templateUrl olarak bir html dosyası kullandığınızda, ben 'GET olamaz/yol/edinmektir /someFile.html 'hatası.

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

mu kullandığım her html dosyası için benim server.js dosyasında aşağıdaki kod yığın eklemek zorunda demek?

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

Bu büyük bir acı gibi görünüyor. Şu anda sahip olduğum her css ve js dosyası için bunu yapmak zorundayım. Ben bunları birleştirmek için gulp kullanabilirsiniz, bu yüzden sadece bir css ve bir js dosyası için bir app.get sahip olmak zorunda, ama html dosyaları için bunu yapamam.

Bunu işlemenin daha iyi bir yolu var mı? Her html dosyası için bir açısal rota VE ekspres bir rota olması çok mantıklı değil.

cevap

3

Kolayca Express ile statik dosyaları hizmet edebilir:

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

kullanabileceğiniz belirli bir yola bir dizin hizmet etmek: Bu yolu çözmek ve sayfaları hizmet edecek

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

.

Yalnızca belirli sayfalara hizmet vermek istiyorsanız (örneğin, görünümler) Hepsini bir dizine koymanızı ve yalnızca dizini statik olarak sunmanızı öneririm.

Ayrıca bkz .: Express API