Как связать 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>