Как верно организовать роботу сайта на nodejs? Разрабатываю небольшое приложение, но опыта в серверном програмировании нету. Приложение на node.js, шаблонизатор ejs.
Нужно чтобы было так:
1. При входе запрашивает логин/пароль.
2. Если верно - показывает главную страницу.
3. Пользователь вводит данные, отправляет их через ajax.
4. Сервер получив запрос изменяет вид этой страницы (данные на ней).
Что есть сейчас:
При входе ("/") index.js:router.get('/', function(req, res) {
if (req.signedCookies.rememberme == 'registered') {
var register = true
res.render('index', { register:register });
} else {
var register = false;
res.render('index', { register:register });
}
});
Код шаблона:






Пользователь попадает на login.ejs, так как не зарегистрирован. Там вводит логин/пароль и происходит сверка с базой. Если такой пользователь с паролем есть - записываю cookie:res.cookie('ImRegistered', 'registered', { maxAge: 900000, signed: true })
И обновляю страницу. Теперь index.js нас пускает (видит что мы авторизировались по cookie) и мы получаем страницу контента. Чтобы разлогинится - удаляю куки.
Это правильно или за такое горят в аду?
Теперь нужен пункт 4. Как мне изменять уже отрендереную страницу? После того как я 1й рас отдалres.render('index', { register:register, somevar: 'someval' });
2й вызов этого же кода не работает. Как мне обновлять что либо? Например я хочу обновить main.ejs который заинклужен на странице.

21 Авг 2019 в 07:08
196 +1
0
Ответы
1

Для организации работы сайта на node.js с использованием шаблонизатора ejs, следует рассмотреть возможность использования AJAX для отправки данных на сервер и обновления контента на странице без перезагрузки.

Чтобы реализовать изменение контента на странице после отправки данных через AJAX, можно использовать следующий подход:

На сервере создайте обработчик, который будет принимать POST запросы и обновлять данные на странице. Например:router.post('/updateContent', function(req, res) {
// Логика обновления данных на сервере
res.send({ newData: 'Новые данные' });
});На клиентской стороне, после успешной отправки данных с помощью AJAX, обновите содержимое блока на странице. Например, с помощью jQuery:$.ajax({
type: 'POST',
url: '/updateContent',
data: { /* данные для обновления */ },
success: function(response) {
$('#main-content').html(response.newData); // Обновляем содержимое блока
}
});В шаблоне main.ejs добавьте блок, который будет обновляться после успешного выполнения запроса:<div id="main-content">
<!-- Контент, который будет обновляться -->
</div>

Таким образом, вы сможете динамически изменять содержимое страницы после отправки данных через AJAX без необходимости перезагрузки. Ваш подход к авторизации пользователей с использованием cookie также является допустимым, но рекомендуется применять более безопасные методы, такие как сессии или токены авторизации. Необходимо также учесть защиту от CSRF атак и других уязвимостей.

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир