Я работаю над небольшим личным проектом, и у меня есть небольшая проблема, которую я не знаю, как решить. Я использую Bootstrap4
, ejs templating engine
и express
. Мой проект имеет панель навигации, на которой я показываю Вход , если пользователь не вошел в систему, и Учетная запись в противоположном случае.
Вот соответствующая часть Navbar:
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto ">
<li class="nav-item navbar-item">
<a class="nav-link" href="/">Home </a>
</li>
<li class="nav-item navbar-item">
<a class="nav-link" href="/">Some link </a>
</li>
<li class="nav-item navbar-item " id="nav-signIn">
<a class="nav-link" href="/signIn">Sign in</a>
</li>
<li class="nav-item dropdown navbar-item" id="nav-account">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
Account
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
</ul>
</div>
Это функция, которая управляет тем, что показывать на стороне клиента:
function displayAccountOrSignIn() {
if (!document.cookie.split(';').filter((item) => item.includes('logedIn=')).length) {
document.querySelector('#nav-account').style.display = 'none'
}
else {
document.querySelector('#nav-signIn').style.display = 'none'
}
}
Моя проблемаэтот Navbar «дергается», потому что сначала загружает HTML, а затем скрывает то, что не должно отображаться. Я могу это исправить, проверив файлы cookie на сервере, а затем условно отобразить части Navbar, но я не думаю, что это хорошая идея. Буду признателен за любые предложения.