在 Vue 專案使用 Slot 進行 Layout
常見的 Layout 排版範例
這是常見的左中右的排版
其中的 template 如下
<template>
<div class="outside-box">
<div class="box">
<div class="item left">left</div>
<div class="item center">center</div>
<div class="item right">right</div>
</div>
</div>
</template>
其中同時包含了排版 (Layout) 及內容 (Content),如果要減少重覆的工作,我們可以將其中內容的部份抽離,留下單純的排版。
使用 Slot
透過 Vue 的 Slot 機制,將會變動的內容改用 slot 取代,建立 Layout.vue 因為我們需要用到多個 slot,需要分別加上 name 用來代表不用的位置
Layout.vue
<template>
<div class="box">
<slot name="left"></slot>
<slot name="center"></slot>
<slot name="right"></slot>
</div>
</template>
接著將原本的 template 套上 Layout.vue
<template>
<div class="outside-box">
<Layout>
<template v-slot:left>
<div class="item left">left</div>
</template>
<template v-slot:center>
<div class="item center">center</div>
</template>
<template v-slot:right>
<div class="item right">right</div>
</template>
</Layout>
</div>
</template>
執行結果會跟原本的一樣喔!但是擁有一個 Layout.vue 可以重覆使用排版。
關於更多 Slot 資料可以參考官方文件 Slots — Vue.js
留言