Node.js fastify разработка сайта

97
31 мая 2021, 09:40

Доброго времени суток!

Перехожу с ASP.NET на Node.js. На Node.js API все оказалось намного проще чем в ASP.NET но вот фронтенд сайта вызывает неопределенность. Очень много пакетов на котором все делают сайты к примеру express но мне нужно именно на fastify тк api была написана на нем и не хочется плодить основные библиотеки. В гугле не нашел ни одного примера сайта на fastify. И не очень понятна структура сайта на Node.js.

Как я понимаю express,fastify и прочие это основная часть приложения которая руководит всеми движениями проекта(роутинг, коннект, логика). И к нему подключаются отдельные модули в зависимости от цели. Если все верно, какая самая простая связка для реализации сайта вроде лендинга? Если есть ссылки на гайды или советы буду очень благодарен!

Answer 1

Не имею опыта работы с .NET, поэтому не могу приводить аналогий.

Для разработки фронта есть 2 пути:

  • Реализовать полноценное SPA, бекенд будет предоставлять API, а рендерить все будет отдельное приложение на Vue/React/Angular
  • Подключить шаблонизатор и на каждом роуте рендерить соответствующий view

Для лендинга лучше подойдет вариант с шаблонизатором, рассмотрим его. Для начала подключаем модуль рендеринга point-of-view через npm: npm install point-of-view --save

Он поддерживает следующие шаблонизаторы:

  • ejs
  • ejs-mate
  • nunjucks
  • pug
  • handlebars
  • marko
  • mustache
  • art-template

При регистрации модуля указывается выбранный шаблонизатор, приведу пример из репозитория:

const fastify = require('fastify')()
fastify.register(require('point-of-view'), {
  engine: {
    ejs: require('ejs') // подключаем шаблонизатор ejs
  }
})
fastify.get('/', (req, reply) => { // при GET запросе /
  reply.view('/templates/index.ejs', { text: 'text' }) // рендерим view index.ejs и пробрасываем туда переменную text со значением "текст"
})

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

В дополнение рекомендую прочитать Node.js Best Practices

READ ALSO
как переменную iInt перенести в файл PHP

как переменную iInt перенести в файл PHP

Напрямую, через присвоение переменную передать не получитсяC php в js - можно, например, так: let var = '<?= $str ?>', но вот в обратную сторону этот фокус...

94
Как сделать адаптивную вёрстку?

Как сделать адаптивную вёрстку?

Сделал адаптивность пользуясь инструментами хром , то есть отображал сайт как будто на мобильном устройстве Сделал адаптивность для каждого...

115
Меню Аккордеон, CSS, vue

Меню Аккордеон, CSS, vue

Нужно реализовать меню-аккордеонПри клике на блок с заголовком первого уровня должен плавно "выезжать" сверху вниз блок с контентом

153
Как избавиться от повторений условий внутри if

Как избавиться от повторений условий внутри if

У меня есть много разных условий по типу

97