Руль Nodejs Express, как включить .hbs в другой .hbs без шаблонов - PullRequest
0 голосов
/ 14 февраля 2019

Как я могу включить .hbs в другой .hbs без шаблонов?Я использую компонентную архитектуру для Nodejs с Express, и мне нужно включить hbs-файлы с контентом для использования {{values}} в обеих сторонах, html и js, ничего не дублируя и не чистя.

Я попытался использовать partialsDir следующим образом:

app.engine('.hbs', exphbs({
    defaultLayout: 'layout',
    extname: '.hbs',
    layoutsDir: path.join(__dirname),
    partialsDir: [
        path.join(__dirname, 'dashboard', '_public', 'main'),
        path.join(__dirname, 'home', '_public', 'main')
    ]
}));

, но он получает все сценарии всех представлений всех маршрутов.И используя {{>viewScript}} (шаблоны), он загружает все .hbs (когда я иду домой, у меня есть домашние частичные .hbs, когда я иду на панель мониторинга, у меня есть home и разделы панели управления .hbs, так что у меня не работает.

Я пытался с src, но он не работает (ошибка MIME)

<script src="viewScript.hbs"></script>

Я могу объединить оба .hbs с его собственными js в одном файле .hbs, хорошо, но яхотел разделить эти части.

1 Ответ

0 голосов
/ 15 февраля 2019

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

В .hbs может быть небольшой словарь перед загрузкой скрипта со всеми строковыми значениями, которые мне могут понадобиться.

<script>
    var hello = "{{{lang.hello}}}";
</script>
<script src="viewScript.js"></script>

этот метод прост, ничего не дублирует и оставляет мне возможность делать динамические имена с jqueryи много чего еще.

...