Исключить страницу из _layout

Здравствуйте, я новичок в Svelte, Sapper & Express.

Проблема:
Я использую Sappers _layout.html для отображения 2 компонентов (заголовок и меню), которые должны отображаться на всех страницах, за исключением страницы входа.

Как правильно этого добиться?

Возможные решения:
A) Обслуживать страницу входа из статической папки и использовать промежуточное ПО для маршрутизации к ней?

Б) Использовать логин как корень моего проекта и переместить все остальные маршруты на уровень ниже, чтобы они могли использовать общий макет, не связанный со страницей входа?

C) Поместите оператор if в макет и определите, когда пользователь находится на странице входа, чтобы скрыть компоненты заголовка и меню.

Г) Не использовать макет для отображения компонентов.


6
1 736
1

Ответ:

Решено

Мое предпочтительное решение этой проблемы - вариант C - использование child.segment для управления используемым макетом:

<!-- src/routes/_layout.html -->
{#if child.segment === 'login'}
  <svelte:component this={child.component} {...child.props}/>
{:else}
  <div class="fancy-layout">
    <svelte:component this={child.component} {...child.props}/>
  </div>
{/if}