国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Vue 初始化性能優(yōu)化

graf / 1016人閱讀

摘要:在最近開發(fā)的一個里,初始化一個較重的頁面竟然用了,這讓我開始重視的初始化性能,并最終優(yōu)化到,這篇文章分享我的優(yōu)化思路。初始化時,會對做改造,在現(xiàn)代瀏覽器里,這個過程實際上挺快的,但仍然有優(yōu)化空間。

原文: https://github.com/Coffcer/Bl...

前言

一般來說,你不需要太關心vue的運行時性能,它在運行時非常快,但付出的代價是初始化時相對較慢。在最近開發(fā)的一個Hybrid APP里,Android Webview初始化一個較重的vue頁面竟然用了1200ms ~ 1400ms,這讓我開始重視vue的初始化性能,并最終優(yōu)化到200 ~ 300ms,這篇文章分享我的優(yōu)化思路。

性能瓶頸在哪里?

先看一下常見的vue寫法:在html里放一個app組件,app組件里又引用了其他的子組件,形成一棵以app為根節(jié)點的組件樹。


     

而正是這種做法引發(fā)了性能問題,要初始化一個父組件,必然需要先初始化它的子組件,而子組件又有它自己的子組件。那么要初始化根標簽,就需要從底層開始冒泡,將頁面所有組件都初始化完。所以我們的頁面會在所有組件都初始化完才開始顯示。

這個結果顯然不是我們要的,更好的結果是頁面可以從上到下按順序流式渲染,這樣可能總體時間增長了,但首屏時間縮減,在用戶看來,頁面打開速度就更快了。

要實現(xiàn)這種渲染模式,我總結了下有3種方式實現(xiàn)。第3種方式是我認為最合適的,也是我在項目中實際使用的優(yōu)化方法。

第一種:不使用根組件

這種方式非常簡單,例如:


    
    
    

拋棄了根組件,從而使A、B、C每一個組件初始化完都立刻展示。但根組件在SPA里是非常必要的,所以這種方式只適用小型頁面。

第二種:異步組件

異步組件在官方文檔已有說明,使用非常簡單:


    
    
new Vue({
    components: {
        A: { /*component-config*/ },
        B (resolve) {
            setTimeout(() => {
                resolve({ /*component-config*/ })
            }, 0);
        }
    }
})

這里組件是一個異步組件,會等到手動調(diào)用resolve函數(shù)時才開始初始化,而父組件也不必等待先初始化完。

我們利用setTimeout(fn, 0)將的初始化放在隊列最后,結果就是頁面會在初始化完后立刻顯示,然后再顯示。如果你的頁面有幾十個組件,那么把非首屏的組件全設成異步組件,頁面顯示速度會有明顯的提升。

你可以封裝一個簡單的函數(shù)來簡化這個過程:

function deferLoad (component, time = 0) {
    return (resolve) => {
        window.setTimeout(() => resolve(component), time)
    };
}

new Vue({
    components: {
        B: deferLoad( /*component-config*/ ),
        // 100ms后渲染
        C: deferLoad( /*component-config*/, 100 )
    }
})

看起來很美好,但這種方式也有問題,考慮下這樣的結構:


    
    
    
    
    
    

