2016-07-20 4 views
5

Я использую Экспресс и EJS создать сайт и У меня есть каталог структуры Somthing как:EJS включаемый файл относительно проекта Root

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

В обоих index.html файлов, показанных на моем примере <% include ... %> команда будет отличаться, даже если ссылаться на один и тот же включенный файл.

Также, если бы я сказал, включите header.ejs, а затем header.ejs имеет дополнительный элемент для частичной части, вся система разбивается, потому что все они ищут файлы в разных местах.

Чтобы сделать управление проще, я пытаюсь найти одну строку, чтобы иметь возможность ссылаться на тот же включены файлы, независимо от того, что подкаталог файлы могут находиться.

В идеале что-то вроде <% include /partials/header.ejs %> был бы идеальным , Но это не работает.

Есть ли у кого какие-либо трюки или советы, которые могли бы дать желаемый результат здесь?

+0

Вы нашли решение для этого? Я пытаюсь ссылаться на файлы в разных папках, и я думаю, что это та же проблема. – illcrx

+0

мое решение работает для вас? https://stackoverflow.com/questions/38487980/ejs-include-file-relative-to-project-root/44534998#44534998 – karthikdivi

ответ

0

Похоже, что это не поддерживается EJS, однако я нашел обходной путь для этой проблемы. В приведенной выше настройке точка боли предназначена для всех частичных файлов, которые вам нужно упомянуть об относительных путях, и если код рефакторинга становится больнее. Поэтому, говоря об относительном пути в каждом из них, я объявляю переменную rootPath один раз, и там я даю путь, чтобы добраться до дома. Так что при каждом включении я могу просто указать относительный путь, как путь от корня.

Например, в guide/index.ejs я упомянуть следующее в верхней части EJS файл

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

и и код в EJs файл выглядит, как показано ниже

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

Ваш HTML код

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

Так что в случае, если i refactor index.ejs в какую-то другую папку мне нужно сделать, это изменить значение rootPath

Смежные вопросы