国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue項目中導入swiper插件的方法

2019-11-19 14:27:10
字體:
來源:轉載
供稿:網友

版本選擇

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>  <div class="swiper-container">    <div class="swiper-wrapper">      <div class="swiper-slide">Slide 1</div>      <div class="swiper-slide">Slide 2</div>      <div class="swiper-slide">Slide 3</div>    </div>    <!-- 如果需要分頁器 -->    <div class="swiper-pagination"></div>    <!-- 如果需要導航按鈕 -->    <div class="swiper-button-prev"></div>    <div class="swiper-button-next"></div>    <!-- 如果需要滾動條 -->    <div class="swiper-scrollbar"></div>  </div></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>  <div class="swiper-container">    <div class="swiper-wrapper">      <div class="swiper-slide">Slide 1</div>      <div class="swiper-slide">Slide 2</div>      <div class="swiper-slide">Slide 3</div>    </div>    <!-- 如果需要分頁器 -->    <div class="swiper-pagination"></div>    <!-- 如果需要導航按鈕 -->    <div class="swiper-button-prev"></div>    <div class="swiper-button-next"></div>    <!-- 如果需要滾動條 -->    <div class="swiper-scrollbar"></div>  </div></template><script>import Swiper from 'swiper';import 'swiper/dist/css/swiper.min.css';export default {  mounted(): {    var mySwiper = new Swiper('.swiper-container', {})  }}</script><style>.swiper-container {  width: 600px;  height: 300px;}</style>

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

對數據的渲染

在實際項目中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>  <div class="swiper-container">    <div class="swiper-wrapper">      <div class="swiper-slide" v-for="item in imgList" :style="{backgroundImage: 'url(' + item + ')'}"></div>    </div>    <!-- 如果需要分頁器 -->    <div class="swiper-pagination"></div>    <!-- 如果需要導航按鈕 -->    <div class="swiper-button-prev"></div>    <div class="swiper-button-next"></div>    <!-- 如果需要滾動條 -->    <div class="swiper-scrollbar"></div>  </div></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插件。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 威远县| 新野县| 芦山县| 鄯善县| 白山市| 三门峡市| 普安县| 黄浦区| 丹寨县| 涿州市| 会同县| 永济市| 巨野县| 惠东县| 西吉县| 张北县| 门源| 民乐县| 永登县| 太康县| 铁力市| 肃宁县| 德钦县| 河西区| 商丘市| 开封市| 舞阳县| 大埔区| 奉化市| 洪湖市| 新巴尔虎右旗| 城步| 张家港市| 兴海县| 治多县| 铁岭市| 乌拉特前旗| 富阳市| 晋江市| 巫山县| 建湖县|