我现在收到这个错误:
__layout.reset已被删除,取而代之的是命名布局:https://kit.svelte.dev/docs/layouts#named-布局
我有一个子目录,我不想继承它的基本布局。
$ find . -name '*layout*'
./setup-profile/__layout.reset.svelte
./auth/__layout.reset.svelte
./__layout.svelte
package.json有
"@sveltejs/kit": "next",
您链接的文档页面非常不言自明。
编辑:
总的来说,更简单的方法是在包含简单<slot />
的源树的根上创建一个命名的重置布局,并在您想要从重置布局开始时引用该布局:
src/routes/
├ auth/
│ ├ __layout@reset.svelte (will inherit from the reset layout)
│ ├ pageA.svelte
│ └ pageB.svelte
├ setup-profile/
│ ├ __layout@reset.svelte (will inherit from the reset layout)
│ ├ pageA.svelte
│ └ pageB.svelte
├ no-reset/
│ ├ __layout.svelte (will inherit from the base layout)
│ ├ pageA.svelte
│ └ pageB.svelte
├ __layout.svelte
└ __layout-reset.svelte
随着路由系统的发展,这已经不起作用了。
我的理解是:
- 所有布局都继承自根布局
+page.svelte
- 但您可以创建在路线的最终路径中不考虑的组
例如,我们可以想象一个网站的布局包含一个页眉、一个主块和一个页脚块。
但我们也可能有一些弹出窗口之王,它们不是由这些块元素组成的,而是具有高z-index
或类似内容的简单块。
因为所有布局都继承了根布局,所以我们可以在根处创建一个空白布局(包含单个<slot />
(,然后创建一个(app)
组和(popup)
组(此处括号至关重要(。在每个组内部,您可以定义将由位于相应子文件夹中的所有布局继承的布局。
它会给我们以下的东西:
src/routes
├── (app)
│ ├── +layout.svelte ----> contains Header, Main, Footer etc.
│ ├── page1
│ │ └── +page.svelte
│ ├── page2
│ │ └── +page.svelte
│ ├── page3
│ │ └── +page.svelte
├── (popup)
| ├── +layout.svelte ----> contains only popup HTML & styles
│ ├── popup
│ └── popup1
│ │ └── +page.svelte
│ └── popup2
│ └── +page.svelte
├── (test)
│ ├── +layout.svelte
│ └── test
│ ├── +layout.svelte
│ └── page.svelte
├── +error.svelte
├── +layout.svelte ----> contains nothing or only global things
├── +page.svelte
└── api
├── user
│ └── [uid]
│ └── get.json
└── ...
...
我建议您使用(group(,这可以帮助您吗
阅读更多
根据我的测试,您需要重命名layout&文件使用布局。
例如
l2_named/
__layout-foo.svelte
level_2_named@foo.svelte
布局文件添加了-foo
,文件使用布局添加了@foo
。