第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

建議在JavaScript之前包含CSS無(wú)效嗎?

建議在JavaScript之前包含CSS無(wú)效嗎?

哈士奇WWW 2019-12-06 16:01:32
在網(wǎng)上的無(wú)數(shù)地方,我看到了建議在JavaScript之前包含CSS。推理通常采用以下形式:在訂購(gòu)CSS和JavaScript時(shí),您希望CSS排在第一位。原因是渲染線程具有渲染頁(yè)面所需的所有樣式信息。如果首先包含JavaScript,則JavaScript引擎必須先解析所有內(nèi)容,然后再繼續(xù)下一組資源。這意味著渲染線程無(wú)法完全顯示頁(yè)面,因?yàn)樗鼪](méi)有所需的所有樣式。我的實(shí)際測(cè)試揭示了完全不同的東西:我的測(cè)試工具我使用以下Ruby腳本為各種資源生成特定的延遲:require 'rubygems'require 'eventmachine'require 'evma_httpserver'require 'date'class Handler  < EventMachine::Connection  include EventMachine::HttpServer  def process_http_request    resp = EventMachine::DelegatedHttpResponse.new( self )    return unless @http_query_string    path = @http_path_info    array = @http_query_string.split("&").map{|s| s.split("=")}.flatten    parsed = Hash[*array]    delay = parsed["delay"].to_i / 1000.0    jsdelay = parsed["jsdelay"].to_i    delay = 5 if (delay > 5)    jsdelay = 5000 if (jsdelay > 5000)    delay = 0 if (delay < 0)     jsdelay = 0 if (jsdelay < 0)    # Block which fulfills the request    operation = proc do      sleep delay       if path.match(/.js$/)        resp.status = 200        resp.headers["Content-Type"] = "text/javascript"        resp.content = "(function(){            var start = new Date();            while(new Date() - start < #{jsdelay}){}          })();"      end      if path.match(/.css$/)        resp.status = 200        resp.headers["Content-Type"] = "text/css"        resp.content = "body {font-size: 50px;}"      end    end    # Callback block to execute once the request is fulfilled    callback = proc do |res|        resp.send_response    end上面的微型服務(wù)器允許我為JavaScript文件(服務(wù)器和客戶端)設(shè)置任意延遲,以及CSS延遲。例如,http://10.0.0.50:8081/test.css?delay=500給我500毫秒的CSS傳輸延遲。當(dāng)我首先包含CSS時(shí),頁(yè)面需要1.5秒的時(shí)間來(lái)呈現(xiàn):CSS優(yōu)先當(dāng)我首先包含JavaScript時(shí),頁(yè)面需要1.4秒的時(shí)間呈現(xiàn):JavaScript優(yōu)先我在Chrome,F(xiàn)irefox和Internet Explorer中得到了類似的結(jié)果。但是,在Opera中,排序根本沒(méi)有關(guān)系。似乎正在發(fā)生的事情是JavaScript解釋器拒絕啟動(dòng),直到所有CSS被下載為止。因此,隨著JavaScript線程獲得更多的運(yùn)行時(shí)間,似乎首先包含JavaScript會(huì)更有效。我是否遺漏了什么,建議將CSS包含放在JavaScript包含之前是不正確的?顯然,我們可以添加異步或使用setTimeout釋放渲染線程或?qū)avaScript代碼放在頁(yè)腳中,或使用JavaScript加載器。這里的重點(diǎn)是關(guān)于頭部中必需的JavaScript位和CSS位的排序。
查看完整描述

3 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊

我不會(huì)在您獲得的結(jié)果上強(qiáng)調(diào)太多,我相信這是主觀的,但是我有理由向您解釋,最好將CSS放在js之前。


在加載網(wǎng)站期間,您會(huì)看到兩種情況:


案例1:白屏>無(wú)樣式的網(wǎng)站>樣式化的網(wǎng)站>交互>樣式化和交互式的網(wǎng)站


案例2:白屏>無(wú)樣式的網(wǎng)站>交互性>樣式化的網(wǎng)站>樣式化和交互式的網(wǎng)站


我真的無(wú)法想象有人選擇案例2。這意味著使用慢速互聯(lián)網(wǎng)連接的訪問(wèn)者將面臨一個(gè)無(wú)樣式的網(wǎng)站,該網(wǎng)站允許他們使用Javascript與該網(wǎng)站進(jìn)行互動(dòng)(因?yàn)樵摼W(wǎng)站已經(jīng)加載)。此外,通過(guò)這種方式可以最大程度地增加花在瀏覽無(wú)樣式網(wǎng)站上的時(shí)間。為什么有人要那個(gè)?


正如jQuery所述,它也可以更好地工作


“當(dāng)使用依賴CSS樣式屬性值的腳本時(shí),在引用腳本之前引用外部樣式表或嵌入樣式元素很重要”。


當(dāng)文件以錯(cuò)誤的順序加載(首先是JS,然后是CSS)時(shí),依賴于CSS文件中設(shè)置的屬性(例如div的寬度或高度)的任何Javascript代碼都將無(wú)法正確加載。似乎使用錯(cuò)誤的加載順序,正確的屬性有時(shí)是Javascript已知的(也許這是由競(jìng)爭(zhēng)條件引起的嗎?)。根據(jù)使用的瀏覽器,此效果似乎更大或更小。


查看完整回答
反對(duì) 回復(fù) 2019-12-06
  • 3 回答
  • 0 關(guān)注
  • 605 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)