2012-04-08 9 views
1

Ich arbeite derzeit mit dem Express-Framework für Node.js und habe Probleme, Stylesheets und Javascript-Dateien pro Seite (Route) zu integrieren. Ich bin mit dem Standard-Express-Setup mit Routen/index.js-Datei mit folgendem Inhalt:Express (Node.js) - CSS- und JS-Dateien bedingt einbeziehen

exports.index = function(req, res){ 
    res.render('index', { title: 'Index Page Test' }) 
}; 
exports.browse = function(req, res){ 
    res.render('browse', { title: 'Browse Page Test' }) 
}; 

Die Routen oben funktioniert gut und es lädt index.jade und browse.jade in den „Körper“ von layout.jade wie erwartet. Die Assets (CSS- und JS-Dateien), die für die Indexroute erforderlich sind, entsprechen jedoch nicht den Anforderungen der Browse-Route. Ist es mir möglich, ein Array an die layout.jade-Vorlage zu übergeben, die die erforderlichen Assets enthält, und es einfach zu loopen?

ich versucht, die oben zu tun über:

Index.js (Route)

scripts: [ 
    'javascripts/jquery.js', 
    'javascripts/easel.js', 
    'javascripts/script.js' 
] 

Gefolgt von:

Layout.jade

each js in scripts 
     script(src= js) 

jedoch es wirft einfach einen Fehler, der "scr sagt Zeilenumbruch ist nicht definiert. " Ich bin mir ziemlich sicher, dass ich das nicht richtig mache. Außerdem stolperte ich noch eine ähnliche StackOverflow-Frage hier: Node.js with Express: Importing client-side javascript using script tags in Jade views? Aber ich bin nicht so scharf auf die dort gezeigte Methode (es erfordert einen zusätzlichen Helfer). Wenn es möglich ist, möchte ich bei den Funktionen bleiben, die von der Vorlagen-Engine selbst bereitgestellt werden.

Danke.

EDIT: Wenn es hilft, ich versuche, etwas Ähnliches wie dieses Ziel zu erreichen:

res.render('index', { title: 'Index Page Test', scripts: scripts}) 

Antwort

2

Versuchen Sie, die Skripte Array auf die Ansichten wie diese passieren.

Es wird als lokale Variable in Ihrer Jade-Vorlage als Skripte verfügbar.

+0

Sorry, wenn ich mich nicht klar gemacht habe, aber ich habe diese Methode bereits ausprobiert und es wirft nur einen Fehler "Skripts ist nicht definiert". – MrSaints

+1

Dann müssen Sie eindeutig etwas falsch machen :) Ich habe es versucht und es funktionierte für mich – mihai

+0

Welche Version von Express verwenden Sie? In Ihrem Beispiel scheint es, dass Skripte Teil eines Objekts sind. Können Sie den vollständigen Code posten? – mihai

2
+0

Super! Es funktioniert jetzt. Gibt es eine Möglichkeit, das "scripts" -Array auf verschiedenen Routen zu ändern? – MrSaints

+1

Verwenden Sie so etwas wie Supervisor, um Ihre Knotenanwendung automatisch neu zu starten. – Exploit

+0

dynamische Helfer ist in Express 3 verschwunden: https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x – Petrogad