Я экспериментировал и пытался разработать новый движок шаблонов для узла.
Пока он работает нормально, но я столкнулся с проблемой, пытаясь разрешить функцию "include".
Вот как это работает до сих пор:
@{
var title = "My Title";
}
<title>@title</title>
Все это визуализируется в одну строку и выполняется сразу для поддержания контекста.
Строка создана:
'var title = "My Title";output=\`<title>`+title+`</title>`'
Мне это не нравится, но я не могу заставить eval()
работать, передавая переменные из каждой функции.
Проблема: У меня естьinclude function:
@include('/filename.html')
Это работает, если движок берет имя файла, читает его и помещает обратно в строку вывода.Но я не могу передать переменные в функцию следующим образом:
@include(filename + '.html')
Потому что мне нужно выполнить всю страницу, чтобы получить значение filename
.
Я думал о том, чтобы открыть функцию длявыполняемая строка, например:
'</title>'+render(filename + '.html')+'<h1...'
Но я бы предпочел не раскрывать весь код для механизма рендеринга.
Я пытался управлять eval()
с помощью метода .call
, чтобывыполнять по одному фрагменту за раз, но я не мог передать переменные в eval, не выставляя все остальное в моем js-файле.
output += eval.call({ title: "My Title" }, html);
Это просто не работает.