最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue-Router實(shí)現(xiàn)頁(yè)面正在加載特效方法示例

 更新時(shí)間:2017年02月12日 08:36:26   投稿:daisy  
這篇文章主要給大家介紹了利用Vue-Router實(shí)現(xiàn)頁(yè)面正在加載特效方法示例,文中給出了詳細(xì)的示例代碼,相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看看吧。

前言

vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用于構(gòu)建單頁(yè)面應(yīng)用。vue的單頁(yè)面應(yīng)用是基于路由和組件的,路由用于設(shè)定訪問(wèn)路徑,并將路徑和組件映射起來(lái)。傳統(tǒng)的頁(yè)面應(yīng)用,是用一些超鏈接來(lái)實(shí)現(xiàn)頁(yè)面切換和跳轉(zhuǎn)的。在vue-router單頁(yè)面應(yīng)用中,則是路徑之間的切換,也就是組件的切換。

如果你在使用 Vue.js 和 Vue-Router 開發(fā)單頁(yè)面應(yīng)用。因?yàn)槊總€(gè)頁(yè)面都是一個(gè) Vue 組件,你需要從服務(wù)器端請(qǐng)求數(shù)據(jù),然后再讓 Vue 引擎來(lái)渲染到頁(yè)面上。

例如,這里有個(gè)用戶個(gè)人資料的頁(yè)面。

user.vue 文件如下:

<template>
 <div>
  <h2 v-text="user.name"></h2>
  <p v-text="user.description"></p>
 </div>
</template>
<script>
 export default{
  data(){
   return{
    user: {}
   }
  }
 }
</script>

在動(dòng)畫過(guò)渡期間向服務(wù)器請(qǐng)求數(shù)據(jù),如下:

<script>
export default{
 data(){
  return{
   user: {}
  }
 },
 route: {
  data: function (transition) {
   this.getUserDetails(transition);
  }
 },
 methods: {
  getUserDetails(transition)
  {
   this.$http.get('/users/' + this.$route.params.userName)
    .then(function (response) {
     this.user = response.data;
     transition.next();
    });
  }
 }
}
</script>

這樣,我們可以通過(guò)訪問(wèn)變量 $loadingRouteData。就可以實(shí)現(xiàn)隱藏所有的頁(yè)面元素,顯示某個(gè)正在加載的元素,比如某個(gè) logo 等。

<div v-if="$loadingRouteData">
 <div class="white-widget grey-bg author-area">
 <div class="auth-info row">
 <div class="timeline-wrapper">
 <div class="timeline-item">
  <div class="animated-background">
   <div class="background-masker header-top"></div>
   <div class="background-masker header-left"></div>
   <div class="background-masker header-right"></div>
   <div class="background-masker header-bottom"></div>
   <div class="background-masker subheader-left"></div>
   <div class="background-masker subheader-right"></div>
   <div class="background-masker subheader-bottom"></div>
  </div>
 </div>
 </div>
 </div>
 </div>
</div>
<div v-if="!$loadingRouteData">
 <div>
  <h2 v-text="user.name"></h2>
  <p v-text="user.description"></p>
 </div>
</div>

比如,正在加載的樣式代碼如下:

.timeline-item {
 background: #fff;
 border-bottom: 1px solid #f2f2f2;
 padding: 25px;
 margin: 0 auto;
}

@keyframes placeHolderShimmer{
 0%{
 background-position: -468px 0
 }
 100%{
 background-position: 468px 0
 }
}

