2016-07-20 4 views
5

Ich bin mit Express und EJS zu projizieren, eine Website zu bauen und ich eine Verzeichnisstruktur somthing haben wie:EJS Include-Datei relativ root

+--www/ 
    | 
    +--partials/ 
    | | 
    | +--header.ejs 
    | +--(a bunch of ejs files) 
    | 
    +--guide 
    | | 
    | +--index.html 
    | +--(other files) 
    | 
    +--index.html 

In beiden der index.html Dateien in meinem Beispiel gezeigt, die <% include ... %> Der Befehl wäre anders, selbst wenn auf die gleiche Datei verwiesen würde.

Auch wenn ich sagen würde gehören header.ejs und dann header.ejs hat eine Aufnahme für eine andere teilweise, bricht das ganze System, weil sie alle nach Dateien an verschiedenen Orten suchen.

Um Management einfacher, ich versuche eine einzelne Zeichenfolge zu finden, die gleichen Dateien enthalten, unabhängig davon, verweisen zu können, welche Unterverzeichnis der Dateien in sein kann.

Ideal perfekt so etwas wie <% include /partials/header.ejs %> wäre . Aber das funktioniert nicht.

Hat jemand irgendwelche Tricks oder Ratschläge, die hier zum gewünschten Ergebnis führen könnten?

+0

Haben Sie irgendeine Lösung dafür gefunden? Ich versuche, Dateien in verschiedenen Ordnern zu referenzieren, und ich denke, es ist das gleiche Problem. – illcrx

+0

hat meine Lösung für Sie funktioniert? https://stackoverflow.com/questions/38487980/ejs-include-file-relative-to-project-root/44534998#44534998 – karthikdivi

Antwort

0

Sieht aus wie dies von EJS nicht unterstützt wird, jedoch habe ich eine Umgehungsmöglichkeit für dieses Problem gefunden. In der oben genannten Einrichtung der Schmerzpunkt ist für alle Teildateien müssen Sie die relativen Pfade erwähnen und wenn Sie Code umgestalten, die mehr Schmerzen wird. Also erwähne ich den relativen Pfad bei jedem Include und deklariere einmal eine Variable rootPath, und da gebe ich den Weg nach Hause. So kann ich bei jedem Include den relativen Pfad einfach wie den Pfad von der Wurzel angeben.

Zum Beispiel in guide/index.ejs i die folgenden in der Oberseite der ejs erwähnen

<% var rootPath = '../'; %>

Datei und und Code in EJS-Datei sieht aus wie unten

<%- include(rootPath + 'partials/header'); %>

Ihre HTML-Code

<%- include(rootPath + 'partials/footer'); %>

Also falls ich index.ejs zu einem anderen Ordner umgestalten, muss ich nur den Wert von rootPath

ändern