Механизм шаблонов: включите файл, сохраняя переменные из родительского файла - PullRequest
0 голосов
/ 25 мая 2019

Я экспериментировал и пытался разработать новый движок шаблонов для узла.

Пока он работает нормально, но я столкнулся с проблемой, пытаясь разрешить функцию "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);

Это просто не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...