.animated-background {
 animation-duration: 1s;
 animation-fill-mode: forwards;
 animation-iteration-count: infinite;
 animation-name: placeHolderShimmer;
 animation-timing-function: linear;
 background: #f6f7f8;
 background: linear-gradient(to right, #eeeeee 8%, #dddddd 18%, #eeeeee 33%);
 background-size: 800px 104px;
 height: 40px;
 position: relative;
}

.background-masker {
 background: #fff;
 position: absolute;
}

/* Every thing below this is just positioning */

.background-masker.header-top,
.background-masker.header-bottom,
.background-masker.subheader-bottom {
 top: 0;
 left: 40px;
 right: 0;
 height: 10px;
}

.background-masker.header-left,
.background-masker.subheader-left,
.background-masker.header-right,
.background-masker.subheader-right {
 top: 10px;
 left: 40px;
 height: 8px;
 width: 10px;
}

.background-masker.header-bottom {
 top: 18px;
 height: 6px;
}

.background-masker.subheader-left,
.background-masker.subheader-right {
 top: 24px;
 height: 6px;
}


.background-masker.header-right,
.background-masker.subheader-right {
 width: auto;
 left: 300px;
 right: 0;
}

.background-masker.subheader-right {
 left: 230px;
}

.background-masker.subheader-bottom {
 top: 30px;
 height: 10px;
}

.background-masker.content-top,
.background-masker.content-second-line,
.background-masker.content-third-line,
.background-masker.content-second-end,
.background-masker.content-third-end,
.background-masker.content-first-end {
 top: 40px;
 left: 0;
 right: 0;
 height: 6px;
}

.background-masker.content-top {
 height:20px;
}

.background-masker.content-first-end,
.background-masker.content-second-end,
.background-masker.content-third-end{
 width: auto;
 left: 380px;
 right: 0;
 top: 60px;
 height: 8px;
}

.background-masker.content-second-line {
 top: 68px;
}

.background-masker.content-second-end {
 left: 420px;
 top: 74px;
}

.background-masker.content-third-line {
 top: 82px;
}

.background-masker.content-third-end {
 left: 300px;
 top: 88px;
}

這樣,你就有了 Vue-Router 的正在加載時(shí)候的效果了。你可以把以上代碼寫進(jìn)到一個(gè)單獨(dú)的組件內(nèi),在你用的地方引用它就行。

最后

這僅是個(gè)關(guān)于 Vue-Router 加載的組件的簡(jiǎn)單教程,實(shí)際上可以在許多地方來(lái)進(jìn)行改進(jìn),

VueJobs.com

如果你是一位對(duì) Vue.js 感興趣的前端工程師,可去這個(gè)網(wǎng)上瀏覽下,了解下國(guó)外對(duì) Vue 開發(fā)者的要求。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

  • Vue組件的實(shí)現(xiàn)原理詳細(xì)分析

    Vue組件的實(shí)現(xiàn)原理詳細(xì)分析

    在日常業(yè)務(wù)開發(fā)中我們會(huì)經(jīng)常封裝一些業(yè)務(wù)組件,下面這篇文章主要給大家介紹了關(guān)于Vue組件的實(shí)現(xiàn)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • vue生成token并保存到本地存儲(chǔ)中

    vue生成token并保存到本地存儲(chǔ)中

    這篇文章主要介紹了vue生成token并保存到本地存儲(chǔ)中,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • Vue和React響應(yīng)式的區(qū)別及說(shuō)明

    Vue和React響應(yīng)式的區(qū)別及說(shuō)明

    React和Vue在響應(yīng)式機(jī)制上各有特點(diǎn):Vue通過(guò)Proxy或Object.defineProperty自動(dòng)追蹤依賴,支持細(xì)粒度更新;React基于不可變數(shù)據(jù),通過(guò)setState顯式觸發(fā)更新,依賴虛擬DOM的Diff算法批量更新,Vue強(qiáng)調(diào)聲明式和自動(dòng)優(yōu)化,React強(qiáng)調(diào)函數(shù)式編程和顯式控制
    2025-02-02
  • Vue?組件上的v-model雙向綁定原理解析

    Vue?組件上的v-model雙向綁定原理解析

    這篇文章主要介紹了Vue?組件上的v-model雙向綁定原理,從本文的學(xué)習(xí)可以知道組件上v-model指令的本質(zhì)也是生成了value屬性和input事件,具體實(shí)例代碼跟隨小編一起看看吧
    2022-05-05
  • vue下的@change事件的實(shí)現(xiàn)

    vue下的@change事件的實(shí)現(xiàn)

    這篇文章主要介紹了vue下的@change事件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Vuejs中的watch實(shí)例詳解(監(jiān)聽者)

    Vuejs中的watch實(shí)例詳解(監(jiān)聽者)

    本文通過(guò)實(shí)例代碼給大家介紹了Vuejs中的watch,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-01-01
  • Vue echarts繪制甘特圖的示例代碼

    Vue echarts繪制甘特圖的示例代碼

    甘特圖是一種條狀圖,直觀展示項(xiàng)目進(jìn)展隨時(shí)間的走勢(shì)及聯(lián)系,其中,項(xiàng)目時(shí)間由橫軸表示,項(xiàng)目活動(dòng)由縱軸表示,本文給大家介紹了Vue echarts繪制甘特圖的實(shí)現(xiàn)方法,并有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-03-03
  • vue scroller返回頁(yè)面記住滾動(dòng)位置的實(shí)例代碼

    vue scroller返回頁(yè)面記住滾動(dòng)位置的實(shí)例代碼

    這篇文章主要介紹了vue scroller返回頁(yè)面記住滾動(dòng)位置的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 總結(jié)vue映射的方法與混入的使用過(guò)程

    總結(jié)vue映射的方法與混入的使用過(guò)程

    這篇文章主要介紹了總結(jié)vue映射的方法與混入的使用過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue3中使用reactive時(shí),后端有返回?cái)?shù)據(jù)但dom沒(méi)有更新的解決

    Vue3中使用reactive時(shí),后端有返回?cái)?shù)據(jù)但dom沒(méi)有更新的解決

    這篇文章主要介紹了Vue3中使用reactive時(shí),后端有返回?cái)?shù)據(jù)但dom沒(méi)有更新的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論

商南县| 射洪县| 瑞安市| 定日县| 荆州市| 东莞市| 金昌市| 大悟县| 陕西省| 平舆县| 三台县| 广饶县| 西峡县| 罗城| 屏山县| 红河县| 福州市| 赣州市| 新巴尔虎右旗| 宜宾市| 庐江县| 丹东市| 云阳县| 辽阳县| 项城市| 巍山| 延吉市| 房产| 都江堰市| 石泉县| 新建县| 永济市| 宁武县| 磴口县| 广元市| 青神县| 赤水市| 四子王旗| 新干县| 犍为县| 西青区|