#css #express #ejs
#css #экспресс #ejs
Вопрос:
Итак, моя панель навигации сохраняется как частичная в довольно простом приложении express. У меня есть панель навигации, также включенная в стандартную оболочку, которая используется на большинстве страниц, например:
<h1>HELLO<h1>
и в шаблонном файле у меня есть
<%- include("../partials/navbar")%>
Проблема в том, что отображается панель навигации, но два изображения .svg не отображаются на определенных страницах, которые, на мой взгляд, используют один и тот же формат. У кого-нибудь есть идеи, в чем может быть проблема?
Кроме того, пожалуйста, дайте мне знать, если я могу что-нибудь уточнить — я довольно новичок в программировании, поэтому мой словарный запас немного ограничен.
Заранее спасибо!
РЕДАКТИРОВАТЬ (к сожалению, информации недостаточно):
вот код для частичной панели навигации:
<nav class="navbar navbar-expand-md sticky-top navbar-dark">
<a href="/"> <img class="brand" src="logo.svg" alt="" /></a>
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<div class="navbar-nav">
<a class="nav-link ms-3" href="/events">Upcoming Events</a>
<a class="nav-link ms-3" href="/events/new">New Event</a>
<a class="nav-link ms-3" href="/community">Community</a>
</div>
<div class="navbar-nav ml-auto rightLinks" id="navbarSupportedContent">
<% if(!currentUser) { %>
<p><%= currentUser %></p>
<a class="nav-link" href="/login">Login</a>
<a class="nav-link" href="/register">Register</a>
<% } else { %>
<a class="nav-link" href="/logout">Logout</a>
<p class="nav-link">
<%=currentUser.username %><img class="profileIcon" src="profile.svg"></img>
</p>
<% } %>
</div>
</div>
</div>
</nav>
и вот шаблон:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="/style2.css" />
<link rel="icon" href="/favicon.ico" />
<link rel="preconnect" href="https://fonts.gstatic.com" />
<link
href="https://fonts.googleapis.com/css2?family=Antonamp;display=swap"
rel="stylesheet"
/>
<link rel="preconnect" href="https://fonts.gstatic.com" />
<link
href="https://fonts.googleapis.com/css2?family=Open Sansamp;display=swap"
rel="stylesheet"
/>
<script src="https://api.mapbox.com/mapbox-gl-js/v2.0.1/mapbox-gl.js"></script>
<link
href="https://api.mapbox.com/mapbox-gl-js/v2.0.1/mapbox-gl.css"
rel="stylesheet"
/>
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
integrity="sha384-Gn5384xqQ1aoWXA 058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous"
/>
<title>Street Music</title>
</head>
<body class="flex-column">
<%- include("../partials/navbar")%>
<main class="containter vw-100"><%- body %></main>
<script src="https://cdn.jsdelivr.net/npm/bs-custom-file-input/dist/bs-custom-file-input.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.21.0/axios.js"></script>
<script
src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"
></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
integrity="sha384-ApNbgh9B Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
crossorigin="anonymous"
></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5 76PVCmYl"
crossorigin="anonymous"
></script>
<!-- <script src="/javascripts/validateForms.js"></script> -->
</body>
</html>
Может быть, я должен упомянуть, что страницы, на которых отображаются изображения, находятся в одном каталоге, а сами изображения общедоступны.
Каждый файл начинается с <% layout(«layouts/ boilerplate») %>, но он отображает изображения только на определенных страницах.
Комментарии:
1. Можете ли вы показать свой код? Мы никак не можем узнать, что это за svg-изображения, где вы их разместили и почему они не отображаются
Ответ №1:
Первый:-
у тега img нет закрытого тега, так что это неправильно
<img class="profileIcon" src="profile.svg"></img>
вы должны удалить закрытый тег, чтобы он был таким
<img class="profileIcon" src="profile.svg">
второе: —
вы упомянули, что изображения находятся в другом каталоге, и вы не перенаправили их в src
src="profile.svg"
чтобы правильно проложить маршрут, есть два способа: —
первый :-
src="../public/profile.svg"
второе: —
если вы используете express, вы можете сделать статический файл в свой общедоступный файл в server.js вот так
app.use(express.static('public'))
и затем вы можете перенаправить непосредственно в общедоступный каталог
src="./public/profile.svg"