亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

cypress進行e2e測試之理論

chnmagnus / 1264人閱讀

摘要:進行測試之理論是目前很火的一個測試組件,內(nèi)部綁定了之類的斷言為了讓代碼代碼更有說服力,減少提交測試錯誤,進行測試顯然是非常有必要的。

cypress 進行 e2e 測試之理論

cypress 是目前 e2e 很火的一個測試組件,內(nèi)部綁定了 macha、chai、chai-jquery 之類的斷言,為了讓代碼代碼
更有說服力,減少提交測試錯誤,進行 e2e 測試顯然是非常有必要的。

官網(wǎng) 
GitHub

借鑒官網(wǎng)一句話來說:

Cypress is a next generation front end testing tool built for the modern web. We address the key
pain points developers and QA engineers face when testing modern applications.

本文環(huán)境
node v9.5
npm v5.5
e2e 簡介

e2e 測試端對端測試的簡稱, e2e 即為end to end,
指任意一個人的社交、交易、休閑都可以直接與另外任意一個人產(chǎn)生關系,去中心化、渠道化.

cypress cypress 環(huán)境搭建

做前端怎么少的多的了 npm 呢

$ npm i -D cypress

然后為了方便起見,咱們在package.json中寫入下面腳本:

{
  "scripts": {
    "e2e:open": "cypress open",
    "e2e:run": "cypress run"
  }
}

運行npm run e2e:open,啟動一個 cypress 的服務器,如下:

如下圖這就完成了一個啟動一個 cypress。第一次點開時候,cypress 會幫你創(chuàng)建一個初始化配置目錄,這是
cypress 推薦的目錄的結構,當然也可以自己創(chuàng)建。

點擊 example_spec.js 文件,然后可以看到如下界面,cypress 開始測試:

上面就看到 cypress 的運行過程了。下面看看 example_spec.js(文件的位置
:projectName/cypress/integration)文件中寫了啥:

