知道這個套件一陣子了,但有一天要使用他的時候被官方文件寫的這段話嚇到。
Swiper Vue components will likely to be removed in future versions. It is recommended to migrate to Swiper Element instead.
於是依照他的建議使用了WebComponent導入專案
先照著官方文件的步驟來安裝吧!
$ npm install swiper
main.js
當中註冊它)// main.js
import { register } from 'swiper/element/bundle';
const app = createApp(App);
app.use(register);
app.mount('#app');
假如今天沒有要用Vue可以直接
// 來自 CDN 的 Swiper 自定義元素
<script src="https://cdn.jsdelivr.net/npm/swiper@9/swiper-element-bundle.min.js"></script>
這種情況會自動註冊,不需要調用register()
// 任何.vue檔案
<template>
<!-- 使用pagination功能 -->
<swiper-container pagination="true">
<swiper-slide>
<img :src="圖片src綁定的資料" alt="">
</swiper-slide>
<swiper-slide>
<img :src="圖片src綁定的資料" alt="">
</swiper-slide>
</swiper-container>
</template>
到這邊文檔還是看的懂,而且可以正常使用
但刺激的來了,瀏覽器開始跳出一堆
大意是雖然註冊成為全域的 Custom Element ,但是這樣 Vue 並不知道這個 Custom Element 的存在,所以要去 vue.config.js 設定讓 webpack 在編譯的時候可以看的懂
在vue.config.js
底下新增這段語法
module.exports = {
chainWebpack: config => {
config.module
.rule('vue')
.use('vue-loader')
.tap(options => ({
...options,
compilerOptions: {
// 將所有帶 swiper- 的標籤名都視為自定義元素
isCustomElement: tag => tag.startsWith('swiper-')
}
}))
}
}
終端機重新執行npm run surve
那段討厭的警告就消失了
:root {
--swiper-theme-color: #9747ff;
--swiper-pagination-bottom: 0px;
}
const swiperEl = document.querySelector('swiper-container');
const params = {
// 直接寫要更改的CSS樣式
injectStyles: [
`
:host(.red) .swiper-wrapper {
background-color: red;
}
`,
],
// 可以匯入css檔案
injectStylesUrls: ['path/to/one.css', 'path/to/two.css'],
};
Object.assign(swiperEl, params);
// 初始化
swiperEl.initialize();
提供給跟我一樣迷茫的旅人,如果有理解錯的地方歡迎糾正!