Eleventy, Nunjucks, Tailwindcss, функция переключения javascript для скрытия и отображения контента

У меня есть статический сайт, использующий одиннадцатьдесят, tailwindcss и nunjucks. это мой первый раз, и в целом он мне очень нравится, но я все еще нахожу макет немного запутанным.

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

в моем каталоге /src/utils/ я добавил простую функцию переключения для добавления и удаления блока класса (tailwindcss)

я не понимаю, как получить доступ к этой функции в моем коде файлов /src/site/components.njk, чтобы добавить функциональность на мою страницу.

многочисленные и длинные запросы в Google и Duck Duck Go не дали много информации, поэтому любая помощь приветствуется.

🤔 А знаете ли вы, что...
JavaScript имеет множество библиотек и фреймворков, таких как jQuery, Angular, и Vue.js.


1
292
1

Ответ:

Решено

Поскольку вы хотите иметь эту функциональность на стороне клиента, вам необходимо убедиться, что ваш JavaScript включен в вывод вашего сайта. Поскольку ваш каталог /src/ существует только в вашем репозитории, он не будет доступен для браузера после того, как ваш сайт будет создан. Самый простой способ сделать его доступным для браузера — скопировать файл JavaScript в выходной каталог, а затем включить его как сценарий в выходной HTML-код. Убедитесь, что URL-адрес соответствует выходному местоположению. Например, если ваш исходный файл — /src/utils/component-toggle.js, ваш выходной каталог — /dist/, и вы копируете файл в /dist/utils/component-toggle.js, тег скрипта должен выглядеть так:

<script src = "/utils/component-toggle.js" defer></script>

См. Сквозное копирование файлов, чтобы узнать, как копировать статические файлы на этапе сборки.

Убедитесь, что ваш файл JavaScript работает и в контексте браузера. Например, вы не можете использовать CommonJS (синтаксис module.exports и require()), так как это концепция NodeJS и ее нет в браузерах. Если вы используете синтаксис модуля ES (синтаксис export default {}), убедитесь, что он поддерживается во всех браузерах, которые поддерживает ваш сайт.

Недавно я написал более подробный ответ на эту тему, в котором объясняется, почему вы должны делать это именно так, а также разница между JavaScript во время сборки и во время выполнения для генераторов статических сайтов, вы можете прочитать его здесь если вы Хотите узнать больше.