成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

graf / 1014人閱讀

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

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

前言

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

性能瓶頸在哪里?

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


     

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

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

要實現(xiàn)這種渲染模式,我總結(jié)了下有3種方式實現(xiàn)。第3種方式是我認(rèn)為最合適的,也是我在項目中實際使用的優(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)將的初始化放在隊列最后,結(jié)果就是頁面會在初始化完后立刻顯示,然后再顯示。如果你的頁面有幾十個組件,那么把非首屏的組件全設(shè)成異步組件,頁面顯示速度會有明顯的提升。

你可以封裝一個簡單的函數(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 )
    }
})

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


    
    
    
    
    
    

還是按照上面的異步組件做法,這時候就需要考慮把哪些組件設(shè)成異步的了。如果把A、B、C都設(shè)成異步的,那結(jié)果就是3個</b>會首先渲染出來,頁面渲染的過程在用戶看來非常奇怪,并不是預(yù)期中的從上到下順序渲染。</p> <b>第三種:v-if 和 terminal指令</b> <p>這是我推薦的一種做法,簡單有效。還是那個結(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>這個示例寫起來略顯啰嗦,但它已經(jīng)實現(xiàn)了我們想要的順序渲染的效果。頁面會在A組件初始化完后顯示,然后再按順序渲染其余的組件,整個頁面渲染方式看起來是流式的。</p> <p>有些人可能會擔(dān)心<b>v-if</b>存在一個編譯/卸載過程,會有性能影響。但這里并不需要擔(dān)心,因為<b>v-if</b>是惰性的,只有當(dāng)?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+新增的功能,由于比較冷門,文檔也沒有特別詳細(xì)的敘述,最好的方式是參照著<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,用來凍結(jié)一個對象,禁止對象被修改。vue 1.0.18+以后,不會對已凍結(jié)的data做getter、setter轉(zhuǎn)換。</p> <p>如果你確保某個data不需要跟蹤依賴,可以使用Object.freeze將其凍結(jié)。但請注意,被凍結(jié)的是對象的值,你仍然可以將引用整個替換調(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 () { // 界面不會有響應(yīng) this.list[0].value = 100; // 下面兩種做法,界面都會響應(yīng) this.list = [ { value: 100 }, { value: 200 } ]; this.list = Object.freeze([ { value: 100 }, { value: 200 } ]); } })</pre> <b>后記</b> <p>vue 1.0+ 的組件其實不算輕量,初始化一個組件包括依賴收集、轉(zhuǎn)換等過程,但其實有些是可以放在編譯時提前完成的。vue 2.0+ 已經(jīng)在這方面做了不少的改進:分離了編譯時和運行時、提供函數(shù)組件等,可以預(yù)見,vue 2.0的性能將有很大的提升。</p> <p>v-lazy-component: https://github.com/Coffcer/vu...</p> </div> <div id="qoyqs8suu2u" class="mt-64 tags-seach" > <div id="qoyqs8suu2u" class="tags-info"> <a style="width:120px;" title="GPU云服務(wù)器" href="http://systransis.cn/site/product/gpu.html">GPU云服務(wù)器</a> <a style="width:120px;" title="云服務(wù)器" href="http://systransis.cn/site/active/kuaijiesale.html?ytag=seo">云服務(wù)器</a> <a style="width:120px;" title="性能優(yōu)化" href="http://systransis.cn/yun/tag/xingnengyouhua/">性能優(yōu)化</a> <a style="width:120px;" title="優(yōu)化系統(tǒng)性能" href="http://systransis.cn/yun/tag/youhuaxitongxingneng/">優(yōu)化系統(tǒng)性能</a> <a style="width:120px;" title="網(wǎng)站性能優(yōu)化" href="http://systransis.cn/yun/tag/wangzhanxingnengyouhua/">網(wǎng)站性能優(yōu)化</a> <a style="width:120px;" title="頁面性能優(yōu)化" href="http://systransis.cn/yun/tag/yemianxingnengyouhua/">頁面性能優(yōu)化</a> </div> </div> <div id="qoyqs8suu2u" class="entry-copyright mb-30"> <p class="mb-15"> 文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。</p> <p>轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90975.html</p> </div> <ul class="pre-next-page"> <li id="qoyqs8suu2u" class="ellipsis"><a class="hpf" href="http://systransis.cn/yun/90974.html">上一篇:前端單元測試之Karma環(huán)境搭建</a></li> <li id="qoyqs8suu2u" class="ellipsis"><a class="hpf" href="http://systransis.cn/yun/90976.html">下一篇:一個關(guān)于回調(diào)的故事</a></li> </ul> </div> <div id="qoyqs8suu2u" 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="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/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ù)與性能很多關(guān)于性能優(yōu)化的文章都會談及內(nèi)聯(lián)函數(shù),其也是常見的被詬病為拖慢性能表現(xiàn)的元兇之一不過本文卻是打破砂鍋問到底,論證了內(nèi)聯(lián)函數(shù)并不一定就會拖慢性能,過度的性能優(yōu)化反而會有損于應(yīng)用性能。 showImg(https://segmentfault.com/img/remote/1460000011481413?w=1240&h=825); 前端每周...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-661.html"><img src="http://systransis.cn/yun/data/avatar/000/00/06/small_000000661.jpg" alt=""><span id="qoyqs8suu2u" 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="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/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)用程序分割成這些延遲加載的塊??偨Y(jié)延遲加載是提高應(yīng)用程序性能并減少其大小的最佳方法之一。在本系列的下一部分中,我將向您展示如何使用和路由來分割應(yīng)用程序代碼。 當(dāng)移動優(yōu)先(mobile-first)的方式逐漸成為一種標(biāo)準(zhǔn),而不確定的網(wǎng)絡(luò)環(huán)境因素應(yīng)該始終是我們考慮的一點,因此保持讓應(yīng)用程序快速加載變得越來越困難。在本系列文章...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-1552.html"><img src="http://systransis.cn/yun/data/avatar/000/00/15/small_000001552.jpg" alt=""><span id="qoyqs8suu2u" 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="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/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)用程序最實用的模式。本系列文章基于對性能優(yōu)化過程的學(xué)習(xí)。路徑時才被下載。為了便于理解,文件名稱并不是由生成的真實名稱。接下來,我們將學(xué)習(xí)其他部分和單獨的組件也能夠從主文件分割出來并延遲加載。 在前一篇文章中,我們學(xué)習(xí)了什么是代碼分割,它是如何與 Webpack 一起工作的,以及如何在Vue應(yīng)用程序中使用延遲加載。現(xiàn)在,我們將更深入地研究,并學(xué)習(xí)...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-643.html"><img src="http://systransis.cn/yun/data/avatar/000/00/06/small_000000643.jpg" alt=""><span id="qoyqs8suu2u" 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="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/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)模塊不能被取消注冊也不能延遲注冊,并且在初始化后不能更改靜態(tài)模塊的結(jié)構(gòu)不是狀態(tài)。為此,我們將在路由對應(yīng)的組件中加載模塊,而不是在中導(dǎo)入并注冊它。能代碼分割模塊是一個強大的工具。 在前一部分,我們學(xué)習(xí)了足夠強大的模式,可以顯著提高應(yīng)用程序的性能 - 按每個路由分割代碼。雖然按路由分割代碼非常有用,但是在用戶訪問我們的站點后,仍然有很多代碼是不需要的。在本系列的這一部分中,我們將重點關(guān)...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-762.html"><img src="http://systransis.cn/yun/data/avatar/000/00/07/small_000000762.jpg" alt=""><span id="qoyqs8suu2u" 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="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/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ā)布是由團隊開源的,操作接口庫,已成為事實上的瀏覽器操作標(biāo)準(zhǔn)。本周正式發(fā)布,為我們帶來了,,支持自定義頭部與腳部,支持增強,兼容原生協(xié)議等特性變化。新特性介紹日前發(fā)布了大版本更新,引入了一系列的新特性與提升,本文即是對這些變化進行深入解讀。 showImg(https://segmentfault.com/img/remote/1460000012940044); 前端每周清單專注前端...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-886.html"><img src="http://systransis.cn/yun/data/avatar/000/00/08/small_000000886.jpg" alt=""><span id="qoyqs8suu2u" 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="qoyqs8suu2u" class="topicone-box-wangeditor"> <h3 class="top-com-title mb-64"><span>發(fā)表評論</span></h3> <div id="qoyqs8suu2u" class="xcp-publish-main flex_box_zd"> <div id="qoyqs8suu2u" class="unlogin-pinglun-box"> <a href="javascript:login()" class="grad">登陸后可評論</a> </div> </div> </div> <div id="qoyqs8suu2u" class="site-box-content"> <div id="qoyqs8suu2u" class="site-content-title"> <h3 class="top-com-title mb-64"><span>0條評論</span></h3> </div> <div id="qoyqs8suu2u" class="pages"></ul></div> </div> </div> <div id="qoyqs8suu2u" class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right"> <div id="qoyqs8suu2u" class=""> <div id="qoyqs8suu2u" class="com_layuiright-box user-msgbox"> <a href="http://systransis.cn/yun/u-580.html"><img src="http://systransis.cn/yun/data/avatar/000/00/05/small_000000580.jpg" alt=""></a> <h3><a href="http://systransis.cn/yun/u-580.html" rel="nofollow">graf</a></h3> <h6>男<span>|</span>高級講師</h6> <div id="qoyqs8suu2u" 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="qoyqs8suu2u" class="user-msgbox-list flex_box_zd"> <h3 class="hpf">TA的文章</h3> <a href="http://systransis.cn/yun/ut-580.html" class="box_hxjz">閱讀更多</a> </div> <ul class="user-msgbox-ul"> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/124668.html">web技術(shù)分享| LRU 緩存淘汰算法</a></h3> <p>閱讀 3846<span>·</span>2021-11-24 09:39</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/124123.html">自定義 OpenShift s2i 鏡像與模板——OracleJDK8</a></h3> <p>閱讀 3767<span>·</span>2021-11-22 12:07</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/122857.html">便宜騰訊云云服務(wù)器選擇推薦(優(yōu)先新客三年實惠套餐)</a></h3> <p>閱讀 1116<span>·</span>2021-11-04 16:10</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/119400.html">求C n m(從n個數(shù)中選m個數(shù),有多少種組合?問題)暴力—遞歸——回歸數(shù)學(xué)公式,三種方法,層層優(yōu)化</a></h3> <p>閱讀 810<span>·</span>2021-09-07 09:59</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/117417.html">Less 日常用法</a></h3> <p>閱讀 1908<span>·</span>2019-08-30 15:55</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/116812.html">埋坑一: vue中子組件調(diào)用兄弟組件方法</a></h3> <p>閱讀 948<span>·</span>2019-08-30 15:54</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/112917.html">Javascript圖片懶加載</a></h3> <p>閱讀 735<span>·</span>2019-08-29 14:06</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/110354.html">MyBatis插件使用--分頁插件與性能攔截器</a></h3> <p>閱讀 2484<span>·</span>2019-08-27 10:54</p></li> </ul> </div> <!-- 文章詳情右側(cè)廣告--> <div id="qoyqs8suu2u" class="com_layuiright-box"> <h6 class="top-com-title"><span>最新活動</span></h6> <div id="qoyqs8suu2u" class="com_adbox"> <div id="qoyqs8suu2u" class="layui-carousel" id="right-item"> <div carousel-item> <div> <a href="http://systransis.cn/site/active/kuaijiesale.html?ytag=seo" rel="nofollow"> <img src="http://systransis.cn/yun/data/attach/240625/2rTjEHmi.png" alt="云服務(wù)器"> </a> </div> <div> <a href="http://systransis.cn/site/product/gpu.html" rel="nofollow"> <img src="http://systransis.cn/yun/data/attach/240807/7NjZjdrd.png" alt="GPU云服務(wù)器"> </a> </div> </div> </div> </div> <!-- banner結(jié)束 --> <div id="qoyqs8suu2u" class="adhtml"> </div> <script> $(function(){ $.ajax({ type: "GET", url:"http://systransis.cn/yun/ad/getad/1.html", cache: false, success: function(text){ $(".adhtml").html(text); } }); }) </script> </div> </div> </div> </div> </div> </section> <!-- wap拉出按鈕 --> <div id="qoyqs8suu2u" class="site-tree-mobile layui-hide"> <i class="layui-icon layui-icon-spread-left"></i> </div> <!-- wap遮罩層 --> <div id="qoyqs8suu2u" class="site-mobile-shade"></div> <!--付費閱讀 --> <div class="qoyqs8suu2u" id="payread"> <div id="qoyqs8suu2u" class="layui-form-item">閱讀需要支付1元查看</div> <div id="qoyqs8suu2u" 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://systransis.cn/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css"> <script src="http://systransis.cn/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script> <script src="http://systransis.cn/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://systransis.cn/yun/index.php?topic/ajaxhassupport/" + tid, cache: false, success: function(hassupport){ if (hassupport != '1'){ $.ajax({ type: "GET", cache:false, url: "http://systransis.cn/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://systransis.cn/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="qoyqs8suu2u" class="layui-container"> <div id="qoyqs8suu2u" class="flex_box_zd"> <div id="qoyqs8suu2u" class="left-footer"> <h6><a href="http://systransis.cn/"><img src="http://systransis.cn/yun/static/theme/ukd//images/logo.png" alt="UCloud (優(yōu)刻得科技股份有限公司)"></a></h6> <p>UCloud (優(yōu)刻得科技股份有限公司)是中立、安全的云計算服務(wù)平臺,堅持中立,不涉足客戶業(yè)務(wù)領(lǐng)域。公司自主研發(fā)IaaS、PaaS、大數(shù)據(jù)流通平臺、AI服務(wù)平臺等一系列云計算產(chǎn)品,并深入了解互聯(lián)網(wǎng)、傳統(tǒng)企業(yè)在不同場景下的業(yè)務(wù)需求,提供公有云、混合云、私有云、專有云在內(nèi)的綜合性行業(yè)解決方案。</p> </div> <div id="qoyqs8suu2u" class="right-footer layui-hidemd"> <ul class="flex_box_zd"> <li> <h6>UCloud與云服務(wù)</h6> <p><a href="http://systransis.cn/site/about/intro/">公司介紹</a></p> <p><a >加入我們</a></p> <p><a href="http://systransis.cn/site/ucan/onlineclass/">UCan線上公開課</a></p> <p><a href="http://systransis.cn/site/solutions.html" >行業(yè)解決方案</a></p> <p><a href="http://systransis.cn/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://systransis.cn/yun/column/index.html">專欄文章</a></p> <p><a href="http://systransis.cn/yun/udata/">專題地圖</a></p> </li> <li> <h6>常見問題</h6> <p><a href="http://systransis.cn/site/ucsafe/notice.html" >安全中心</a></p> <p><a href="http://systransis.cn/site/about/news/recent/" >新聞動態(tài)</a></p> <p><a href="http://systransis.cn/site/about/news/report/">媒體動態(tài)</a></p> <p><a href="http://systransis.cn/site/cases.html">客戶案例</a></p> <p><a href="http://systransis.cn/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="qoyqs8suu2u" 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.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://systransis.cn/" title="成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费">成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费</a> <div class="friend-links"> </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="vb7d5" class="pl_css_ganrao" style="display: none;"><sup id="vb7d5"></sup><font id="vb7d5"><progress id="vb7d5"></progress></font><meter id="vb7d5"><pre id="vb7d5"><p id="vb7d5"><var id="vb7d5"></var></p></pre></meter><font id="vb7d5"><progress id="vb7d5"></progress></font><font id="vb7d5"><progress id="vb7d5"></progress></font><pre id="vb7d5"></pre><form id="vb7d5"><output id="vb7d5"></output></form><strong id="vb7d5"><optgroup id="vb7d5"></optgroup></strong><rp id="vb7d5"><thead id="vb7d5"><legend id="vb7d5"><sup id="vb7d5"></sup></legend></thead></rp><p id="vb7d5"></p><strong id="vb7d5"><optgroup id="vb7d5"></optgroup></strong><menuitem id="vb7d5"><ol id="vb7d5"><pre id="vb7d5"><track id="vb7d5"></track></pre></ol></menuitem><meter id="vb7d5"><pre id="vb7d5"><style id="vb7d5"><nobr id="vb7d5"></nobr></style></pre></meter><p id="vb7d5"><nobr id="vb7d5"><small id="vb7d5"><output id="vb7d5"></output></small></nobr></p><form id="vb7d5"></form><meter id="vb7d5"></meter><small id="vb7d5"><ins id="vb7d5"><address id="vb7d5"><strike id="vb7d5"></strike></address></ins></small><span id="vb7d5"></span><u id="vb7d5"></u><style id="vb7d5"><nobr id="vb7d5"></nobr></style><em id="vb7d5"><div id="vb7d5"></div></em><strong id="vb7d5"><ruby id="vb7d5"><thead id="vb7d5"><legend id="vb7d5"></legend></thead></ruby></strong><dfn id="vb7d5"></dfn><form id="vb7d5"><thead id="vb7d5"><label id="vb7d5"><strong id="vb7d5"></strong></label></thead></form><strike id="vb7d5"></strike><i id="vb7d5"><listing id="vb7d5"></listing></i><sub id="vb7d5"><strike id="vb7d5"></strike></sub><sub id="vb7d5"><div id="vb7d5"><ol id="vb7d5"><pre id="vb7d5"></pre></ol></div></sub><address id="vb7d5"><p id="vb7d5"><nobr id="vb7d5"><form id="vb7d5"></form></nobr></p></address><legend id="vb7d5"></legend><track id="vb7d5"><tt id="vb7d5"></tt></track><strong id="vb7d5"></strong><output id="vb7d5"><address id="vb7d5"></address></output><nobr id="vb7d5"><small id="vb7d5"><meter id="vb7d5"><pre id="vb7d5"></pre></meter></small></nobr><div id="vb7d5"></div><p id="vb7d5"><var id="vb7d5"></var></p><strong id="vb7d5"><optgroup id="vb7d5"></optgroup></strong><mark id="vb7d5"><dl id="vb7d5"></dl></mark><form id="vb7d5"><thead id="vb7d5"><label id="vb7d5"><strong id="vb7d5"></strong></label></thead></form><th id="vb7d5"><b id="vb7d5"><progress id="vb7d5"><sup id="vb7d5"></sup></progress></b></th><meter id="vb7d5"><acronym id="vb7d5"><style id="vb7d5"><nobr id="vb7d5"></nobr></style></acronym></meter><p id="vb7d5"></p><rp id="vb7d5"></rp><track id="vb7d5"><tt id="vb7d5"></tt></track><em id="vb7d5"><div id="vb7d5"></div></em><div id="vb7d5"></div><progress id="vb7d5"></progress><progress id="vb7d5"><acronym id="vb7d5"><label id="vb7d5"><nobr id="vb7d5"></nobr></label></acronym></progress><ruby id="vb7d5"><form id="vb7d5"></form></ruby><var id="vb7d5"></var><track id="vb7d5"><tt id="vb7d5"></tt></track><legend id="vb7d5"><dfn id="vb7d5"><u id="vb7d5"><ruby id="vb7d5"></ruby></u></dfn></legend><video id="vb7d5"></video><th id="vb7d5"></th><font id="vb7d5"><progress id="vb7d5"></progress></font><address id="vb7d5"><p id="vb7d5"><var id="vb7d5"><small id="vb7d5"></small></var></p></address><dfn id="vb7d5"><u id="vb7d5"><mark id="vb7d5"><thead id="vb7d5"></thead></mark></u></dfn><ol id="vb7d5"></ol><div id="vb7d5"><ol id="vb7d5"></ol></div><thead id="vb7d5"></thead><font id="vb7d5"></font><pre id="vb7d5"><track id="vb7d5"><tt id="vb7d5"><menuitem id="vb7d5"></menuitem></tt></track></pre><label id="vb7d5"><th id="vb7d5"><b id="vb7d5"><ins id="vb7d5"></ins></b></th></label><thead id="vb7d5"><thead id="vb7d5"><label id="vb7d5"><strong id="vb7d5"></strong></label></thead></thead><strong id="vb7d5"><optgroup id="vb7d5"></optgroup></strong><video id="vb7d5"><em id="vb7d5"><big id="vb7d5"><span id="vb7d5"></span></big></em></video><video id="vb7d5"></video><progress id="vb7d5"><sup id="vb7d5"><strong id="vb7d5"><rp id="vb7d5"></rp></strong></sup></progress><i id="vb7d5"><track id="vb7d5"></track></i><listing id="vb7d5"><dfn id="vb7d5"><menuitem id="vb7d5"><form id="vb7d5"></form></menuitem></dfn></listing><thead id="vb7d5"></thead><video id="vb7d5"></video><small id="vb7d5"></small><ol id="vb7d5"><optgroup id="vb7d5"></optgroup></ol><video id="vb7d5"></video><strong id="vb7d5"><ruby id="vb7d5"></ruby></strong><output id="vb7d5"><address id="vb7d5"></address></output><ol id="vb7d5"></ol><ol id="vb7d5"><pre id="vb7d5"></pre></ol><acronym id="vb7d5"></acronym><thead id="vb7d5"><dfn id="vb7d5"><u id="vb7d5"><ruby id="vb7d5"></ruby></u></dfn></thead><span id="vb7d5"><legend id="vb7d5"></legend></span><var id="vb7d5"></var><pre id="vb7d5"></pre><tt id="vb7d5"><menuitem id="vb7d5"><span id="vb7d5"><legend id="vb7d5"></legend></span></menuitem></tt><u id="vb7d5"><ruby id="vb7d5"></ruby></u><th id="vb7d5"><b id="vb7d5"></b></th><em id="vb7d5"><big id="vb7d5"><dl id="vb7d5"><i id="vb7d5"></i></dl></big></em><video id="vb7d5"></video><address id="vb7d5"><p id="vb7d5"><nobr id="vb7d5"><small id="vb7d5"></small></nobr></p></address><sup id="vb7d5"><label id="vb7d5"><nobr id="vb7d5"><b id="vb7d5"></b></nobr></label></sup><font id="vb7d5"><legend id="vb7d5"><sup id="vb7d5"><strong id="vb7d5"></strong></sup></legend></font><listing id="vb7d5"><dfn id="vb7d5"></dfn></listing><b id="vb7d5"></b><label id="vb7d5"></label><em id="vb7d5"><big id="vb7d5"></big></em><style id="vb7d5"></style><p id="vb7d5"><var id="vb7d5"><optgroup id="vb7d5"><ins id="vb7d5"></ins></optgroup></var></p><th id="vb7d5"><b id="vb7d5"></b></th><font id="vb7d5"><progress id="vb7d5"></progress></font><mark id="vb7d5"><form id="vb7d5"></form></mark><p id="vb7d5"><nobr id="vb7d5"></nobr></p><span id="vb7d5"><i id="vb7d5"></i></span><legend id="vb7d5"><sup id="vb7d5"></sup></legend><style id="vb7d5"><nobr id="vb7d5"></nobr></style><label id="vb7d5"></label><style id="vb7d5"></style><u id="vb7d5"><mark id="vb7d5"></mark></u><sub id="vb7d5"></sub><u id="vb7d5"></u><address id="vb7d5"></address><style id="vb7d5"></style><legend id="vb7d5"></legend><video id="vb7d5"><em id="vb7d5"><div id="vb7d5"><ol id="vb7d5"></ol></div></em></video><video id="vb7d5"><sub id="vb7d5"><big id="vb7d5"><ol id="vb7d5"></ol></big></sub></video><form id="vb7d5"><legend id="vb7d5"><listing id="vb7d5"><dfn id="vb7d5"></dfn></listing></legend></form><b id="vb7d5"><progress id="vb7d5"></progress></b><strike id="vb7d5"></strike><menuitem id="vb7d5"><dl id="vb7d5"><pre id="vb7d5"><track id="vb7d5"></track></pre></dl></menuitem><style id="vb7d5"></style><progress id="vb7d5"><sup id="vb7d5"></sup></progress><b id="vb7d5"><meter id="vb7d5"></meter></b><listing id="vb7d5"><tt id="vb7d5"><big id="vb7d5"><dl id="vb7d5"></dl></big></tt></listing><p id="vb7d5"><nobr id="vb7d5"><small id="vb7d5"><ins id="vb7d5"></ins></small></nobr></p><meter id="vb7d5"></meter><pre id="vb7d5"><p id="vb7d5"></p></pre><u id="vb7d5"><mark id="vb7d5"></mark></u><i id="vb7d5"><listing id="vb7d5"></listing></i><dl id="vb7d5"><pre id="vb7d5"><track id="vb7d5"><tt id="vb7d5"></tt></track></pre></dl><rp id="vb7d5"><thead id="vb7d5"><legend id="vb7d5"><sup id="vb7d5"></sup></legend></thead></rp><mark id="vb7d5"><form id="vb7d5"></form></mark><menuitem id="vb7d5"></menuitem><legend id="vb7d5"><listing id="vb7d5"><tt id="vb7d5"><mark id="vb7d5"></mark></tt></listing></legend><acronym id="vb7d5"></acronym><div id="vb7d5"><ol id="vb7d5"></ol></div><form id="vb7d5"><legend id="vb7d5"></legend></form><form id="vb7d5"></form><tt id="vb7d5"><big id="vb7d5"><strong id="vb7d5"><optgroup id="vb7d5"></optgroup></strong></big></tt><form id="vb7d5"></form><dfn id="vb7d5"></dfn><pre id="vb7d5"></pre><var id="vb7d5"><optgroup id="vb7d5"><output id="vb7d5"><em id="vb7d5"></em></output></optgroup></var><th id="vb7d5"><b id="vb7d5"></b></th><legend id="vb7d5"></legend><rp id="vb7d5"><b id="vb7d5"><progress id="vb7d5"><pre id="vb7d5"></pre></progress></b></rp><i id="vb7d5"></i><ins id="vb7d5"><address id="vb7d5"></address></ins><meter id="vb7d5"></meter><nobr id="vb7d5"><small id="vb7d5"></small></nobr><menuitem id="vb7d5"><span id="vb7d5"><i id="vb7d5"><dfn id="vb7d5"></dfn></i></span></menuitem></div> <script src="http://systransis.cn/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>