首頁  >  文章  >  web前端  >  在vue中如何導入swiper插件?

在vue中如何導入swiper插件?

亚连
亚连原創
2018-06-08 17:36:411707瀏覽

這篇文章主要介紹了vue專案中導入swiper插件的方法,現在分享給大家,也給大家做個參考。

版本選擇

swiper是個常用的插件,現在已經迭代到了第四代:swiper4。

常用的版本是swiper3和swiper4,我選的是swiper3。

安裝

安裝swiper3的最新版本3.4.2:

npm i swiper@3.4.2 -S

這裡一個小知識,查看node套件的所有版本號碼的方法:

npm view 包名 versions

元件編寫

swiper官方的使用方法分為4個流程:

  1. 載入外掛

  2. HTML內容

  3. #為Swiper定義一個大小

  4. 初始化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(&#39;.swiper-container&#39;, {})
}

以上程式碼中的/* eslint-disable no-new */是啟用的eslint程式碼偵測的項目可以使用,如果沒有使用eslint可用使用程式碼:

mounted(): {
  var mySwiper = new Swiper(&#39;.swiper-container&#39;, {})
}

完成

將以上的程式碼合併起來:

<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 &amp;#39;swiper&amp;#39;;
import &amp;#39;swiper/dist/css/swiper.min.css&amp;#39;;
export default {
  mounted(): {
    var mySwiper = new Swiper(&#39;.swiper-container&#39;, {})
  }
}
</script>

運行,你看可以實現輪播圖的效果了。但到此為止只實現了輪播的效果,還沒有資料的渲染。

對資料的渲染

在實際專案中swiper外掛常用於實現banner圖的效果(新浪手機版):

資料的取得

我用在vue專案中常用ajax外掛axios來範例:

axios
 .get(&#39;/user?ID=12345&#39;)
 .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: &#39;url(&#39; + item + &#39;)&#39;}"></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(&#39;/user?ID=12345&#39;)
 .then(function (response) {
  // 获取数据更新
  this.imgList = response;
  // DOM还没有更新
  this.$nextTick(() => {
    // DOM更新了
    // swiper重新初始化
    /* eslint-disable no-new */
    new Swiper(&#39;.swiper-container&#39;, {})
  })
 })
 .catch(function (error) {
  console.log(error);
 });

到此,輪播圖的效果實現了。

總結

swiper是我們平常很常用的插件,但將swiper導入vue專案中遇到的問題不少。最主要的問題是要搞懂vue的生命週期,這樣才能有效地使用各種js外掛。

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

使用Vue實作底層原理(詳細教學)

在js中如何實作控製檔拖曳並取得拖曳內容功能

詳細解讀js中裝飾設計模式

#

以上是在vue中如何導入swiper插件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn