面试题答案
一键面试1. 使用 slots 增强 Svelte 组件灵活性的方式
在 Svelte 中,slots
允许在组件内部定义一个占位符,组件的使用者可以在使用该组件时将任意内容填充到这个占位符中。这极大地增强了组件的灵活性,因为组件开发者不需要事先知道使用者具体要插入什么内容,使用者可以根据实际需求自由定制组件内部的内容。
2. 普通插槽的应用场景
普通插槽就是在组件模板中使用 <slot>
标签。它适用于组件内部有一个主要的可替换内容区域的场景。例如,创建一个简单的 Card
组件:
<!-- Card.svelte -->
<div class="card">
<h2>{title}</h2>
<slot></slot>
</div>
在使用 Card
组件时:
<Card title="My Card">
<p>This is the content of the card.</p>
</Card>
这里 <Card>
组件内部的 <slot>
位置被替换为 <p>This is the content of the card.</p>
,使用者可以自由填充任何 HTML 元素或 Svelte 组件,而 Card
组件无需关心具体内容是什么,只负责提供一个通用的卡片结构。
3. 具名插槽的应用场景
具名插槽使用 <slot name="slot - name">
标签,它适用于组件内部有多个不同功能或位置的可替换内容区域的场景。比如一个 Layout
组件,有 header
、main
和 footer
区域:
<!-- Layout.svelte -->
<div class="layout">
<slot name="header"></slot>
<slot name="main"></slot>
<slot name="footer"></slot>
</div>
在使用 Layout
组件时:
<Layout>
<h1 slot="header">Page Title</h1>
<p slot="main">This is the main content of the page.</p>
<p slot="footer">Copyright © 2023</p>
</Layout>
通过具名插槽,使用者可以精确地将不同的内容放置到 Layout
组件特定的位置,组件也能够清晰地划分不同内容区域的功能,提高了组件的灵活性和可复用性。