還是按照上面的異步組件做法,這時候就需要考慮把哪些組件設成異步的了。如果把A、B、C都設成異步的,那結果就是3個</b>會首先渲染出來,頁面渲染的過程在用戶看來非常奇怪,并不是預期中的從上到下順序渲染。</p> <b>第三種:v-if 和 terminal指令</b> <p>這是我推薦的一種做法,簡單有效。還是那個結構,我們給要延遲渲染的組件加上v-if:</p> <pre><app> <A></A> <B v-if="showB"></B> <C v-if="showC"></C> </app></pre> <pre>new Vue({ data: { showB: false, showC: false }, created () { // 顯示B setTimeout(() => { this.showB = true; }, 0); // 顯示C setTimeout(() => { this.showC = true; }, 0); } });</pre> <p>這個示例寫起來略顯啰嗦,但它已經(jīng)實現(xiàn)了我們想要的順序渲染的效果。頁面會在A組件初始化完后顯示,然后再按順序渲染其余的組件,整個頁面渲染方式看起來是流式的。</p> <p>有些人可能會擔心<b>v-if</b>存在一個編譯/卸載過程,會有性能影響。但這里并不需要擔心,因為<b>v-if</b>是惰性的,只有當?shù)谝淮沃禐閠rue時才會開始初始化。</p> <p>這種寫法看起來很麻煩,如果我們能實現(xiàn)一個類似<b>v-if</b>的組件,然后直接指定多少秒后渲染,那就更好了,例如:</p> <pre><app> <A></A> <B v-lazy="0"></B> <C v-lazy="100"></C> </app></pre> <p>一個簡單的指令即可,不需要js端任何配合,并且可以用在普通dom上面,Nice!</p> <p>在vue里,類似<b>v-if</b>和<b>v-for</b>這種是terminal指令,會在指令內(nèi)部編譯組件。如果你想要自己實現(xiàn)一個terminal指令,需要加上<b>terminal: true</b>,例如:</p> <pre>Vue.directive("lazy", { terminal: true, bind () {}, update () {}, unbind () {} });</pre> <p>這是vue在1.0.19+新增的功能,由于比較冷門,文檔也沒有特別詳細的敘述,最好的方式是參照著<b>v-if</b>和<b>v-for</b>的源碼來寫。</p> <p>我已經(jīng)為此封裝了一個terminal指令,你可以直接使用:<br>https://github.com/Coffcer/vu...</p> <b>其他的優(yōu)化點</b> <p>除了組件上的優(yōu)化,我們還可以對vue的依賴改造入手。初始化時,vue會對data做getter、setter改造,在現(xiàn)代瀏覽器里,這個過程實際上挺快的,但仍然有優(yōu)化空間。</p> <p><b>Object.freeze()</b>是ES5新增的API,用來凍結一個對象,禁止對象被修改。vue 1.0.18+以后,不會對已凍結的data做getter、setter轉換。</p> <p>如果你確保某個data不需要跟蹤依賴,可以使用Object.freeze將其凍結。但請注意,被凍結的是對象的值,你仍然可以將引用整個替換調(diào)。看下面例子:</p> <pre><p v-for="item in list">{{ item.value }}</p></pre> <pre>new Vue({ data: { // vue不會對list里的object做getter、setter綁定 list: Object.freeze([ { value: 1 }, { value: 2 } ]) }, created () { // 界面不會有響應 this.list[0].value = 100; // 下面兩種做法,界面都會響應 this.list = [ { value: 100 }, { value: 200 } ]; this.list = Object.freeze([ { value: 100 }, { value: 200 } ]); } })</pre> <b>后記</b> <p>vue 1.0+ 的組件其實不算輕量,初始化一個組件包括依賴收集、轉換等過程,但其實有些是可以放在編譯時提前完成的。vue 2.0+ 已經(jīng)在這方面做了不少的改進:分離了編譯時和運行時、提供函數(shù)組件等,可以預見,vue 2.0的性能將有很大的提升。</p> <p>v-lazy-component: https://github.com/Coffcer/vu...</p> </div> <div id="zvn5jzx" class="mt-64 tags-seach" > <div id="nj7hb7j" class="tags-info"> <a style="width:120px;" title="云服務器" href="http://m.specialneedsforspecialkids.com/site/active/kuaijiesale.html?ytag=seo">云服務器</a> <a style="width:120px;" title="GPU云服務器" href="http://m.specialneedsforspecialkids.com/site/product/gpu.html">GPU云服務器</a> <a style="width:120px;" title="性能優(yōu)化" href="http://m.specialneedsforspecialkids.com/yun/tag/xingnengyouhua/">性能優(yōu)化</a> <a style="width:120px;" title="優(yōu)化系統(tǒng)性能" href="http://m.specialneedsforspecialkids.com/yun/tag/youhuaxitongxingneng/">優(yōu)化系統(tǒng)性能</a> <a style="width:120px;" title="網(wǎng)站性能優(yōu)化" href="http://m.specialneedsforspecialkids.com/yun/tag/wangzhanxingnengyouhua/">網(wǎng)站性能優(yōu)化</a> <a style="width:120px;" title="頁面性能優(yōu)化" href="http://m.specialneedsforspecialkids.com/yun/tag/yemianxingnengyouhua/">頁面性能優(yōu)化</a> </div> </div> <div id="ljbtbp5" class="entry-copyright mb-30"> <p class="mb-15"> 文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。</p> <p>轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/90975.html</p> </div> <ul class="pre-next-page"> <li id="xvn5j5l" class="ellipsis"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/90974.html">上一篇:前端單元測試之Karma環(huán)境搭建</a></li> <li id="7ntf7df" class="ellipsis"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/90976.html">下一篇:一個關于回調(diào)的故事</a></li> </ul> </div> <div id="rzfzpbb" class="about_topicone-mid"> <h3 class="top-com-title mb-0"><span data-id="0">相關文章</span></h3> <ul class="com_white-left-mid atricle-list-box"> <li> <div id="7rtndbb" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/88926.html"><b>前端每周清單第 34 期:<em>Vue</em> 現(xiàn)狀盤點與 3.0 展望,React 代碼遷移與<em>優(yōu)化</em>,圖片<em>優(yōu)化</em>詳論</b></a></h2> <p class="ellipsis2 good">摘要:工程實踐立足實踐,提示實際水平內(nèi)聯(lián)函數(shù)與性能很多關于性能優(yōu)化的文章都會談及內(nèi)聯(lián)函數(shù),其也是常見的被詬病為拖慢性能表現(xiàn)的元兇之一不過本文卻是打破砂鍋問到底,論證了內(nèi)聯(lián)函數(shù)并不一定就會拖慢性能,過度的性能優(yōu)化反而會有損于應用性能。 showImg(https://segmentfault.com/img/remote/1460000011481413?w=1240&h=825); 前端每周...</p> <div id="77hnt5v" class="com_white-left-info"> <div id="xv7b7df" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-661.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/06/small_000000661.jpg" alt=""><span id="tvzr5xx" class="layui-hide64">CoderStudy</span></a> <time datetime="">2019-08-21 16:56</time> <span><i class="fa fa-commenting"></i>評論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="75nfzpv" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/110215.html"><b><em>Vue</em>.js應用<em>性能</em><em>優(yōu)化</em>:第一部分---介紹<em>性能</em><em>優(yōu)化</em>和懶加載</b></a></h2> <p class="ellipsis2 good">摘要:我的目標是使本系列成為關于應用程序性能的完整指南。代碼分割就是將應用程序分割成這些延遲加載的塊。總結延遲加載是提高應用程序性能并減少其大小的最佳方法之一。在本系列的下一部分中,我將向您展示如何使用和路由來分割應用程序代碼。 當移動優(yōu)先(mobile-first)的方式逐漸成為一種標準,而不確定的網(wǎng)絡環(huán)境因素應該始終是我們考慮的一點,因此保持讓應用程序快速加載變得越來越困難。在本系列文章...</p> <div id="h757xnl" class="com_white-left-info"> <div id="drzd7vv" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-1552.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/15/small_000001552.jpg" alt=""><span id="txbzvrb" class="layui-hide64">ZweiZhao</span></a> <time datetime="">2019-08-26 18:27</time> <span><i class="fa fa-commenting"></i>評論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="lbrxtft" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/109448.html"><b><em>Vue</em>.js應用<em>性能</em><em>優(yōu)化</em>:第二部分---路由懶加載和 Vendor bundle 反模式</b></a></h2> <p class="ellipsis2 good">摘要:現(xiàn)在,我們將更深入地研究,并學習用于分割應用程序最實用的模式。本系列文章基于對性能優(yōu)化過程的學習。路徑時才被下載。為了便于理解,文件名稱并不是由生成的真實名稱。接下來,我們將學習其他部分和單獨的組件也能夠從主文件分割出來并延遲加載。 在前一篇文章中,我們學習了什么是代碼分割,它是如何與 Webpack 一起工作的,以及如何在Vue應用程序中使用延遲加載。現(xiàn)在,我們將更深入地研究,并學習...</p> <div id="xbhlb5h" class="com_white-left-info"> <div id="l7pdrt5" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-643.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/06/small_000000643.jpg" alt=""><span id="7l57jx5" class="layui-hide64">0x584a</span></a> <time datetime="">2019-08-26 13:45</time> <span><i class="fa fa-commenting"></i>評論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="hvnt75x" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/109635.html"><b><em>Vue</em>.js應用<em>性能</em><em>優(yōu)化</em>:第三部分-延遲加載<em>Vue</em>x模塊</b></a></h2> <p class="ellipsis2 good">摘要:靜態(tài)模塊不能被取消注冊也不能延遲注冊,并且在初始化后不能更改靜態(tài)模塊的結構不是狀態(tài)。為此,我們將在路由對應的組件中加載模塊,而不是在中導入并注冊它。能代碼分割模塊是一個強大的工具。 在前一部分,我們學習了足夠強大的模式,可以顯著提高應用程序的性能 - 按每個路由分割代碼。雖然按路由分割代碼非常有用,但是在用戶訪問我們的站點后,仍然有很多代碼是不需要的。在本系列的這一部分中,我們將重點關...</p> <div id="tvxbv5p" class="com_white-left-info"> <div id="rhbptth" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-762.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/07/small_000000762.jpg" alt=""><span id="hjnzdbb" class="layui-hide64">charles_paul</span></a> <time datetime="">2019-08-26 13:50</time> <span><i class="fa fa-commenting"></i>評論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="lzhlff5" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://m.specialneedsforspecialkids.com/yun/92676.html"><b>前端每周清單第 48 期:Slack Webpack 構建<em>優(yōu)化</em>,CSS 命名規(guī)范與用戶追蹤,<em>Vue</em>.</b></a></h2> <p class="ellipsis2 good">摘要:發(fā)布是由團隊開源的,操作接口庫,已成為事實上的瀏覽器操作標準。本周正式發(fā)布,為我們帶來了,,支持自定義頭部與腳部,支持增強,兼容原生協(xié)議等特性變化。新特性介紹日前發(fā)布了大版本更新,引入了一系列的新特性與提升,本文即是對這些變化進行深入解讀。 showImg(https://segmentfault.com/img/remote/1460000012940044); 前端每周清單專注前端...</p> <div id="tf5dvjz" class="com_white-left-info"> <div id="nlr57jx" class="com_white-left-infol"> <a href="http://m.specialneedsforspecialkids.com/yun/u-886.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/08/small_000000886.jpg" alt=""><span id="ll55dff" class="layui-hide64">sean</span></a> <time datetime="">2019-08-22 13:57</time> <span><i class="fa fa-commenting"></i>評論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> </ul> </div> <div id="fv7j7tt" class="topicone-box-wangeditor"> <h3 class="top-com-title mb-64"><span>發(fā)表評論</span></h3> <div id="bztzdnz" class="xcp-publish-main flex_box_zd"> <div id="fpt77xj" class="unlogin-pinglun-box"> <a href="javascript:login()" class="grad">登陸后可評論</a> </div> </div> </div> <div id="fhjn5jv" class="site-box-content"> <div id="7bv5xz7" class="site-content-title"> <h3 class="top-com-title mb-64"><span>0條評論</span></h3> </div> <div id="zbtj77z" class="pages"></ul></div> </div> </div> <div id="7n5hz55" class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right"> <div id="lbvnhhr" class=""> <div id="nb557vt" class="com_layuiright-box user-msgbox"> <a href="http://m.specialneedsforspecialkids.com/yun/u-580.html"><img src="http://m.specialneedsforspecialkids.com/yun/data/avatar/000/00/05/small_000000580.jpg" alt=""></a> <h3><a href="http://m.specialneedsforspecialkids.com/yun/u-580.html" rel="nofollow">graf</a></h3> <h6>男<span>|</span>高級講師</h6> <div id="dbhprhj" class="flex_box_zd user-msgbox-atten"> <a href="javascript:attentto_user(580)" id="attenttouser_580" class="grad follow-btn notfollow attention">我要關注</a> <a href="javascript:login()" title="發(fā)私信" >我要私信</a> </div> <div id="bbrvbpd" class="user-msgbox-list flex_box_zd"> <h3 class="hpf">TA的文章</h3> <a href="http://m.specialneedsforspecialkids.com/yun/ut-580.html" class="box_hxjz">閱讀更多</a> </div> <ul class="user-msgbox-ul"> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/124668.html">web技術分享| LRU 緩存淘汰算法</a></h3> <p>閱讀 3847<span>·</span>2021-11-24 09:39</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/124123.html">自定義 OpenShift s2i 鏡像與模板——OracleJDK8</a></h3> <p>閱讀 3768<span>·</span>2021-11-22 12:07</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/122857.html">便宜騰訊云云服務器選擇推薦(優(yōu)先新客三年實惠套餐)</a></h3> <p>閱讀 1118<span>·</span>2021-11-04 16:10</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/119400.html">求C n m(從n個數(shù)中選m個數(shù),有多少種組合?問題)暴力—遞歸——回歸數(shù)學公式,三種方法,層層優(yōu)化</a></h3> <p>閱讀 814<span>·</span>2021-09-07 09:59</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/117417.html">Less 日常用法</a></h3> <p>閱讀 1910<span>·</span>2019-08-30 15:55</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/116812.html">埋坑一: vue中子組件調(diào)用兄弟組件方法</a></h3> <p>閱讀 949<span>·</span>2019-08-30 15:54</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/112917.html">Javascript圖片懶加載</a></h3> <p>閱讀 735<span>·</span>2019-08-29 14:06</p></li> <li><h3 class="ellipsis"><a href="http://m.specialneedsforspecialkids.com/yun/110354.html">MyBatis插件使用--分頁插件與性能攔截器</a></h3> <p>閱讀 2485<span>·</span>2019-08-27 10:54</p></li> </ul> </div> <!-- 文章詳情右側廣告--> <div id="7h7dhvz" class="com_layuiright-box"> <h6 class="top-com-title"><span>最新活動</span></h6> <div id="vtnr7tr" class="com_adbox"> <div id="vhz7pdt" class="layui-carousel" id="right-item"> <div carousel-item> <div> <a href="http://m.specialneedsforspecialkids.com/site/active/kuaijiesale.html?ytag=seo" rel="nofollow"> <img src="http://m.specialneedsforspecialkids.com/yun/data/attach/240625/2rTjEHmi.png" alt="云服務器"> </a> </div> <div> <a href="http://m.specialneedsforspecialkids.com/site/product/gpu.html" rel="nofollow"> <img src="http://m.specialneedsforspecialkids.com/yun/data/attach/240807/7NjZjdrd.png" alt="GPU云服務器"> </a> </div> </div> </div> </div> <!-- banner結束 --> <div id="rtlzfld" class="adhtml"> </div> <script> $(function(){ $.ajax({ type: "GET", url:"http://m.specialneedsforspecialkids.com/yun/ad/getad/1.html", cache: false, success: function(text){ $(".adhtml").html(text); } }); }) </script> </div> </div> </div> </div> </div> </section> <!-- wap拉出按鈕 --> <div id="h7njnlp" class="site-tree-mobile layui-hide"> <i class="layui-icon layui-icon-spread-left"></i> </div> <!-- wap遮罩層 --> <div id="xxphxnb" class="site-mobile-shade"></div> <!--付費閱讀 --> <div class="dfbrx5z" id="payread"> <div id="xjlpjjt" class="layui-form-item">閱讀需要支付1元查看</div> <div id="h7jd5rd" class="layui-form-item"><button class="btn-right">支付并查看</button></div> </div> <script> var prei=0; $(".site-seo-depict pre").each(function(){ var html=$(this).html().replace("<code>","").replace("</code>","").replace('<code class="javascript hljs" codemark="1">',''); $(this).attr('data-clipboard-text',html).attr("id","pre"+prei); $(this).html("").append("<code>"+html+"</code>"); prei++; }) $(".site-seo-depict img").each(function(){ if($(this).attr("src").indexOf('data:image/svg+xml')!= -1){ $(this).remove(); } }) $("LINK[href*='style-49037e4d27.css']").remove(); $("LINK[href*='markdown_views-d7a94ec6ab.css']").remove(); layui.use(['jquery', 'layer','code'], function(){ $("pre").attr("class","layui-code"); $("pre").attr("lay-title",""); $("pre").attr("lay-skin",""); layui.code(); $(".layui-code-h3 a").attr("class","copycode").html("復制代碼 ").attr("onclick","copycode(this)"); }); function copycode(target){ var id=$(target).parent().parent().attr("id"); var clipboard = new ClipboardJS("#"+id); clipboard.on('success', function(e) { e.clearSelection(); alert("復制成功") }); clipboard.on('error', function(e) { alert("復制失敗") }); } //$(".site-seo-depict").html($(".site-seo-depict").html().slice(0, -5)); </script> <link rel="stylesheet" type="text/css" href="http://m.specialneedsforspecialkids.com/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css"> <script src="http://m.specialneedsforspecialkids.com/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script> <script src="http://m.specialneedsforspecialkids.com/yun/static/js/clipboard.js"></script> <script>hljs.initHighlightingOnLoad();</script> <script> function setcode(){ var _html=''; document.querySelectorAll('pre code').forEach((block) => { var _tmptext=$.trim($(block).text()); if(_tmptext!=''){ _html=_html+_tmptext; console.log(_html); } }); } </script> <script> function payread(){ layer.open({ type: 1, title:"付費閱讀", shadeClose: true, content: $('#payread') }); } // 舉報 function jupao_tip(){ layer.open({ type: 1, title:false, shadeClose: true, content: $('#jubao') }); } $(".getcommentlist").click(function(){ var _id=$(this).attr("dataid"); var _tid=$(this).attr("datatid"); $("#articlecommentlist"+_id).toggleClass("hide"); var flag=$("#articlecommentlist"+_id).attr("dataflag"); if(flag==1){ flag=0; }else{ flag=1; //加載評論 loadarticlecommentlist(_id,_tid); } $("#articlecommentlist"+_id).attr("dataflag",flag); }) $(".add-comment-btn").click(function(){ var _id=$(this).attr("dataid"); $(".formcomment"+_id).toggleClass("hide"); }) $(".btn-sendartcomment").click(function(){ var _aid=$(this).attr("dataid"); var _tid=$(this).attr("datatid"); var _content=$.trim($(".commenttext"+_aid).val()); if(_content==''){ alert("評論內(nèi)容不能為空"); return false; } var touid=$("#btnsendcomment"+_aid).attr("touid"); if(touid==null){ touid=0; } addarticlecomment(_tid,_aid,_content,touid); }) $(".button_agree").click(function(){ var supportobj = $(this); var tid = $(this).attr("id"); $.ajax({ type: "GET", url:"http://m.specialneedsforspecialkids.com/yun/index.php?topic/ajaxhassupport/" + tid, cache: false, success: function(hassupport){ if (hassupport != '1'){ $.ajax({ type: "GET", cache:false, url: "http://m.specialneedsforspecialkids.com/yun/index.php?topic/ajaxaddsupport/" + tid, success: function(comments) { supportobj.find("span").html(comments+"人贊"); } }); }else{ alert("您已經(jīng)贊過"); } } }); }); function attenquestion(_tid,_rs){ $.ajax({ //提交數(shù)據(jù)的類型 POST GET type:"POST", //提交的網(wǎng)址 url:"http://m.specialneedsforspecialkids.com/yun/favorite/topicadd.html", //提交的數(shù)據(jù) data:{tid:_tid,rs:_rs}, //返回數(shù)據(jù)的格式 datatype: "json",//"xml", "html", "script", "json", "jsonp", "text". //在請求之前調(diào)用的函數(shù) beforeSend:function(){}, //成功返回之后調(diào)用的函數(shù) success:function(data){ var data=eval("("+data+")"); console.log(data) if(data.code==2000){ layer.msg(data.msg,function(){ if(data.rs==1){ //取消收藏 $(".layui-layer-tips").attr("data-tips","收藏文章"); $(".layui-layer-tips").html('<i class="fa fa-heart-o"></i>'); } if(data.rs==0){ //收藏成功 $(".layui-layer-tips").attr("data-tips","已收藏文章"); $(".layui-layer-tips").html('<i class="fa fa-heart"></i>') } }) }else{ layer.msg(data.msg) } } , //調(diào)用執(zhí)行后調(diào)用的函數(shù) complete: function(XMLHttpRequest, textStatus){ postadopt=true; }, //調(diào)用出錯執(zhí)行的函數(shù) error: function(){ //請求出錯處理 postadopt=false; } }); } </script> <footer> <div id="7777pbp" class="layui-container"> <div id="vnrlr55" class="flex_box_zd"> <div id="7rx57rd" class="left-footer"> <h6><a href="http://m.specialneedsforspecialkids.com/"><img src="http://m.specialneedsforspecialkids.com/yun/static/theme/ukd//images/logo.png" alt="UCloud (優(yōu)刻得科技股份有限公司)"></a></h6> <p>UCloud (優(yōu)刻得科技股份有限公司)是中立、安全的云計算服務平臺,堅持中立,不涉足客戶業(yè)務領域。公司自主研發(fā)IaaS、PaaS、大數(shù)據(jù)流通平臺、AI服務平臺等一系列云計算產(chǎn)品,并深入了解互聯(lián)網(wǎng)、傳統(tǒng)企業(yè)在不同場景下的業(yè)務需求,提供公有云、混合云、私有云、專有云在內(nèi)的綜合性行業(yè)解決方案。</p> </div> <div id="7vntvvv" class="right-footer layui-hidemd"> <ul class="flex_box_zd"> <li> <h6>UCloud與云服務</h6> <p><a href="http://m.specialneedsforspecialkids.com/site/about/intro/">公司介紹</a></p> <p><a >加入我們</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/ucan/onlineclass/">UCan線上公開課</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/solutions.html" >行業(yè)解決方案</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/pro-notice/">產(chǎn)品動態(tài)</a></p> </li> <li> <h6>友情鏈接</h6> <p><a >GPU算力平臺</a></p> <p><a >UCloud私有云</a></p> <p><a >SurferCloud</a></p> <p><a >工廠仿真軟件</a></p> <p><a >Pinex</a></p> <p><a >AI繪畫</a></p> </li> <li> <h6>社區(qū)欄目</h6> <p><a href="http://m.specialneedsforspecialkids.com/yun/column/index.html">專欄文章</a></p> <p><a href="http://m.specialneedsforspecialkids.com/yun/udata/">專題地圖</a></p> </li> <li> <h6>常見問題</h6> <p><a href="http://m.specialneedsforspecialkids.com/site/ucsafe/notice.html" >安全中心</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/about/news/recent/" >新聞動態(tài)</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/about/news/report/">媒體動態(tài)</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/cases.html">客戶案例</a></p> <p><a href="http://m.specialneedsforspecialkids.com/site/notice/">公告</a></p> </li> <li> <span><img src="https://static.ucloud.cn/7a4b6983f4b94bcb97380adc5d073865.png" alt="優(yōu)刻得"></span> <p>掃掃了解更多</p></div> </div> <div id="jjnbfvf" class="copyright">Copyright ? 2012-2023 UCloud 優(yōu)刻得科技股份有限公司<i>|</i><a rel="nofollow" >滬公網(wǎng)安備 31011002000058號</a><i>|</i><a rel="nofollow" ></a> 滬ICP備12020087號-3</a><i>|</i> <script type="text/javascript" src="https://gyfk12.kuaishang.cn/bs/ks.j?cI=197688&fI=125915" charset="utf-8"></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?290c2650b305fc9fff0dbdcafe48b59d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-DZSMXQ3P9N"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-DZSMXQ3P9N'); </script> <script> (function(){ var el = document.createElement("script"); el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?99f50ea166557aed914eb4a66a7a70a4709cbb98a54ecb576877d99556fb4bfc3d72cd14f8a76432df3935ab77ec54f830517b3cb210f7fd334f50ccb772134a"; el.id = "ttzz"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(el, s); })(window) </script></div> </div> </footer> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://m.specialneedsforspecialkids.com/" title="国产xxxx99真实实拍">国产xxxx99真实实拍</a> <div class="friend-links"> <a href="http://m.cp97744.com/">国产一区电影</a> </div> </div> </footer> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body><div id="tlhlb" class="pl_css_ganrao" style="display: none;"><dl id="tlhlb"><pre id="tlhlb"><track id="tlhlb"><tt id="tlhlb"></tt></track></pre></dl><th id="tlhlb"><b id="tlhlb"></b></th><b id="tlhlb"><progress id="tlhlb"><acronym id="tlhlb"><style id="tlhlb"></style></acronym></progress></b><var id="tlhlb"></var><style id="tlhlb"><nobr id="tlhlb"></nobr></style><div id="tlhlb"><strong id="tlhlb"></strong></div><small id="tlhlb"><output id="tlhlb"></output></small><legend id="tlhlb"><sup id="tlhlb"></sup></legend><thead id="tlhlb"><dfn id="tlhlb"><u id="tlhlb"><rp id="tlhlb"></rp></u></dfn></thead><nobr id="tlhlb"><b id="tlhlb"><ins id="tlhlb"><pre id="tlhlb"></pre></ins></b></nobr><span id="tlhlb"><i id="tlhlb"><listing id="tlhlb"><dfn id="tlhlb"></dfn></listing></i></span><u id="tlhlb"></u><video id="tlhlb"></video><listing id="tlhlb"><u id="tlhlb"><mark id="tlhlb"><form id="tlhlb"></form></mark></u></listing><video id="tlhlb"><em id="tlhlb"></em></video><thead id="tlhlb"></thead><legend id="tlhlb"><listing id="tlhlb"><dfn id="tlhlb"><mark id="tlhlb"></mark></dfn></listing></legend><ins id="tlhlb"><address id="tlhlb"></address></ins><strong id="tlhlb"><optgroup id="tlhlb"></optgroup></strong><address id="tlhlb"><strike id="tlhlb"><strong id="tlhlb"><optgroup id="tlhlb"></optgroup></strong></strike></address><mark id="tlhlb"></mark><dfn id="tlhlb"></dfn><p id="tlhlb"><strong id="tlhlb"></strong></p><legend id="tlhlb"><sup id="tlhlb"></sup></legend><ins id="tlhlb"><address id="tlhlb"></address></ins><span id="tlhlb"><legend id="tlhlb"></legend></span><strike id="tlhlb"></strike><ins id="tlhlb"></ins><sup id="tlhlb"><label id="tlhlb"></label></sup><legend id="tlhlb"><label id="tlhlb"></label></legend><form id="tlhlb"></form><form id="tlhlb"></form><dfn id="tlhlb"><u id="tlhlb"><ruby id="tlhlb"><form id="tlhlb"></form></ruby></u></dfn><form id="tlhlb"><output id="tlhlb"></output></form><b id="tlhlb"><meter id="tlhlb"><pre id="tlhlb"><p id="tlhlb"></p></pre></meter></b><small id="tlhlb"></small><u id="tlhlb"></u><pre id="tlhlb"><video id="tlhlb"><em id="tlhlb"><div id="tlhlb"></div></em></video></pre><strong id="tlhlb"><rp id="tlhlb"><font id="tlhlb"><progress id="tlhlb"></progress></font></rp></strong><strike id="tlhlb"><strong id="tlhlb"><form id="tlhlb"><video id="tlhlb"></video></form></strong></strike><strong id="tlhlb"><ruby id="tlhlb"><thead id="tlhlb"><progress id="tlhlb"></progress></thead></ruby></strong><strong id="tlhlb"><optgroup id="tlhlb"><output id="tlhlb"><em id="tlhlb"></em></output></optgroup></strong><address id="tlhlb"><strike id="tlhlb"><strong id="tlhlb"><pre id="tlhlb"></pre></strong></strike></address><optgroup id="tlhlb"><video id="tlhlb"></video></optgroup><form id="tlhlb"><ins id="tlhlb"></ins></form><thead id="tlhlb"><label id="tlhlb"></label></thead><big id="tlhlb"><dl id="tlhlb"><pre id="tlhlb"><dfn id="tlhlb"></dfn></pre></dl></big><span id="tlhlb"><legend id="tlhlb"></legend></span><nobr id="tlhlb"><small id="tlhlb"><ins id="tlhlb"><pre id="tlhlb"></pre></ins></small></nobr><i id="tlhlb"></i><i id="tlhlb"></i><u id="tlhlb"><mark id="tlhlb"></mark></u><track id="tlhlb"><dfn id="tlhlb"></dfn></track><thead id="tlhlb"><dfn id="tlhlb"><u id="tlhlb"><ruby id="tlhlb"></ruby></u></dfn></thead><strong id="tlhlb"><rp id="tlhlb"><font id="tlhlb"><meter id="tlhlb"></meter></font></rp></strong><pre id="tlhlb"></pre><dfn id="tlhlb"><u id="tlhlb"><mark id="tlhlb"><form id="tlhlb"></form></mark></u></dfn><sub id="tlhlb"><p id="tlhlb"><var id="tlhlb"><form id="tlhlb"></form></var></p></sub><strike id="tlhlb"><var id="tlhlb"><small id="tlhlb"><output id="tlhlb"></output></small></var></strike><video id="tlhlb"><address id="tlhlb"><strike id="tlhlb"><strong id="tlhlb"></strong></strike></address></video><span id="tlhlb"></span><label id="tlhlb"><rp id="tlhlb"><font id="tlhlb"><progress id="tlhlb"></progress></font></rp></label><dfn id="tlhlb"></dfn><label id="tlhlb"></label><track id="tlhlb"></track><style id="tlhlb"></style><pre id="tlhlb"><video id="tlhlb"></video></pre><video id="tlhlb"><tt id="tlhlb"><big id="tlhlb"><dl id="tlhlb"></dl></big></tt></video><em id="tlhlb"></em><rp id="tlhlb"><thead id="tlhlb"><thead id="tlhlb"><sup id="tlhlb"></sup></thead></thead></rp><big id="tlhlb"><strong id="tlhlb"><optgroup id="tlhlb"><video id="tlhlb"></video></optgroup></strong></big><sub id="tlhlb"><p id="tlhlb"><var id="tlhlb"><form id="tlhlb"></form></var></p></sub><legend id="tlhlb"><dfn id="tlhlb"><u id="tlhlb"><ruby id="tlhlb"></ruby></u></dfn></legend><ruby id="tlhlb"><thead id="tlhlb"><legend id="tlhlb"><acronym id="tlhlb"></acronym></legend></thead></ruby><th id="tlhlb"><b id="tlhlb"></b></th><i id="tlhlb"></i><strike id="tlhlb"></strike><track id="tlhlb"></track><dl id="tlhlb"><optgroup id="tlhlb"><video id="tlhlb"><em id="tlhlb"></em></video></optgroup></dl><style id="tlhlb"><nobr id="tlhlb"></nobr></style><dfn id="tlhlb"></dfn><font id="tlhlb"><progress id="tlhlb"></progress></font><dfn id="tlhlb"></dfn><track id="tlhlb"><tt id="tlhlb"></tt></track><em id="tlhlb"><div id="tlhlb"></div></em><small id="tlhlb"><ins id="tlhlb"><address id="tlhlb"><strike id="tlhlb"></strike></address></ins></small><pre id="tlhlb"><video id="tlhlb"><sub id="tlhlb"><div id="tlhlb"></div></sub></video></pre><p id="tlhlb"><var id="tlhlb"><form id="tlhlb"><output id="tlhlb"></output></form></var></p><optgroup id="tlhlb"><output id="tlhlb"></output></optgroup><rp id="tlhlb"><thead id="tlhlb"><thead id="tlhlb"><label id="tlhlb"></label></thead></thead></rp><font id="tlhlb"><progress id="tlhlb"></progress></font><u id="tlhlb"><mark id="tlhlb"></mark></u><big id="tlhlb"><ol id="tlhlb"></ol></big><var id="tlhlb"><small id="tlhlb"><ins id="tlhlb"><address id="tlhlb"></address></ins></small></var><small id="tlhlb"></small><address id="tlhlb"><p id="tlhlb"><var id="tlhlb"><small id="tlhlb"></small></var></p></address><menuitem id="tlhlb"><dl id="tlhlb"><i id="tlhlb"><dfn id="tlhlb"></dfn></i></dl></menuitem><form id="tlhlb"></form><address id="tlhlb"><p id="tlhlb"></p></address><em id="tlhlb"></em><style id="tlhlb"></style><meter id="tlhlb"></meter><output id="tlhlb"><sub id="tlhlb"><div id="tlhlb"><ol id="tlhlb"></ol></div></sub></output><thead id="tlhlb"><label id="tlhlb"><label id="tlhlb"><th id="tlhlb"></th></label></label></thead><strong id="tlhlb"><ruby id="tlhlb"></ruby></strong><thead id="tlhlb"></thead><label id="tlhlb"><nobr id="tlhlb"></nobr></label><output id="tlhlb"></output><div id="tlhlb"><strong id="tlhlb"><optgroup id="tlhlb"><track id="tlhlb"></track></optgroup></strong></div><var id="tlhlb"><form id="tlhlb"><output id="tlhlb"><em id="tlhlb"></em></output></form></var><style id="tlhlb"></style><thead id="tlhlb"><label id="tlhlb"></label></thead><sub id="tlhlb"><strike id="tlhlb"><strong id="tlhlb"><optgroup id="tlhlb"></optgroup></strong></strike></sub><font id="tlhlb"></font><b id="tlhlb"><ins id="tlhlb"></ins></b><i id="tlhlb"><listing id="tlhlb"></listing></i><legend id="tlhlb"><dfn id="tlhlb"><dfn id="tlhlb"><mark id="tlhlb"></mark></dfn></dfn></legend><pre id="tlhlb"><style id="tlhlb"></style></pre><dfn id="tlhlb"></dfn><thead id="tlhlb"></thead><div id="tlhlb"><ol id="tlhlb"></ol></div><mark id="tlhlb"><span id="tlhlb"></span></mark><output id="tlhlb"><sub id="tlhlb"></sub></output><dfn id="tlhlb"><u id="tlhlb"><ruby id="tlhlb"><form id="tlhlb"></form></ruby></u></dfn><track id="tlhlb"><tt id="tlhlb"></tt></track><strong id="tlhlb"><optgroup id="tlhlb"><output id="tlhlb"><address id="tlhlb"></address></output></optgroup></strong><sub id="tlhlb"></sub><strike id="tlhlb"><strong id="tlhlb"><optgroup id="tlhlb"><track id="tlhlb"></track></optgroup></strong></strike><span id="tlhlb"></span><legend id="tlhlb"><dfn id="tlhlb"></dfn></legend><legend id="tlhlb"><label id="tlhlb"></label></legend><label id="tlhlb"><th id="tlhlb"><b id="tlhlb"><progress id="tlhlb"></progress></b></th></label><style id="tlhlb"><th id="tlhlb"></th></style><div id="tlhlb"><ol id="tlhlb"></ol></div><sub id="tlhlb"></sub><listing id="tlhlb"></listing><ruby id="tlhlb"><thead id="tlhlb"></thead></ruby><small id="tlhlb"></small><div id="tlhlb"><ol id="tlhlb"></ol></div><strong id="tlhlb"></strong><label id="tlhlb"><th id="tlhlb"><b id="tlhlb"><meter id="tlhlb"></meter></b></th></label><sub id="tlhlb"></sub><form id="tlhlb"></form><dfn id="tlhlb"><mark id="tlhlb"><span id="tlhlb"><legend id="tlhlb"></legend></span></mark></dfn><mark id="tlhlb"></mark><legend id="tlhlb"></legend><small id="tlhlb"></small><p id="tlhlb"><var id="tlhlb"></var></p><pre id="tlhlb"><p id="tlhlb"></p></pre><div id="tlhlb"><strong id="tlhlb"></strong></div></div> <script src="http://m.specialneedsforspecialkids.com/yun/static/theme/ukd/js/common.js"></script> <<script type="text/javascript"> $(".site-seo-depict *,.site-content-answer-body *,.site-body-depict *").css("max-width","100%"); </script> </html>