2017-08-23 2 views
0

Ich bin Anfänger in Angular. Ich habe einen Nodejs Server und ich habe Angular für das Frontend. Jetzt würde ich gerne wissen, ob es möglich ist, nur einen Server für beide zu haben? Da in einigen Videos von youtube, hatten sie einen Server für Knoten und einen Server für eckig.Angular in einem NodeJs Server

Danke, bye

Antwort

0

Auf einer grundlegenden Ebene müssten Sie den statischen Pfad für Ihre gebauten, statischen Angular-Dateien festlegen und wenn Sie Angular Routing verwenden, möchten Sie wahrscheinlich alle Anfragen an Ihre index.html des Angular-Projekts richten, so dass Angular kann alle clientseitige Routen verwalten.

Beispiel: Festlegen des statischen Pfads für ein erstelltes Angular CLI-Projekt, das sich im Standardordner public befindet, der von Express-Generator erstellt wurde. In diesem Beispiel wird dist als Standardziel des Angular CLI-Projekts verwendet, wenn Sie ng build ausführen.

app.use(express.static(path.join(__dirname, 'public', 'dist'))); 

Catch-all Weg, alle Anfragen zu lenken nicht von der Express-Anwendung Route Definitionen gefangen, wie RESTful Routen Rückkehr JSON-Daten oder ähnliches, um das Schrägprojekt index.html:

// some routes 
var users = require('./routes/users'); 
app.use('/users', users); 

// other routes 
var todos = require('./routes/todos'); 
app.use('/todos', todos); 

// catch-all route 
// needs to go AFTER all other express server route definitions 
app.use('*', (req, res) => res.sendFile(path.join(__dirname, 'public', 'dist', 'index.html'))); 

Wenn Angular mit CLI, während der Entwicklung können Sie die Projekte separat unter Verwendung einer proxy ausführen.

Hoffentlich hilft das!

0

Ja, es ist möglich, dass beide einen Server zu haben.

Sie können Ihre AngularJS Dateien über Ihren Lieblings-HTTP-Server (z express) auf Ihrem NodeJS Server als statische Dateien wie so dienen:

app.use(express.static(path.join(__dirname, 'client'))) 

Wo client ist das Verzeichnis, Front-End-Inhalt enthält.