Как связать backend(Node.js) с фронтэндом?

Написал сервер на Node.js, клиентская часть сайта написана без использования React, Vue и т.д. То есть обычный html, CSS, js. Как можно связать backend с фронтэндом? Чтобы например когда пользователь заполнял данные в форме, они отправлялись в базу данных и со стороны клиентской части выдавали определённую форму или редирект на другую страницу в зависимости от того какие данные ввёл пользователь в определённой форме?


Ответы (1 шт):

Автор решения: Александр

Сам пишу проект с аналогичными условиями. Примерно так всё выглядит:

router.js

import express from 'express';
export const router = express.Router();
router.use(express.static(__dirname));
const jsonParser = express.json();

router.get('/', (_request, response) => {
    response.sendFile(`${__dirname}/html/index.html`);
});

async function checkUser(request) {
   // запрос к базе
}

на клиенте

function registration() {
    const code = 1;
    const table = 'USERS';
    const login = document.getElementsByName('login').item(0);
    const password = document.getElementsByName('password').item(0);
    checkErrors(code, table, [login, password]);
}

async function checkErrors(code, table, args) {
  const user = JSON.stringify({
      code,
      table,
      login: args[0].value,
      password: args[1].value,
  });

  const response = await fetch('./queryForUser', {
      method: 'POST',
      body: user,
      headers: {
          'Content-Type': 'application/json',
          Accept: 'application/json',
      },
  });
  
  if (response.ok) {
    // ...
    window.location.href = 'mainPage';
  }
}
<input type="text" name="login">
<input type="password" name="password">
<a id="btn" class="link-button"
    href="javascript:registration()">Зарегистрироваться
</a>

→ Ссылка