describe("Kitchen Sink", function() {
  it(".should() - assert that  is correct", function() {
    // ...
  }
})</pre>
<p>這是主要結構的,下面大部分都是在一個<b>it</b>函數(shù)內(nèi)部,是測試里面的回調(diào)函數(shù)。詳細可以查看 TDD 和 BDD 測試<br>框架,cypress 綁定了這些測試框架。</p>
<b>cy.visit</b>
<p>這是 cypress 里面一個很重要的方法,可以訪問一個鏈接,列入 example.js 文件如下:</p>
<pre>beforeEach(function() {
  // Visiting our app before each test removes any state build up from
  // previous tests. Visiting acts as if we closed a tab and opened a fresh one
  cy.visit("https://example.cypress.io/commands/querying")
})</pre>
<p>這里就是在前置鉤子函數(shù)里面訪問了<b>https://...../querying</b>這個鏈接。如果代碼需要瀏覽器調(diào)試,比如用戶交<br>互點擊,用戶輸入之類的。第一步就是訪問:cy.visit</p>
<b>cy.get</b>
<p>還是從 example_spec.js 問中說起:</p>
<pre>it("cy.get() - query DOM elements", function() {
  // https://on.cypress.io/get

  // Get DOM elements by id
  cy.get("#query-btn").should("contain", "Button")

  // Get DOM elements by class
  cy.get(".query-btn").should("contain", "Button")

  cy.get("#querying .well>button:first").should("contain", "Button")
  //              ?
  // Use CSS selectors just like jQuery
})</pre>
<p>這里定義了一個測試單元,在這個里面做了啥呢?第一步獲取 id 為 query-btn 這個按鈕。接下來 should 操作<br>,奉上一張表自行查看: <script type="text/javascript">showImg("https://segmentfault.com/img/remote/1460000014630106?w=743&h=810");</script></p>
<p>cy.get 還有一個玩法就是 cy.get("@app")這種,意思說之前你已經(jīng)<b>cy.get(".app").as("app")</b>,不需要再次獲<br>取了,直接使用別名就好了</p>
<p>從官網(wǎng)截圖的表格,詳<br>細jquery-chai 文檔表格</p>
<p>這里看到<b>cy.get()</b>和<b>jquery.$</b>是不是很像,在官網(wǎng)這里說了這樣一句話:</p>
<pre>The querying behavior of this command matches exactly how $(…) works in jQuery.</pre>
<p>所以可以將 cy.get()當$一樣來用即可,不過這里返回的不過 jquery 對象罷了,這里返回的事通過 cypress 包<br>裝過的對象可以在控制臺看到這樣的東西,見下圖:<br><script type="text/javascript">showImg("https://segmentfault.com/img/remote/1460000014630107?w=718&h=1192");</script></p>
<p>是一個用于 cypress 所有方法的對象。然后可以操作他的 api 了。</p>
<p>第一部分,主要是查詢,查詢頁面元素是否按照我們開發(fā)想要的存在,下面看第二部分:</p>
<pre>context("Actions", function() {
  beforeEach(function() {
    cy.visit("https://example.cypress.io/commands/actions")
  })

  // Let"s perform some actions on DOM elements
  // https://on.cypress.io/interacting-with-elements

  it(".type() - type into a DOM element", function() {
    // https://on.cypress.io/type
    cy
      .get(".action-email")
      .type("fake@email.com")
      .should("have.value", "fake@email.com")

      // .type() with special character sequences
      .type("{leftarrow}{rightarrow}{uparrow}{downarrow}")
      .type("{del}{selectall}{backspace}")

      // .type() with key modifiers
      .type("{alt}{option}") //these are equivalent
      .type("{ctrl}{control}") //these are equivalent
      .type("{meta}{command}{cmd}") //these are equivalent
      .type("{shift}")

      // Delay each keypress by 0.1 sec
      .type("slow.typing@email.com", { delay: 100 })
      .should("have.value", "slow.typing@email.com")

    cy
      .get(".action-disabled")
      // Ignore error checking prior to type
      // like whether the input is visible or disabled
      .type("disabled error checking", { force: true })
      .should("have.value", "disabled error checking")
  })
})</pre>
<p>這一部分主要是進行獲取元素交互, 下面來說交互是如何搞得。 與 cy.get 相似還有:</p>

<p>cy.contains 通過文本獲取元素</p>
<p>cy.closet 見 jqery</p>
<p>cy.next/cy.nextAll 可以和 cy.contains 聯(lián)合使用獲取該節(jié)點的下一個節(jié)點</p>
<p>cy.prev/cy.prevAll 同上</p>
<p>cy.children/cy.parents/cy.parent 獲取子節(jié)點/ 所有的父節(jié)點 / 父節(jié)點</p>
<p>cy.first/cy.last</p>
<p>cy.url 獲取當前頁面 url</p>
<p>cy.title 獲取當前頁面標題</p>
<p>... API 挺多的,同樣奉<br>上api 文檔
</p>

<b>cypress 交互邏輯</b>
<p>既然要交互肯定需要點擊輸入滾動,可以還存在拖拽等等。咱們就暫時從輸入開始說起啦</p>
<b>cy.type</b>
<p>這不是一個可以直接使用的方法,要配合<b>cy.get</b>使用的,作用是給空間進行輸入。例如:</p>
<b>測試輸入例如 text, textarea</b>
<pre>cy.get("input").type("hello world")</pre>
<b>測試 tabIndex</b>
<pre>  <div   id="dnkpnhlp"   class="el" tabIndex="1">
    This is TabIndex div.
  </div></pre>
<pre>cy.get(".el").type("laldkadaljdkljasf") // 這個里面是隨機字符串</pre>
<b>測試 input 為日期的</b>
<pre>cy.get("input[type=date]").type("2008-8-9")</pre>
<b>鍵盤綁定</b>
<p>下面直接是對 input 進行組合鍵盤操作</p>
<pre>cy.get("input").type("{shift}{alt}Q")</pre>
<p>按住鍵盤操作</p>
<pre>cy.get("input").type("{alt}這里是按了一下alt后輸入的內(nèi)容")</pre>
<p>還有長按鍵盤之類的操作,詳細就看官網(wǎng)了這里之類奉上鏈<br>接https://docs.cypress.io/api/commands/type.html#Key-Combinations</p>
<p>這里就是關于鍵盤的組合操作。</p>
<b>對于選擇例如 radio, checkbox</b>
<p>這些就只需要利用點擊事件即可,如下:</p>
<pre>cy
  .get("input[type=radio]")
  .as("radio")
  .click()
cy.get("@radio").should("be.checked")</pre>
<b>定時</b>
<b>cy.wait</b>
<p>下面是等待 1s</p>
<pre>cy.wait(1000)</pre>
<b>cy.clock 和 cy.tick</b>
<p>自己的代碼:</p>
<pre>var seconds = 0
setInterval(() => {
  $("#seconds-elapsed").text(++seconds + " seconds")
}, 1000)</pre>
<p>測試代碼</p>
<pre>cy.clock()
cy.visit("/index.html")
cy.tick(1000)
cy.get("#seconds-elapsed").should("have.text", "1 seconds")
cy.tick(1000)
cy.get("#seconds-elapsed").should("have.text", "2 seconds")</pre>
<p><script type="text/javascript">showImg("https://segmentfault.com/img/remote/1460000014630108");</script> 這里就會出現(xiàn)關于 clock 和 tick<br>的用法,更多用法看文檔,我也有部分迷惑的。待后來再解決。老規(guī)矩文檔地址:<br>地址</p>
<b>關于 cypress 的配置</b>
<p>先復制一段出來:</p>
<pre>{
  "baseUrl": "http://localhost:8080",
  "pageLoadTimeout": 3000,
  "viewportHeight": 667,
  "viewportWidth": 375
}</pre>
<p>這是一個非常精簡的配置了:</p>

<p>baseUrl 基礎鏈接,之后在是使用 cy.visit 的時候,只需要訪問具體路由例如: cy.visit("/Hello")</p>
<p>
<p>viewport 兩個屬性</p>

<p>viewportHeight 測試窗口的高度</p>
<p>viewportWidth 測試窗口的寬度</p>

</p>
<p>pageLoadTimeout 頁面家安在超過 3000ms 即為超時。</p>

<b>總結</b>
<p>上面是 cypress 的基本用法,cypress 是基于 electron 的一個測試框架,提供 web 環(huán)境進行點對點的測試,在<br>programer 思維下,進行自動化的交互操作,必要點檢測說明,這是一個非常棒的用處。例如之后擁有數(shù)據(jù)埋點,<br>可以在固定的位置檢測是否有埋點。測試想要的地方是否匹配的數(shù)據(jù)。模擬用戶的點擊操作,這都是非常棒的。在<br>jquery 操作年代,各種 id 和 class 奇怪命名下,這些都可以容易找到,在 vue 和 react 大行其道的年代,但<br>是卻可以通過文本尋找節(jié)點。這也是非常棒的體驗,更多秘密需要去體驗,奉上官方地址<br>:官網(wǎng) cypress</p>           
               
                                           
                       
                 </div>
            
                     <div   id="dnkpnhlp"   class="mt-64 tags-seach" >
                 <div   id="dnkpnhlp"   class="tags-info">
                                                                                                                    
                         <a style="width:120px;" title="云服務器" href="http://www.ezyhdfw.cn/site/active/kuaijiesale.html?ytag=seo">云服務器</a>
                                             
                         <a style="width:120px;" title="GPU云服務器" href="http://www.ezyhdfw.cn/site/product/gpu.html">GPU云服務器</a>
                                                                                                                                                 
                                      
                     
                    
                                                                                               <a style="width:120px;" title="進行測試" href="http://www.ezyhdfw.cn/yun/tag/jinxingceshi/">進行測試</a>
                                                                                                           <a style="width:120px;" title="java進行接口測試" href="http://www.ezyhdfw.cn/yun/tag/javajinxingjiekouceshi/">java進行接口測試</a>
                                                                                                           <a style="width:120px;" title="cypress" href="http://www.ezyhdfw.cn/yun/tag/cypress/">cypress</a>
                                                                                                           <a style="width:120px;" title="云主機上可以進行壓力測試嗎" href="http://www.ezyhdfw.cn/yun/tag/yunzhujishangkeyijinxingyaliceshima/">云主機上可以進行壓力測試嗎</a>
                                                         
                 </div>
               
              </div>
             
               <div   id="dnkpnhlp"   class="entry-copyright mb-30">
                   <p class="mb-15"> 文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。</p>
                 
                   <p>轉載請注明本文地址:http://www.ezyhdfw.cn/yun/94633.html</p>
               </div>
                      
               <ul class="pre-next-page">
                 
                                  <li id="dnkpnhlp"    class="ellipsis"><a class="hpf" href="http://www.ezyhdfw.cn/yun/94632.html">上一篇:如何把滑動條變好看一點</a></li>  
                                                
                                       <li id="dnkpnhlp"    class="ellipsis"><a class="hpf" href="http://www.ezyhdfw.cn/yun/94634.html">下一篇:關于js節(jié)流函數(shù)throttle和防抖動debounce</a></li>
                                  </ul>
              </div>
              <div   id="dnkpnhlp"   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="dnkpnhlp"   class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="http://www.ezyhdfw.cn/yun/107684.html"><b>前端<em>E2E</em><em>測試</em>框架 <em>cypress</em>了解一下</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:是一款開箱即用可以跑在瀏覽器上的測試工具。同樣,測試了也可以直接調(diào)試。這個時候我們的測試文件就可以訪問了,點擊之后發(fā)現(xiàn)他需要我們編寫測試用例,那么接下來就手把手教你編寫基本的測試用例。

What is E2E?
所謂的E2E就是end-to-end。  假設我們編寫的每個功能程序都是一個黑匣子,最終用戶也只會看到這個黑匣子,那么站在用戶的角度來看并不需要知道這個黑匣子內(nèi)部是什么東西也不...</p>
                                                   
                          <div   id="dnkpnhlp"   class="com_white-left-info">
                                <div   id="dnkpnhlp"   class="com_white-left-infol">
                                    <a href="http://www.ezyhdfw.cn/yun/u-172.html"><img src="http://www.ezyhdfw.cn/yun/data/avatar/000/00/01/small_000000172.jpg" alt=""><span id="dnkpnhlp"    class="layui-hide64">mushang</span></a>
                                    <time datetime="">2019-08-26 11:51</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="dnkpnhlp"   class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="http://www.ezyhdfw.cn/yun/94439.html"><b>撩<em>測試</em>MM神器<em>cypress</em>使用入門</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:上也有幾個臨時方案,目前我傾向使用自帶的來查看。在打開的測試的瀏覽器中打開切到按下用戶按,輸入,選擇重新刷新并統(tǒng)計代碼執(zhí)行覆蓋率。那么,起來為了高撩質測量試代碼,起來。

不很久不很久以前
據(jù)說某家公司有兩位前端,天天擼bug,為啥嘞?只怪測試MM傾人國,輕語哥哥有bug。?(??????)?? 可是最近兩位有點犯愁 Σ(っ °Д °;)っ。測試MM有幾次提了緊急bug,都在旁邊鼓勵他們...</p>
                                                   
                          <div   id="dnkpnhlp"   class="com_white-left-info">
                                <div   id="dnkpnhlp"   class="com_white-left-infol">
                                    <a href="http://www.ezyhdfw.cn/yun/u-837.html"><img src="http://www.ezyhdfw.cn/yun/data/avatar/000/00/08/small_000000837.jpg" alt=""><span id="dnkpnhlp"    class="layui-hide64">MAX_zuo</span></a>
                                    <time datetime="">2019-08-22 16:32</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="dnkpnhlp"   class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="http://www.ezyhdfw.cn/yun/95054.html"><b>端到端<em>測試</em>哪家強?不容錯過的<em>Cypress</em></b></a></h2>
                                                     <p class="ellipsis2 good">摘要:閱讀原文目前測試工具有哪些項目不需要不需要端到端測試一般都需要一個容器,來運行前端應用。向快速,一致和可靠的無剝落測試問好。

閱讀原文
1. 目前E2E測試工具有哪些?


項目
Web
Star



puppeteer
Chromium (~170Mb Mac, ~282Mb Linux, ~280Mb Win)
31906


nightmare
Electron
15502

...</p>
                                                   
                          <div   id="dnkpnhlp"   class="com_white-left-info">
                                <div   id="dnkpnhlp"   class="com_white-left-infol">
                                    <a href="http://www.ezyhdfw.cn/yun/u-573.html"><img src="http://www.ezyhdfw.cn/yun/data/avatar/000/00/05/small_000000573.jpg" alt=""><span id="dnkpnhlp"    class="layui-hide64">LancerComet</span></a>
                                    <time datetime="">2019-08-22 17:19</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="dnkpnhlp"   class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="http://www.ezyhdfw.cn/yun/99095.html"><b>FE.TEST-前端<em>測試</em>初探</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:使用可以快速生成一個項目,其中包含了和以及覆蓋率統(tǒng)計的配置參考一個創(chuàng)建測試腳本的快速方法其他參考資料前端自動化測試概覽測試之使用對項目進行單元測試

showImg(https://segmentfault.com/img/bVbjfXr?w=600&h=317);
前言
測試可以提供快速反饋,根據(jù)測試用例覆蓋代碼,從而提升代碼開發(fā)效率和質量。根據(jù)投入產(chǎn)出價值,通常迭代較快的業(yè)務邏輯不做...</p>
                                                   
                          <div   id="dnkpnhlp"   class="com_white-left-info">
                                <div   id="dnkpnhlp"   class="com_white-left-infol">
                                    <a href="http://www.ezyhdfw.cn/yun/u-1120.html"><img src="http://www.ezyhdfw.cn/yun/data/avatar/000/00/11/small_000001120.jpg" alt=""><span id="dnkpnhlp"    class="layui-hide64">Travis</span></a>
                                    <time datetime="">2019-08-23 12:55</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="dnkpnhlp"   class="topicone-box-wangeditor">
                  
                  <h3 class="top-com-title mb-64"><span>發(fā)表評論</span></h3>
                   <div   id="dnkpnhlp"   class="xcp-publish-main flex_box_zd">
                                      
                      <div   id="dnkpnhlp"   class="unlogin-pinglun-box">
                        <a href="javascript:login()" class="grad">登陸后可評論</a>
                      </div>                   </div>
               </div>
              <div   id="dnkpnhlp"   class="site-box-content">
                <div   id="dnkpnhlp"   class="site-content-title">
                  <h3 class="top-com-title mb-64"><span>0條評論</span></h3>   
                </div> 
                      <div   id="dnkpnhlp"   class="pages"></ul></div>
              </div>
           </div>
           <div   id="dnkpnhlp"   class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right">
              <div   id="dnkpnhlp"   class=""> 
                <div   id="dnkpnhlp"   class="com_layuiright-box user-msgbox">
                    <a href="http://www.ezyhdfw.cn/yun/u-768.html"><img src="http://www.ezyhdfw.cn/yun/data/avatar/000/00/07/small_000000768.jpg" alt=""></a>
                    <h3><a href="http://www.ezyhdfw.cn/yun/u-768.html" rel="nofollow">chnmagnus</a></h3>
                    <h6>男<span>|</span>高級講師</h6>
                    <div   id="dnkpnhlp"   class="flex_box_zd user-msgbox-atten">
                     
                                                                      <a href="javascript:attentto_user(768)" id="attenttouser_768" class="grad follow-btn notfollow attention">我要關注</a>
      
                                                                                        <a href="javascript:login()" title="發(fā)私信" >我要私信</a>
                     
                                            
                    </div>
                    <div   id="dnkpnhlp"   class="user-msgbox-list flex_box_zd">
                          <h3 class="hpf">TA的文章</h3>
                          <a href="http://www.ezyhdfw.cn/yun/ut-768.html" class="box_hxjz">閱讀更多</a>
                    </div>
                      <ul class="user-msgbox-ul">
                                                  <li><h3 class="ellipsis"><a href="http://www.ezyhdfw.cn/yun/119914.html">把 RNN 循環(huán)神經(jīng)網(wǎng)絡植入體內(nèi),僅憑一張“薄片”,就能直接檢測你有無心律異常</a></h3>
                            <p>閱讀 3674<span>·</span>2021-09-13 10:28</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://www.ezyhdfw.cn/yun/118068.html">SecureIDC:$19/月/1GB內(nèi)存/100GB SSD空間/500GB流量/1Gbps端口/</a></h3>
                            <p>閱讀 2019<span>·</span>2021-08-10 09:43</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://www.ezyhdfw.cn/yun/116086.html">第三集: 從零開始實現(xiàn)一套pc端vue的ui組件庫(button組件其一)</a></h3>
                            <p>閱讀 1085<span>·</span>2019-08-30 15:44</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://www.ezyhdfw.cn/yun/115408.html">Bootstrap 柵格布局</a></h3>
                            <p>閱讀 3264<span>·</span>2019-08-30 13:14</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://www.ezyhdfw.cn/yun/113990.html">解決input 中placeholder的那些神坑</a></h3>
                            <p>閱讀 1965<span>·</span>2019-08-29 16:56</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://www.ezyhdfw.cn/yun/113841.html">一個常年更新的CSS采坑合集</a></h3>
                            <p>閱讀 3010<span>·</span>2019-08-29 16:35</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://www.ezyhdfw.cn/yun/112270.html">HTML CSS 實現(xiàn)鼠標懸停時圖片拉近效果</a></h3>
                            <p>閱讀 2929<span>·</span>2019-08-29 12:58</p></li>
                                                       <li><h3 class="ellipsis"><a href="http://www.ezyhdfw.cn/yun/109497.html">canvas-塔防游戲</a></h3>
                            <p>閱讀 943<span>·</span>2019-08-26 13:46</p></li>
                                                
                      </ul>
                </div>

                   <!-- 文章詳情右側廣告-->
              
  <div   id="dnkpnhlp"   class="com_layuiright-box">
                  <h6 class="top-com-title"><span>最新活動</span></h6> 
           
         <div   id="dnkpnhlp"   class="com_adbox">
                    <div   id="dnkpnhlp"   class="layui-carousel" id="right-item">
                      <div carousel-item>
                                                                                                                       <div>
                          <a href="http://www.ezyhdfw.cn/site/active/kuaijiesale.html?ytag=seo"  rel="nofollow">
                            <img src="http://www.ezyhdfw.cn/yun/data/attach/240625/2rTjEHmi.png" alt="云服務器">                                 
                          </a>
                        </div>
                                                <div>
                          <a href="http://www.ezyhdfw.cn/site/product/gpu.html"  rel="nofollow">
                            <img src="http://www.ezyhdfw.cn/yun/data/attach/240807/7NjZjdrd.png" alt="GPU云服務器">                                 
                          </a>
                        </div>
                                                                   
                    
                        
                      </div>
                    </div>
                      
                    </div>                    <!-- banner結束 -->
              
<div   id="dnkpnhlp"   class="adhtml">

</div>
                <script>
                $(function(){
                    $.ajax({
                        type: "GET",
                                url:"http://www.ezyhdfw.cn/yun/ad/getad/1.html",
                                cache: false,
                                success: function(text){
                                  $(".adhtml").html(text);
                                }
                        });
                    })
                </script>                </div>              </div>
           </div>
        </div>
      </div> 
    </section>
    <!-- wap拉出按鈕 -->
     <div   id="dnkpnhlp"   class="site-tree-mobile layui-hide">
      <i class="layui-icon layui-icon-spread-left"></i>
    </div>
    <!-- wap遮罩層 -->
    <div   id="dnkpnhlp"   class="site-mobile-shade"></div>
    
       <!--付費閱讀 -->
       <div   class="dnkpnhlp"   id="payread">
         <div   id="dnkpnhlp"   class="layui-form-item">閱讀需要支付1元查看</div>  
         <div   id="dnkpnhlp"   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://www.ezyhdfw.cn/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css">
    <script src="http://www.ezyhdfw.cn/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script>
    <script src="http://www.ezyhdfw.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://www.ezyhdfw.cn/yun/index.php?topic/ajaxhassupport/" + tid,
                 cache: false,
                 success: function(hassupport){
                 if (hassupport != '1'){






                         $.ajax({
                         type: "GET",
                                 cache:false,
                                 url: "http://www.ezyhdfw.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://www.ezyhdfw.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="dnkpnhlp"   class="layui-container">
            <div   id="dnkpnhlp"   class="flex_box_zd">
              <div   id="dnkpnhlp"   class="left-footer">
                    <h6><a href="http://www.ezyhdfw.cn/"><img src="http://www.ezyhdfw.cn/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="dnkpnhlp"   class="right-footer layui-hidemd">
                  <ul class="flex_box_zd">
                      <li>
                        <h6>UCloud與云服務</h6>
                         <p><a href="http://www.ezyhdfw.cn/site/about/intro/">公司介紹</a></p>
                         <p><a  >加入我們</a></p>
                         <p><a href="http://www.ezyhdfw.cn/site/ucan/onlineclass/">UCan線上公開課</a></p>
                         <p><a href="http://www.ezyhdfw.cn/site/solutions.html" >行業(yè)解決方案</a></p>                                                  <p><a href="http://www.ezyhdfw.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 >AI繪畫</a></p>
                                              <p><a >Wavespeed AI</a></p> 
                                             
                      </li>
                      <li>
                        <h6>社區(qū)欄目</h6>
                         <p><a href="http://www.ezyhdfw.cn/yun/column/index.html">專欄文章</a></p>
                     <p><a href="http://www.ezyhdfw.cn/yun/udata/">專題地圖</a></p>                      </li>
                      <li>
                        <h6>常見問題</h6>
                         <p><a href="http://www.ezyhdfw.cn/site/ucsafe/notice.html" >安全中心</a></p>
                         <p><a href="http://www.ezyhdfw.cn/site/about/news/recent/" >新聞動態(tài)</a></p>
                         <p><a href="http://www.ezyhdfw.cn/site/about/news/report/">媒體動態(tài)</a></p>                                                  <p><a href="http://www.ezyhdfw.cn/site/cases.html">客戶案例</a></p>                                                
                         <p><a href="http://www.ezyhdfw.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="dnkpnhlp"   class="copyright">Copyright ? 2012-2025 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://www.ezyhdfw.cn/" title="亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站
">亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站
</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="zbr53" class="pl_css_ganrao" style="display: none;"><form id="zbr53"><ruby id="zbr53"></ruby></form><span id="zbr53"><ins id="zbr53"></ins></span><i id="zbr53"></i><address id="zbr53"><menuitem id="zbr53"></menuitem></address><b id="zbr53"><rp id="zbr53"><dfn id="zbr53"><th id="zbr53"></th></dfn></rp></b><legend id="zbr53"><sup id="zbr53"></sup></legend><u id="zbr53"><label id="zbr53"><legend id="zbr53"><sup id="zbr53"></sup></legend></label></u><u id="zbr53"><acronym id="zbr53"></acronym></u><nobr id="zbr53"><legend id="zbr53"></legend></nobr><track id="zbr53"><thead id="zbr53"><dl id="zbr53"><p id="zbr53"></p></dl></thead></track><acronym id="zbr53"><track id="zbr53"><style id="zbr53"><dl id="zbr53"></dl></style></track></acronym><ins id="zbr53"><p id="zbr53"></p></ins><style id="zbr53"><label id="zbr53"><meter id="zbr53"><form id="zbr53"></form></meter></label></style><font id="zbr53"><dfn id="zbr53"><i id="zbr53"><font id="zbr53"></font></i></dfn></font><ins id="zbr53"><legend id="zbr53"><ol id="zbr53"><strike id="zbr53"></strike></ol></legend></ins><optgroup id="zbr53"></optgroup><font id="zbr53"><ol id="zbr53"></ol></font><em id="zbr53"></em><strong id="zbr53"><p id="zbr53"><sub id="zbr53"><video id="zbr53"></video></sub></p></strong><ins id="zbr53"></ins><thead id="zbr53"><address id="zbr53"></address></thead><pre id="zbr53"></pre><pre id="zbr53"><sub id="zbr53"><video id="zbr53"><p id="zbr53"></p></video></sub></pre><dfn id="zbr53"></dfn><i id="zbr53"><dfn id="zbr53"><th id="zbr53"><style id="zbr53"></style></th></dfn></i><address id="zbr53"></address><sub id="zbr53"><progress id="zbr53"></progress></sub><ol id="zbr53"><rp id="zbr53"><dfn id="zbr53"><track id="zbr53"></track></dfn></rp></ol><sub id="zbr53"><mark id="zbr53"></mark></sub><thead id="zbr53"></thead><strong id="zbr53"><var id="zbr53"></var></strong><pre id="zbr53"></pre><ins id="zbr53"></ins><form id="zbr53"><label id="zbr53"></label></form><big id="zbr53"></big><nobr id="zbr53"><optgroup id="zbr53"><dfn id="zbr53"><i id="zbr53"></i></dfn></optgroup></nobr><style id="zbr53"></style><th id="zbr53"><form id="zbr53"></form></th><progress id="zbr53"></progress><small id="zbr53"><ol id="zbr53"></ol></small><sup id="zbr53"><mark id="zbr53"></mark></sup><em id="zbr53"><sup id="zbr53"><mark id="zbr53"><dfn id="zbr53"></dfn></mark></sup></em><span id="zbr53"></span><div id="zbr53"></div><address id="zbr53"><menuitem id="zbr53"></menuitem></address><rp id="zbr53"><small id="zbr53"><track id="zbr53"><form id="zbr53"></form></track></small></rp><th id="zbr53"></th><dfn id="zbr53"><track id="zbr53"><form id="zbr53"><acronym id="zbr53"></acronym></form></track></dfn><pre id="zbr53"><thead id="zbr53"></thead></pre><address id="zbr53"><track id="zbr53"></track></address><strike id="zbr53"><em id="zbr53"><track id="zbr53"><form id="zbr53"></form></track></em></strike><dfn id="zbr53"><var id="zbr53"></var></dfn><label id="zbr53"></label><label id="zbr53"><output id="zbr53"><style id="zbr53"><form id="zbr53"></form></style></output></label><label id="zbr53"><form id="zbr53"><track id="zbr53"><style id="zbr53"></style></track></form></label><rp id="zbr53"></rp><dfn id="zbr53"><progress id="zbr53"><p id="zbr53"><ol id="zbr53"></ol></p></progress></dfn><div id="zbr53"><span id="zbr53"></span></div><ol id="zbr53"></ol><dfn id="zbr53"></dfn><style id="zbr53"><address id="zbr53"></address></style><menuitem id="zbr53"><u id="zbr53"></u></menuitem><label id="zbr53"><label id="zbr53"><meter id="zbr53"><u id="zbr53"></u></meter></label></label><b id="zbr53"></b><track id="zbr53"><u id="zbr53"><rp id="zbr53"><optgroup id="zbr53"></optgroup></rp></u></track><optgroup id="zbr53"><th id="zbr53"></th></optgroup><acronym id="zbr53"></acronym><p id="zbr53"></p><dfn id="zbr53"></dfn><strong id="zbr53"></strong><acronym id="zbr53"></acronym><progress id="zbr53"></progress><span id="zbr53"><big id="zbr53"></big></span><dl id="zbr53"><div id="zbr53"><thead id="zbr53"><mark id="zbr53"></mark></thead></div></dl><legend id="zbr53"><span id="zbr53"><listing id="zbr53"><legend id="zbr53"></legend></listing></span></legend><sub id="zbr53"><video id="zbr53"></video></sub><small id="zbr53"><sup id="zbr53"><big id="zbr53"><font id="zbr53"></font></big></sup></small><label id="zbr53"><menuitem id="zbr53"></menuitem></label><dl id="zbr53"></dl><span id="zbr53"><progress id="zbr53"><font id="zbr53"><meter id="zbr53"></meter></font></progress></span><mark id="zbr53"></mark><rp id="zbr53"></rp><label id="zbr53"><acronym id="zbr53"></acronym></label><sup id="zbr53"><progress id="zbr53"></progress></sup><u id="zbr53"></u><track id="zbr53"></track><dl id="zbr53"></dl><menuitem id="zbr53"><label id="zbr53"><dl id="zbr53"><output id="zbr53"></output></dl></label></menuitem><dfn id="zbr53"><dfn id="zbr53"><thead id="zbr53"><font id="zbr53"></font></thead></dfn></dfn><i id="zbr53"><form id="zbr53"><menuitem id="zbr53"><u id="zbr53"></u></menuitem></form></i><em id="zbr53"><dfn id="zbr53"><thead id="zbr53"><dfn id="zbr53"></dfn></thead></dfn></em><i id="zbr53"><acronym id="zbr53"><menuitem id="zbr53"><style id="zbr53"></style></menuitem></acronym></i><video id="zbr53"><p id="zbr53"></p></video><pre id="zbr53"><span id="zbr53"></span></pre><dfn id="zbr53"></dfn><tt id="zbr53"><nobr id="zbr53"></nobr></tt><mark id="zbr53"></mark><menuitem id="zbr53"><style id="zbr53"></style></menuitem><progress id="zbr53"></progress><i id="zbr53"><address id="zbr53"></address></i><video id="zbr53"><em id="zbr53"></em></video><ruby id="zbr53"><label id="zbr53"><listing id="zbr53"><p id="zbr53"></p></listing></label></ruby><address id="zbr53"><meter id="zbr53"></meter></address><acronym id="zbr53"></acronym><sub id="zbr53"><nobr id="zbr53"></nobr></sub><em id="zbr53"><track id="zbr53"></track></em><p id="zbr53"><tt id="zbr53"><nobr id="zbr53"><strong id="zbr53"></strong></nobr></tt></p><optgroup id="zbr53"></optgroup><thead id="zbr53"></thead><thead id="zbr53"><listing id="zbr53"><meter id="zbr53"><form id="zbr53"></form></meter></listing></thead><em id="zbr53"><th id="zbr53"><thead id="zbr53"><dfn id="zbr53"></dfn></thead></th></em><dl id="zbr53"><p id="zbr53"><sup id="zbr53"><thead id="zbr53"></thead></sup></p></dl><pre id="zbr53"></pre><track id="zbr53"><strike id="zbr53"><em id="zbr53"><track id="zbr53"></track></em></strike></track><big id="zbr53"><font id="zbr53"></font></big><label id="zbr53"><div id="zbr53"></div></label><dfn id="zbr53"><th id="zbr53"><form id="zbr53"><nobr id="zbr53"></nobr></form></th></dfn><b id="zbr53"><rp id="zbr53"><small id="zbr53"><track id="zbr53"></track></small></rp></b><video id="zbr53"><dfn id="zbr53"><track id="zbr53"><u id="zbr53"></u></track></dfn></video><thead id="zbr53"><small id="zbr53"><output id="zbr53"><form id="zbr53"></form></output></small></thead><p id="zbr53"></p><i id="zbr53"><listing id="zbr53"><pre id="zbr53"><dfn id="zbr53"></dfn></pre></listing></i><font id="zbr53"><pre id="zbr53"><ins id="zbr53"><strong id="zbr53"></strong></ins></pre></font><output id="zbr53"><i id="zbr53"></i></output><div id="zbr53"><form id="zbr53"><listing id="zbr53"><strong id="zbr53"></strong></listing></form></div><form id="zbr53"><legend id="zbr53"></legend></form><em id="zbr53"><th id="zbr53"><form id="zbr53"><nobr id="zbr53"></nobr></form></th></em><span id="zbr53"></span><form id="zbr53"></form><thead id="zbr53"><mark id="zbr53"><font id="zbr53"><menuitem id="zbr53"></menuitem></font></mark></thead><b id="zbr53"><label id="zbr53"><meter id="zbr53"><form id="zbr53"></form></meter></label></b><legend id="zbr53"></legend><style id="zbr53"><acronym id="zbr53"><track id="zbr53"><strike id="zbr53"></strike></track></acronym></style><form id="zbr53"><nobr id="zbr53"></nobr></form><label id="zbr53"><address id="zbr53"></address></label><ol id="zbr53"><progress id="zbr53"><em id="zbr53"><dfn id="zbr53"></dfn></em></progress></ol><dfn id="zbr53"></dfn><dfn id="zbr53"><thead id="zbr53"></thead></dfn><acronym id="zbr53"><legend id="zbr53"></legend></acronym><ins id="zbr53"><var id="zbr53"><style id="zbr53"><listing id="zbr53"></listing></style></var></ins><thead id="zbr53"></thead><ol id="zbr53"></ol><em id="zbr53"></em><output id="zbr53"></output><output id="zbr53"><label id="zbr53"><label id="zbr53"><div id="zbr53"></div></label></label></output><output id="zbr53"></output><address id="zbr53"><th id="zbr53"><big id="zbr53"><small id="zbr53"></small></big></th></address><strong id="zbr53"><dfn id="zbr53"><form id="zbr53"><nobr id="zbr53"></nobr></form></dfn></strong><b id="zbr53"><rp id="zbr53"></rp></b><pre id="zbr53"><strong id="zbr53"><meter id="zbr53"><form id="zbr53"></form></meter></strong></pre></div>
<script src="http://www.ezyhdfw.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>