2013-05-07 7 views
5

Normalerweise muss ich bei der Verwendung von EJS-Vorlagen mit Express den Server nicht neu starten, um die Änderungen zu sehen, die ich an einer Vorlage vorgenommen habe. Ich ändere einfach eine .ejs-Datei und lade den Browser neu, um meine Änderungen zu sehen.Warum muss ich den Express-Server neu starten, wenn ich eine Swig-Vorlage ändere?

Allerdings, mit Swig-Vorlagen (die ich sehr über ejs bevorzuge), wenn ich eine Änderung an einer HTML-Datei, muss ich den Server neu starten, um meine Änderungen im Browser widergespiegelt zu sehen.

Ist das ein Fehler oder nur ein Nebeneffekt von etwas anderem, das ich übersehen habe?

Ich bin nicht auf der Suche nach einem Tool wie Grunt Watch, Nodemon oder Supervisor, ich möchte nur meine Swig-Vorlagen mehr wie EJS-Vorlagen, wenn möglich zu verhalten.

Antwort

0

Im Allgemeinen gibt es zwei Schritte zu Vorlagen. der erste ist "compiling", wo die Vorlage in eine Funktion umgewandelt wird, dann gibt es "rendering", wobei die Funktion nur mit lokalen Variablen ausgeführt wird.

Für ejs und die meisten Templatsysteme wird das Kompilieren bei jeder Anfrage während der Entwicklung durchgeführt. Mit swig wird der Kompilierungsschritt jedoch wahrscheinlich immer zwischengespeichert, obwohl express sagt "NICHT CACHE WENN NICHT IN PRODUKTION", so dass sich die "Funktion" erst ändert, wenn Sie neu starten.

Lösung? Fragen Sie swig, sagen Sie ihnen zu aktivieren/deaktivieren Caching in https://github.com/visionmedia/consolidate.js

7

Wie in der Swig API Documentation erläutert, können Sie Swig konfigurieren, keine Vorlagen zu cachen.

ich etwas ähnliches dies:

swig.init({ 
    .. 
    cache : app.get('env') === 'production', 
    .. 
}); 

Dies wird es nur Cache kompilierten Vorlagen in der Produktionsumgebung machen.

+1

Die Suche nach Antworten zu SO ist schneller als das Lesen des Handbuchs. SO Antworten erscheinen auch höher bei Google-Suche als ... alles andere. – Mikhail

+0

Und wo genau setzen Sie das? – Squirrl

+1

@Squirrl wieder, [siehe das Handbuch] (http://paularmstrong.github.io/swig/docs/#express). Wie ich jedoch bemerke, hat sich die Swig-API geändert, '.init' scheint nun [' .setDefaults'] (http://paularmstrong.github.io/swig/docs/api/#setDefaults) aufgerufen zu werden. – robertklep

Verwandte Themen