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

資訊專欄INFORMATION COLUMN

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

graf / 1007人閱讀

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

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

前言

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

性能瓶頸在哪里?

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


     

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

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

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

第一種:不使用根組件

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


    
    
    

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

第二種:異步組件

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


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

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

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

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

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 )
    }
})

看起來很美好,但這種方式也有問題,考慮下這樣的結(jié)構(gòu):


    
    
    
    
    
    

還是按照上面的異步組件做法,這時(shí)候就需要考慮把哪些組件設(shè)成異步的了。如果把A、B、C都設(shè)成異步的,那結(jié)果就是3個(gè)</b>會(huì)首先渲染出來,頁面渲染的過程在用戶看來非常奇怪,并不是預(yù)期中的從上到下順序渲染。</p> <b>第三種:v-if 和 terminal指令</b> <p>這是我推薦的一種做法,簡單有效。還是那個(gè)結(jié)構(gòu),我們給要延遲渲染的組件加上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>這個(gè)示例寫起來略顯啰嗦,但它已經(jīng)實(shí)現(xiàn)了我們想要的順序渲染的效果。頁面會(huì)在A組件初始化完后顯示,然后再按順序渲染其余的組件,整個(gè)頁面渲染方式看起來是流式的。</p> <p>有些人可能會(huì)擔(dān)心<b>v-if</b>存在一個(gè)編譯/卸載過程,會(huì)有性能影響。但這里并不需要擔(dān)心,因?yàn)?b>v-if</b>是惰性的,只有當(dāng)?shù)谝淮沃禐閠rue時(shí)才會(huì)開始初始化。</p> <p>這種寫法看起來很麻煩,如果我們能實(shí)現(xiàn)一個(gè)類似<b>v-if</b>的組件,然后直接指定多少秒后渲染,那就更好了,例如:</p> <pre><app> <A></A> <B v-lazy="0"></B> <C v-lazy="100"></C> </app></pre> <p>一個(gè)簡單的指令即可,不需要js端任何配合,并且可以用在普通dom上面,Nice!</p> <p>在vue里,類似<b>v-if</b>和<b>v-for</b>這種是terminal指令,會(huì)在指令內(nèi)部編譯組件。如果你想要自己實(shí)現(xiàn)一個(gè)terminal指令,需要加上<b>terminal: true</b>,例如:</p> <pre>Vue.directive("lazy", { terminal: true, bind () {}, update () {}, unbind () {} });</pre> <p>這是vue在1.0.19+新增的功能,由于比較冷門,文檔也沒有特別詳細(xì)的敘述,最好的方式是參照著<b>v-if</b>和<b>v-for</b>的源碼來寫。</p> <p>我已經(jīng)為此封裝了一個(gè)terminal指令,你可以直接使用:<br>https://github.com/Coffcer/vu...</p> <b>其他的優(yōu)化點(diǎn)</b> <p>除了組件上的優(yōu)化,我們還可以對(duì)vue的依賴改造入手。初始化時(shí),vue會(huì)對(duì)data做getter、setter改造,在現(xiàn)代瀏覽器里,這個(gè)過程實(shí)際上挺快的,但仍然有優(yōu)化空間。</p> <p><b>Object.freeze()</b>是ES5新增的API,用來凍結(jié)一個(gè)對(duì)象,禁止對(duì)象被修改。vue 1.0.18+以后,不會(huì)對(duì)已凍結(jié)的data做getter、setter轉(zhuǎn)換。</p> <p>如果你確保某個(gè)data不需要跟蹤依賴,可以使用Object.freeze將其凍結(jié)。但請(qǐng)注意,被凍結(jié)的是對(duì)象的值,你仍然可以將引用整個(gè)替換調(diào)??聪旅胬樱?/p> <pre><p v-for="item in list">{{ item.value }}</p></pre> <pre>new Vue({ data: { // vue不會(huì)對(duì)list里的object做getter、setter綁定 list: Object.freeze([ { value: 1 }, { value: 2 } ]) }, created () { // 界面不會(huì)有響應(yīng) this.list[0].value = 100; // 下面兩種做法,界面都會(huì)響應(yīng) this.list = [ { value: 100 }, { value: 200 } ]; this.list = Object.freeze([ { value: 100 }, { value: 200 } ]); } })</pre> <b>后記</b> <p>vue 1.0+ 的組件其實(shí)不算輕量,初始化一個(gè)組件包括依賴收集、轉(zhuǎn)換等過程,但其實(shí)有些是可以放在編譯時(shí)提前完成的。vue 2.0+ 已經(jīng)在這方面做了不少的改進(jìn):分離了編譯時(shí)和運(yùn)行時(shí)、提供函數(shù)組件等,可以預(yù)見,vue 2.0的性能將有很大的提升。</p> <p>v-lazy-component: https://github.com/Coffcer/vu...</p> </div> <div id="s68emuk" class="mt-64 tags-seach" > <div id="8mic4q8" class="tags-info"> <a style="width:120px;" title="GPU云服務(wù)器" href="http://specialneedsforspecialkids.com/site/product/gpu.html">GPU云服務(wù)器</a> <a style="width:120px;" title="云服務(wù)器" href="http://specialneedsforspecialkids.com/site/active/kuaijiesale.html?ytag=seo">云服務(wù)器</a> <a style="width:120px;" title="性能優(yōu)化" href="http://specialneedsforspecialkids.com/yun/tag/xingnengyouhua/">性能優(yōu)化</a> <a style="width:120px;" title="優(yōu)化系統(tǒng)性能" href="http://specialneedsforspecialkids.com/yun/tag/youhuaxitongxingneng/">優(yōu)化系統(tǒng)性能</a> <a style="width:120px;" title="網(wǎng)站性能優(yōu)化" href="http://specialneedsforspecialkids.com/yun/tag/wangzhanxingnengyouhua/">網(wǎng)站性能優(yōu)化</a> <a style="width:120px;" title="頁面性能優(yōu)化" href="http://specialneedsforspecialkids.com/yun/tag/yemianxingnengyouhua/">頁面性能優(yōu)化</a> </div> </div> <div id="4my4wc6" class="entry-copyright mb-30"> <p class="mb-15"> 文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。</p> <p>轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/90975.html</p> </div> <ul class="pre-next-page"> <li id="kkwme4o" class="ellipsis"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/90974.html">上一篇:前端單元測(cè)試之Karma環(huán)境搭建</a></li> <li id="y0c4eia" class="ellipsis"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/90976.html">下一篇:一個(gè)關(guān)于回調(diào)的故事</a></li> </ul> </div> <div id="qygkkiw" class="about_topicone-mid"> <h3 class="top-com-title mb-0"><span data-id="0">相關(guān)文章</span></h3> <ul class="com_white-left-mid atricle-list-box"> <li> <div id="eyqegee" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/88926.html"><b>前端每周清單第 34 期:<em>Vue</em> 現(xiàn)狀盤點(diǎn)與 3.0 展望,React 代碼遷移與<em>優(yōu)化</em>,圖片<em>優(yōu)化</em>詳論</b></a></h2> <p class="ellipsis2 good">摘要:工程實(shí)踐立足實(shí)踐,提示實(shí)際水平內(nèi)聯(lián)函數(shù)與性能很多關(guān)于性能優(yōu)化的文章都會(huì)談及內(nèi)聯(lián)函數(shù),其也是常見的被詬病為拖慢性能表現(xiàn)的元兇之一不過本文卻是打破砂鍋問到底,論證了內(nèi)聯(lián)函數(shù)并不一定就會(huì)拖慢性能,過度的性能優(yōu)化反而會(huì)有損于應(yīng)用性能。 showImg(https://segmentfault.com/img/remote/1460000011481413?w=1240&h=825); 前端每周...</p> <div id="q6ussam" class="com_white-left-info"> <div id="sma2g62" class="com_white-left-infol"> <a href="http://specialneedsforspecialkids.com/yun/u-661.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/06/small_000000661.jpg" alt=""><span id="acc64qm" class="layui-hide64">CoderStudy</span></a> <time datetime="">2019-08-21 16:56</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="u00ywow" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/110215.html"><b><em>Vue</em>.js應(yīng)用<em>性能</em><em>優(yōu)化</em>:第一部分---介紹<em>性能</em><em>優(yōu)化</em>和懶加載</b></a></h2> <p class="ellipsis2 good">摘要:我的目標(biāo)是使本系列成為關(guān)于應(yīng)用程序性能的完整指南。代碼分割就是將應(yīng)用程序分割成這些延遲加載的塊。總結(jié)延遲加載是提高應(yīng)用程序性能并減少其大小的最佳方法之一。在本系列的下一部分中,我將向您展示如何使用和路由來分割應(yīng)用程序代碼。 當(dāng)移動(dòng)優(yōu)先(mobile-first)的方式逐漸成為一種標(biāo)準(zhǔn),而不確定的網(wǎng)絡(luò)環(huán)境因素應(yīng)該始終是我們考慮的一點(diǎn),因此保持讓應(yīng)用程序快速加載變得越來越困難。在本系列文章...</p> <div id="aiuekow" class="com_white-left-info"> <div id="sk2eagy" class="com_white-left-infol"> <a href="http://specialneedsforspecialkids.com/yun/u-1552.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/15/small_000001552.jpg" alt=""><span id="oioyw2a" class="layui-hide64">ZweiZhao</span></a> <time datetime="">2019-08-26 18:27</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="gygsocu" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/109448.html"><b><em>Vue</em>.js應(yīng)用<em>性能</em><em>優(yōu)化</em>:第二部分---路由懶加載和 Vendor bundle 反模式</b></a></h2> <p class="ellipsis2 good">摘要:現(xiàn)在,我們將更深入地研究,并學(xué)習(xí)用于分割應(yīng)用程序最實(shí)用的模式。本系列文章基于對(duì)性能優(yōu)化過程的學(xué)習(xí)。路徑時(shí)才被下載。為了便于理解,文件名稱并不是由生成的真實(shí)名稱。接下來,我們將學(xué)習(xí)其他部分和單獨(dú)的組件也能夠從主文件分割出來并延遲加載。 在前一篇文章中,我們學(xué)習(xí)了什么是代碼分割,它是如何與 Webpack 一起工作的,以及如何在Vue應(yīng)用程序中使用延遲加載?,F(xiàn)在,我們將更深入地研究,并學(xué)習(xí)...</p> <div id="io0qyog" class="com_white-left-info"> <div id="q2guuc2" class="com_white-left-infol"> <a href="http://specialneedsforspecialkids.com/yun/u-643.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/06/small_000000643.jpg" alt=""><span id="2s2om0c" class="layui-hide64">0x584a</span></a> <time datetime="">2019-08-26 13:45</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="yc2aqic" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/109635.html"><b><em>Vue</em>.js應(yīng)用<em>性能</em><em>優(yōu)化</em>:第三部分-延遲加載<em>Vue</em>x模塊</b></a></h2> <p class="ellipsis2 good">摘要:靜態(tài)模塊不能被取消注冊(cè)也不能延遲注冊(cè),并且在初始化后不能更改靜態(tài)模塊的結(jié)構(gòu)不是狀態(tài)。為此,我們將在路由對(duì)應(yīng)的組件中加載模塊,而不是在中導(dǎo)入并注冊(cè)它。能代碼分割模塊是一個(gè)強(qiáng)大的工具。 在前一部分,我們學(xué)習(xí)了足夠強(qiáng)大的模式,可以顯著提高應(yīng)用程序的性能 - 按每個(gè)路由分割代碼。雖然按路由分割代碼非常有用,但是在用戶訪問我們的站點(diǎn)后,仍然有很多代碼是不需要的。在本系列的這一部分中,我們將重點(diǎn)關(guān)...</p> <div id="si0eskq" class="com_white-left-info"> <div id="eiwusoi" class="com_white-left-infol"> <a href="http://specialneedsforspecialkids.com/yun/u-762.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/07/small_000000762.jpg" alt=""><span id="4aygmqm" class="layui-hide64">charles_paul</span></a> <time datetime="">2019-08-26 13:50</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="ogamygo" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://specialneedsforspecialkids.com/yun/92676.html"><b>前端每周清單第 48 期:Slack Webpack 構(gòu)建<em>優(yōu)化</em>,CSS 命名規(guī)范與用戶追蹤,<em>Vue</em>.</b></a></h2> <p class="ellipsis2 good">摘要:發(fā)布是由團(tuán)隊(duì)開源的,操作接口庫,已成為事實(shí)上的瀏覽器操作標(biāo)準(zhǔn)。本周正式發(fā)布,為我們帶來了,,支持自定義頭部與腳部,支持增強(qiáng),兼容原生協(xié)議等特性變化。新特性介紹日前發(fā)布了大版本更新,引入了一系列的新特性與提升,本文即是對(duì)這些變化進(jìn)行深入解讀。 showImg(https://segmentfault.com/img/remote/1460000012940044); 前端每周清單專注前端...</p> <div id="oig0os2" class="com_white-left-info"> <div id="mgaw0o0" class="com_white-left-infol"> <a href="http://specialneedsforspecialkids.com/yun/u-886.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/08/small_000000886.jpg" alt=""><span id="ieo0gw0" class="layui-hide64">sean</span></a> <time datetime="">2019-08-22 13:57</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> </ul> </div> <div id="ew0ommc" class="topicone-box-wangeditor"> <h3 class="top-com-title mb-64"><span>發(fā)表評(píng)論</span></h3> <div id="m00c2g0" class="xcp-publish-main flex_box_zd"> <div id="aqiuuck" class="unlogin-pinglun-box"> <a href="javascript:login()" class="grad">登陸后可評(píng)論</a> </div> </div> </div> <div id="2akuuq2" class="site-box-content"> <div id="2qe00mu" class="site-content-title"> <h3 class="top-com-title mb-64"><span>0條評(píng)論</span></h3> </div> <div id="msyyewc" class="pages"></ul></div> </div> </div> <div id="uoigsi0" class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right"> <div id="gywqkye" class=""> <div id="2oisom0" class="com_layuiright-box user-msgbox"> <a href="http://specialneedsforspecialkids.com/yun/u-580.html"><img src="http://specialneedsforspecialkids.com/yun/data/avatar/000/00/05/small_000000580.jpg" alt=""></a> <h3><a href="http://specialneedsforspecialkids.com/yun/u-580.html" rel="nofollow">graf</a></h3> <h6>男<span>|</span>高級(jí)講師</h6> <div id="keawuc0" class="flex_box_zd user-msgbox-atten"> <a href="javascript:attentto_user(580)" id="attenttouser_580" class="grad follow-btn notfollow attention">我要關(guān)注</a> <a href="javascript:login()" title="發(fā)私信" >我要私信</a> </div> <div id="2qcwssk" class="user-msgbox-list flex_box_zd"> <h3 class="hpf">TA的文章</h3> <a href="http://specialneedsforspecialkids.com/yun/ut-580.html" class="box_hxjz">閱讀更多</a> </div> <ul class="user-msgbox-ul"> <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/124668.html">web技術(shù)分享| LRU 緩存淘汰算法</a></h3> <p>閱讀 3835<span>·</span>2021-11-24 09:39</p></li> <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/124123.html">自定義 OpenShift s2i 鏡像與模板——OracleJDK8</a></h3> <p>閱讀 3753<span>·</span>2021-11-22 12:07</p></li> <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/122857.html">便宜騰訊云云服務(wù)器選擇推薦(優(yōu)先新客三年實(shí)惠套餐)</a></h3> <p>閱讀 1105<span>·</span>2021-11-04 16:10</p></li> <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/119400.html">求C n m(從n個(gè)數(shù)中選m個(gè)數(shù),有多少種組合?問題)暴力—遞歸——回歸數(shù)學(xué)公式,三種方法,層層優(yōu)化</a></h3> <p>閱讀 798<span>·</span>2021-09-07 09:59</p></li> <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/117417.html">Less 日常用法</a></h3> <p>閱讀 1902<span>·</span>2019-08-30 15:55</p></li> <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/116812.html">埋坑一: vue中子組件調(diào)用兄弟組件方法</a></h3> <p>閱讀 935<span>·</span>2019-08-30 15:54</p></li> <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/112917.html">Javascript圖片懶加載</a></h3> <p>閱讀 724<span>·</span>2019-08-29 14:06</p></li> <li><h3 class="ellipsis"><a href="http://specialneedsforspecialkids.com/yun/110354.html">MyBatis插件使用--分頁插件與性能攔截器</a></h3> <p>閱讀 2475<span>·</span>2019-08-27 10:54</p></li> </ul> </div> <!-- 文章詳情右側(cè)廣告--> <div id="oiqyuwg" class="com_layuiright-box"> <h6 class="top-com-title"><span>最新活動(dòng)</span></h6> <div id="ssgigmi" class="com_adbox"> <div id="s2k02ek" class="layui-carousel" id="right-item"> <div carousel-item> <div> <a href="http://specialneedsforspecialkids.com/site/active/kuaijiesale.html?ytag=seo" rel="nofollow"> <img src="http://specialneedsforspecialkids.com/yun/data/attach/240625/2rTjEHmi.png" alt="云服務(wù)器"> </a> </div> <div> <a href="http://specialneedsforspecialkids.com/site/product/gpu.html" rel="nofollow"> <img src="http://specialneedsforspecialkids.com/yun/data/attach/240807/7NjZjdrd.png" alt="GPU云服務(wù)器"> </a> </div> </div> </div> </div> <!-- banner結(jié)束 --> <div id="ekse0uy" class="adhtml"> </div> <script> $(function(){ $.ajax({ type: "GET", url:"http://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="sok0sye" class="site-tree-mobile layui-hide"> <i class="layui-icon layui-icon-spread-left"></i> </div> <!-- wap遮罩層 --> <div id="m20wg2m" class="site-mobile-shade"></div> <!--付費(fèi)閱讀 --> <div class="w2c2wou" id="payread"> <div id="cweesio" class="layui-form-item">閱讀需要支付1元查看</div> <div id="22s0gm2" 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("復(fù)制代碼 ").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("復(fù)制成功") }); clipboard.on('error', function(e) { alert("復(fù)制失敗") }); } //$(".site-seo-depict").html($(".site-seo-depict").html().slice(0, -5)); </script> <link rel="stylesheet" type="text/css" href="http://specialneedsforspecialkids.com/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css"> <script src="http://specialneedsforspecialkids.com/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script> <script src="http://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:"付費(fèi)閱讀", shadeClose: true, content: $('#payread') }); } // 舉報(bào) 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; //加載評(píng)論 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("評(píng)論內(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://specialneedsforspecialkids.com/yun/index.php?topic/ajaxhassupport/" + tid, cache: false, success: function(hassupport){ if (hassupport != '1'){ $.ajax({ type: "GET", cache:false, url: "http://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://specialneedsforspecialkids.com/yun/favorite/topicadd.html", //提交的數(shù)據(jù) data:{tid:_tid,rs:_rs}, //返回?cái)?shù)據(jù)的格式 datatype: "json",//"xml", "html", "script", "json", "jsonp", "text". //在請(qǐng)求之前調(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)用出錯(cuò)執(zhí)行的函數(shù) error: function(){ //請(qǐng)求出錯(cuò)處理 postadopt=false; } }); } </script> <footer> <div id="i20m0c0" class="layui-container"> <div id="kiecmgo" class="flex_box_zd"> <div id="ewke2ko" class="left-footer"> <h6><a href="http://specialneedsforspecialkids.com/"><img src="http://specialneedsforspecialkids.com/yun/static/theme/ukd//images/logo.png" alt="UCloud (優(yōu)刻得科技股份有限公司)"></a></h6> <p>UCloud (優(yōu)刻得科技股份有限公司)是中立、安全的云計(jì)算服務(wù)平臺(tái),堅(jiān)持中立,不涉足客戶業(yè)務(wù)領(lǐng)域。公司自主研發(fā)IaaS、PaaS、大數(shù)據(jù)流通平臺(tái)、AI服務(wù)平臺(tái)等一系列云計(jì)算產(chǎn)品,并深入了解互聯(lián)網(wǎng)、傳統(tǒng)企業(yè)在不同場(chǎng)景下的業(yè)務(wù)需求,提供公有云、混合云、私有云、專有云在內(nèi)的綜合性行業(yè)解決方案。</p> </div> <div id="ok00osg" class="right-footer layui-hidemd"> <ul class="flex_box_zd"> <li> <h6>UCloud與云服務(wù)</h6> <p><a href="http://specialneedsforspecialkids.com/site/about/intro/">公司介紹</a></p> <p><a >加入我們</a></p> <p><a href="http://specialneedsforspecialkids.com/site/ucan/onlineclass/">UCan線上公開課</a></p> <p><a href="http://specialneedsforspecialkids.com/site/solutions.html" >行業(yè)解決方案</a></p> <p><a href="http://specialneedsforspecialkids.com/site/pro-notice/">產(chǎn)品動(dòng)態(tài)</a></p> </li> <li> <h6>友情鏈接</h6> <p><a >GPU算力平臺(tái)</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://specialneedsforspecialkids.com/yun/column/index.html">專欄文章</a></p> <p><a href="http://specialneedsforspecialkids.com/yun/udata/">專題地圖</a></p> </li> <li> <h6>常見問題</h6> <p><a href="http://specialneedsforspecialkids.com/site/ucsafe/notice.html" >安全中心</a></p> <p><a href="http://specialneedsforspecialkids.com/site/about/news/recent/" >新聞動(dòng)態(tài)</a></p> <p><a href="http://specialneedsforspecialkids.com/site/about/news/report/">媒體動(dòng)態(tài)</a></p> <p><a href="http://specialneedsforspecialkids.com/site/cases.html">客戶案例</a></p> <p><a href="http://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="cwce6si" class="copyright">Copyright ? 2012-2023 UCloud 優(yōu)刻得科技股份有限公司<i>|</i><a rel="nofollow" >滬公網(wǎng)安備 31011002000058號(hào)</a><i>|</i><a rel="nofollow" ></a> 滬ICP備12020087號(hào)-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://specialneedsforspecialkids.com/" title="国产xxxx99真实实拍">国产xxxx99真实实拍</a> <div class="friend-links"> <a href="http://belistarlp.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="k0kmc" class="pl_css_ganrao" style="display: none;"><tr id="k0kmc"><wbr id="k0kmc"><cite id="k0kmc"></cite></wbr></tr><li id="k0kmc"></li><tbody id="k0kmc"></tbody><nav id="k0kmc"></nav><noscript id="k0kmc"></noscript><tr id="k0kmc"></tr><nav id="k0kmc"><li id="k0kmc"><option id="k0kmc"></option></li></nav><tr id="k0kmc"></tr><optgroup id="k0kmc"></optgroup><option id="k0kmc"><kbd id="k0kmc"><tr id="k0kmc"></tr></kbd></option><em id="k0kmc"></em><em id="k0kmc"></em><menu id="k0kmc"></menu><noframes id="k0kmc"></noframes><tbody id="k0kmc"></tbody><pre id="k0kmc"></pre><center id="k0kmc"></center><abbr id="k0kmc"></abbr><td id="k0kmc"></td><code id="k0kmc"><noframes id="k0kmc"><ul id="k0kmc"></ul></noframes></code><nav id="k0kmc"><li id="k0kmc"><button id="k0kmc"></button></li></nav><abbr id="k0kmc"><sup id="k0kmc"><center id="k0kmc"></center></sup></abbr><abbr id="k0kmc"></abbr><button id="k0kmc"></button><blockquote id="k0kmc"></blockquote><abbr id="k0kmc"></abbr><th id="k0kmc"></th><nav id="k0kmc"><li id="k0kmc"><button id="k0kmc"></button></li></nav><s id="k0kmc"></s><noscript id="k0kmc"></noscript><noscript id="k0kmc"></noscript><nav id="k0kmc"></nav><td id="k0kmc"></td><em id="k0kmc"></em><wbr id="k0kmc"><bdo id="k0kmc"><abbr id="k0kmc"></abbr></bdo></wbr><object id="k0kmc"></object><option id="k0kmc"><samp id="k0kmc"><tbody id="k0kmc"></tbody></samp></option><object id="k0kmc"></object><pre id="k0kmc"><blockquote id="k0kmc"><tfoot id="k0kmc"></tfoot></blockquote></pre><pre id="k0kmc"><s id="k0kmc"><cite id="k0kmc"></cite></s></pre><em id="k0kmc"><blockquote id="k0kmc"><tfoot id="k0kmc"></tfoot></blockquote></em><tfoot id="k0kmc"></tfoot><blockquote id="k0kmc"></blockquote><option id="k0kmc"><delect id="k0kmc"><tbody id="k0kmc"></tbody></delect></option><th id="k0kmc"><object id="k0kmc"><small id="k0kmc"></small></object></th><tbody id="k0kmc"></tbody><delect id="k0kmc"></delect><center id="k0kmc"></center><center id="k0kmc"></center><del id="k0kmc"></del><center id="k0kmc"></center><menu id="k0kmc"><tr id="k0kmc"><acronym id="k0kmc"></acronym></tr></menu><fieldset id="k0kmc"></fieldset><input id="k0kmc"></input><acronym id="k0kmc"></acronym><em id="k0kmc"></em><center id="k0kmc"><dl id="k0kmc"><optgroup id="k0kmc"></optgroup></dl></center><ul id="k0kmc"><sup id="k0kmc"><dd id="k0kmc"></dd></sup></ul><dl id="k0kmc"></dl><object id="k0kmc"></object><td id="k0kmc"></td><kbd id="k0kmc"></kbd><li id="k0kmc"></li><tfoot id="k0kmc"></tfoot><del id="k0kmc"></del><center id="k0kmc"><delect id="k0kmc"><acronym id="k0kmc"></acronym></delect></center><td id="k0kmc"></td><th id="k0kmc"><del id="k0kmc"><menu id="k0kmc"></menu></del></th><noframes id="k0kmc"></noframes><optgroup id="k0kmc"></optgroup><ul id="k0kmc"></ul><li id="k0kmc"></li><sup id="k0kmc"></sup><wbr id="k0kmc"><option id="k0kmc"><tbody id="k0kmc"></tbody></option></wbr><option id="k0kmc"></option><wbr id="k0kmc"></wbr><xmp id="k0kmc"><abbr id="k0kmc"><dl id="k0kmc"></dl></abbr></xmp><tr id="k0kmc"></tr><li id="k0kmc"><source id="k0kmc"><acronym id="k0kmc"></acronym></source></li><pre id="k0kmc"></pre><pre id="k0kmc"></pre><tfoot id="k0kmc"></tfoot><object id="k0kmc"><center id="k0kmc"><tbody id="k0kmc"></tbody></center></object><delect id="k0kmc"></delect><blockquote id="k0kmc"></blockquote><del id="k0kmc"><abbr id="k0kmc"><tr id="k0kmc"></tr></abbr></del><ul id="k0kmc"></ul><table id="k0kmc"></table><th id="k0kmc"></th><rt id="k0kmc"></rt><li id="k0kmc"></li><tbody id="k0kmc"><abbr id="k0kmc"><center id="k0kmc"></center></abbr></tbody><pre id="k0kmc"></pre><dl id="k0kmc"></dl><noframes id="k0kmc"></noframes><pre id="k0kmc"></pre><delect id="k0kmc"></delect><td id="k0kmc"></td><rt id="k0kmc"><pre id="k0kmc"><li id="k0kmc"></li></pre></rt><kbd id="k0kmc"></kbd><th id="k0kmc"></th><kbd id="k0kmc"></kbd><noscript id="k0kmc"><s id="k0kmc"><sup id="k0kmc"></sup></s></noscript><strike id="k0kmc"></strike><tr id="k0kmc"></tr><tbody id="k0kmc"><ul id="k0kmc"><rt id="k0kmc"></rt></ul></tbody><tr id="k0kmc"></tr><center id="k0kmc"></center><button id="k0kmc"></button><acronym id="k0kmc"></acronym><cite id="k0kmc"><kbd id="k0kmc"><s id="k0kmc"></s></kbd></cite><th id="k0kmc"></th><s id="k0kmc"></s><input id="k0kmc"><tr id="k0kmc"><li id="k0kmc"></li></tr></input><fieldset id="k0kmc"></fieldset><object id="k0kmc"></object><kbd id="k0kmc"></kbd><pre id="k0kmc"><small id="k0kmc"><center id="k0kmc"></center></small></pre><acronym id="k0kmc"></acronym><th id="k0kmc"></th><del id="k0kmc"></del><ul id="k0kmc"><menu id="k0kmc"><tr id="k0kmc"></tr></menu></ul><tfoot id="k0kmc"></tfoot><acronym id="k0kmc"><small id="k0kmc"><source id="k0kmc"></source></small></acronym><th id="k0kmc"></th><object id="k0kmc"></object><tbody id="k0kmc"><del id="k0kmc"><sup id="k0kmc"></sup></del></tbody><td id="k0kmc"><button id="k0kmc"><dl id="k0kmc"></dl></button></td><del id="k0kmc"></del><acronym id="k0kmc"><cite id="k0kmc"><kbd id="k0kmc"></kbd></cite></acronym><delect id="k0kmc"></delect><xmp id="k0kmc"></xmp><tbody id="k0kmc"><abbr id="k0kmc"><rt id="k0kmc"></rt></abbr></tbody><code id="k0kmc"></code><blockquote id="k0kmc"></blockquote><dl id="k0kmc"><object id="k0kmc"><cite id="k0kmc"></cite></object></dl><button id="k0kmc"></button><kbd id="k0kmc"><pre id="k0kmc"><li id="k0kmc"></li></pre></kbd><pre id="k0kmc"></pre><li id="k0kmc"></li><source id="k0kmc"></source><tfoot id="k0kmc"><samp id="k0kmc"><pre id="k0kmc"></pre></samp></tfoot><del id="k0kmc"></del><cite id="k0kmc"></cite><small id="k0kmc"><menu id="k0kmc"><tbody id="k0kmc"></tbody></menu></small><tbody id="k0kmc"><xmp id="k0kmc"><center id="k0kmc"></center></xmp></tbody><dl id="k0kmc"></dl><rt id="k0kmc"></rt><li id="k0kmc"><menu id="k0kmc"><strong id="k0kmc"></strong></menu></li><input id="k0kmc"></input></div> <script src="http://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>