這篇文章主要介紹了vue專案中導入swiper插件的方法,現在分享給大家,也給大家做個參考。
版本選擇
swiper是個常用的插件,現在已經迭代到了第四代:swiper4。
常用的版本是swiper3和swiper4,我選的是swiper3。
安裝
安裝swiper3的最新版本3.4.2:
npm i swiper@3.4.2 -S
這裡一個小知識,查看node套件的所有版本號碼的方法:
npm view 包名 versions
元件編寫
swiper官方的使用方法分為4個流程:
載入外掛
HTML內容
#為Swiper定義一個大小
初始化Swiper
我也按照這個流程寫元件:
載入外掛
import Swiper from 'swiper'; import 'swiper/dist/css/swiper.min.css';
HTML內容
<template> <p class="swiper-container"> <p class="swiper-wrapper"> <p class="swiper-slide">Slide 1</p> <p class="swiper-slide">Slide 2</p> <p class="swiper-slide">Slide 3</p> </p> <!-- 如果需要分页器 --> <p class="swiper-pagination"></p> <!-- 如果需要导航按钮 --> <p class="swiper-button-prev"></p> <p class="swiper-button-next"></p> <!-- 如果需要滚动条 --> <p class="swiper-scrollbar"></p> </p> </template>
為Swiper定義一個大小
.swiper-container { width: 600px; height: 300px; }
初始化Swiper
因為dom渲染完成才能初始化Swiper,所以必須將初始化放入vue的生命週期鉤子函數mounted中:
mounted(): { /* eslint-disable no-new */ new Swiper('.swiper-container', {}) }
以上程式碼中的/* eslint-disable no-new */是啟用的eslint程式碼偵測的項目可以使用,如果沒有使用eslint可用使用程式碼:
mounted(): { var mySwiper = new Swiper('.swiper-container', {}) }
完成
將以上的程式碼合併起來:
<template> <p class="swiper-container"> <p class="swiper-wrapper"> <p class="swiper-slide">Slide 1</p> <p class="swiper-slide">Slide 2</p> <p class="swiper-slide">Slide 3</p> </p> <!-- 如果需要分页器 --> <p class="swiper-pagination"></p> <!-- 如果需要导航按钮 --> <p class="swiper-button-prev"></p> <p class="swiper-button-next"></p> <!-- 如果需要滚动条 --> <p class="swiper-scrollbar"></p> </p> </template> <script> import Swiper from &#39;swiper&#39;; import &#39;swiper/dist/css/swiper.min.css&#39;; export default { mounted(): { var mySwiper = new Swiper('.swiper-container', {}) } } </script>
運行,你看可以實現輪播圖的效果了。但到此為止只實現了輪播的效果,還沒有資料的渲染。
對資料的渲染
在實際專案中swiper外掛常用於實現banner圖的效果(新浪手機版):
資料的取得
我用在vue專案中常用ajax外掛axios來範例:
axios .get('/user?ID=12345') .then(function (response) { this.imgList = response; }) .catch(function (error) { console.log(error); });
將取得資料的資料結構規定為:
[ "https://www.baidu.com/img/baidu_jgylogo3.gif", "https://www.baidu.com/img/baidu_jgylogo3.gif", "https://www.baidu.com/img/baidu_jgylogo3.gif", "https://www.baidu.com/img/baidu_jgylogo3.gif", "https://www.baidu.com/img/baidu_jgylogo3.gif" ]
列表渲染
<template> <p class="swiper-container"> <p class="swiper-wrapper"> <p class="swiper-slide" v-for="item in imgList" :style="{backgroundImage: 'url(' + item + ')'}"></p> </p> <!-- 如果需要分页器 --> <p class="swiper-pagination"></p> <!-- 如果需要导航按钮 --> <p class="swiper-button-prev"></p> <p class="swiper-button-next"></p> <!-- 如果需要滚动条 --> <p class="swiper-scrollbar"></p> </p> </template> <style> .swiper-slide { width: 100%; height: 400px; } <style>
到此為止已經將資料渲染完成了,但是查看實際效果,似乎banner無法實現輪播圖的效果啊。這裡只是將圖片渲染了出來,但是渲染出輪播圖並沒有被初始化。因為初始化已經在生命週期mounted時完成了。
初始化
所以在取得資料且DOM更新後,需要重新初始化swiper。
axios .get('/user?ID=12345') .then(function (response) { // 获取数据更新 this.imgList = response; // DOM还没有更新 this.$nextTick(() => { // DOM更新了 // swiper重新初始化 /* eslint-disable no-new */ new Swiper('.swiper-container', {}) }) }) .catch(function (error) { console.log(error); });
到此,輪播圖的效果實現了。
總結
swiper是我們平常很常用的插件,但將swiper導入vue專案中遇到的問題不少。最主要的問題是要搞懂vue的生命週期,這樣才能有效地使用各種js外掛。
上面是我整理給大家的,希望今後對大家有幫助。
相關文章:
#以上是在vue中如何導入swiper插件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!