2014-09-11 20 views
15

Ich habe vor kurzem begonnen, Angular, Node und Express zu verwenden. Ich habe einige funktionierende browserbasierte Anwendungen in Angular erstellt und versuche, sie in Serveranwendungen in Node und Express zu portieren. (Vor allem wird man Daten von Twitter und ein anderes von Wikidot ziehen.)Node, Angular, Express und die View-Engine

Da ich Angular für Dateninjektion und Templating verwende, möchte ich nicht eine andere Ansichts-Engine wie EJS oder Jade verwenden. Ich möchte den HTML/Angular-Code, den ich bereits geschrieben habe, so wenig wie möglich ändern. Ich bin sehr verwirrt, warum Express erfordert, dass ich eine View-Engine habe.

Was ist der einfachste Weg, um diesen Code als Node/Express-Anwendung arbeiten zu lassen?

Antwort

3

Da Sie AngularJS verwenden, denke ich nicht, dass Sie viel Wert auf Express-View-Engine, das ist z. besser, wenn Sie Express zum Rendern von HTML verwenden. Vielleicht verwenden Sie das einfach, um Ihren ursprünglichen HTML-Code (mit Links zu allen .js, .css usw.) in den Browser zu laden (serverseitiges Template-Rendering), der Rest der Arbeit wird mit AngularJS erledigt, die mit dem HTTP von Express kommuniziert Service

einfache Art und Weise für Sie JSON von Express zurückkehren, versuchen Sie diese Funktion http://expressjs.com/api#res.json

Verwenden AngularJS mit Express zu kommunizieren, macht AngularJS die interessanten Dinge auf dem Browser (clientseitige Vorlage Rendering und mehr)

+2

Mit dieser Antwort gehe ich davon aus, dass ich die HTML-Datei direkt aufrufen werde, anstatt Node.js als Vorlage interpretieren zu müssen. Ist das korrekt? Wenn ja, wie verhindere ich, dass Node versucht, es zu interpretieren? –

5

Die Antwort, nach der ich gesucht habe, ist diese Codezeile.

app.engine('html', require('ejs').renderFile); 
+1

aber was ist mit den anderen Dingen, die normalerweise eingestellt werden: ist es notwendig, dies zu verwenden: 'app.set ('Ansichten', ..)'? oder das: 'app.use ('/', express.static ('./ public'));' – sports

+0

Könnten Sie ein bisschen mehr Code posten, um mehr Sinn im Allgemeinen zu machen, da ich die gleiche Frage in meinem Kopf hatte . – KevinOrfas