JS一些碎知識點

來源:互聯網
上載者:User

標籤:工作   問題   ie8   tee   底線   模式   http   就會   基本知識   

一些js基本知識點
Doctype 瀏覽器渲染模式
  • 渲染模式發展曆史

在多年以前(IE6誕生以前),各瀏覽器都處於各自比較封閉的發展中(基本沒有相容性可談)。隨著WEB的發展,相容性問題的解決越來越顯得迫切,隨即,各瀏覽器廠商發布了按照標準模式(遵循各廠商制定的統一標準)工作的瀏覽器,比如IE6就是其中之一。但是考慮到以前建設的網站並不支援標準模式,所以各瀏覽器在加入標準模式的同時也保留了混雜模式(即以前那種未按照統一標準工作的模式,也叫怪異模式)。

  • 標準模式(不相容之前的文法)

    • html 4.0

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

    • xhtml 1.0

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    • html5

      <!DOCTYPE html>

    • P.S. 細心的你可以看出隨著html版本的發展,標準模式的寫法也在變化著

  • 怪異模式 / 混雜模式

    • 很簡單,將開頭標準模式的聲明去掉即可

    • IE6的怪異模式,有個新的盒模型,border和padding都屬於寬高的範疇

label
  • label中有一個for屬性,可以將該label和一個input綁定,當我們點擊該label的文字時,input也回聚焦

  • for 屬性 — >  js中表示htmlFor

<label for="input">User:</label>    <input id="input" type="text" name="user" value="" placeholder="請輸入使用者名稱" />

 

圖片預先載入
  • 假設這樣一種需求,在文檔載入完畢後的某個時刻,可能幾秒後,可能幾分鐘後,也可能半小時後,我們要通過js動態插入一張10M的大圖片?

  • 會產生這樣的問題?圖片太大,網速又不快,所以圖片載入需要很長時間,所以導致頁面上的那個圖片只呈現了部分,甚至沒有呈現,一片空白,形成了極其差的使用者體驗。

  • 如何解決呢?那就是圖片預先載入,在圖片還沒動態插入之前,我們就創造img節點,並為之設定src,在設定src後,瀏覽器就會開始下載src上的資源,然後在我們需要的時候即可瞬間插入文檔

  • 啟發?在請求的資源需要載入很長時間的情況下,我們可以預先載入,在需要使用的時候,直接用就可以,極大提高了使用者體驗

封裝 getElementsByClassName(); IE8及以下不相容
  • 類名、id名不像js標識符命名那麼規範,盡量別用特殊字元就行

  • js標識符規範,由字母,數字,底線,$ 組成,但不能以數字開頭

// 封裝js中的getElenmentsByClassName();    Document.prototype.getByClassName = function (className) {        var allEle = document.getElementsByTagName(‘*‘);        var retArr = {            length: 0,            push: Array.prototype.push        };        var len = allEle.length;        var regBlank = /^\s|\s$/g;        for(var i = 0; i < len; i++) {            var strForClass = allEle[i].className                allEle[i].className                 && allEle[i].className.replace(regBlank, ‘‘).indexOf(className) !== -1                 && retArr.push(allEle[i]);        }        return retArr;    }

 

 
Math對象
  • Math.sqrt()

    • 開方
  • Math.floor()

    • 向下取整
  • Math .ceil()

    • 向上取整
  • Math.random()

    • Math.random()  (0, 1)

    • eg: (5, 15) -》 Math.random() * 10 + 5

    • 先看區間 15 - 5 = 10

    • 再看起始點 5

    • 所以Math.random() * 10 + 5

文檔片段
  • 每次我們操作dom都會引起Reflow 或 Repaint,所以過多次的dom操作會降低效能

  • 但是我們可以將一些dom操作集合起來再操作dom,可減少Reflow或Repaint

  • 建立文檔片段

    • var frag = document.createDocumentFragment();

    • 該片段具有正常dom節點的所有方法

 var frag = document.createDocumentFragment();    var div = document.createElement(‘div‘);    var span = document.createElement(‘span‘);    frag.sppendChild(div);    frag.appendChild(span);    document.body.appendChild(frag);

 

cdn
  • 基站

  • CDN的全稱是Content Delivery Network,即內容分髮網絡。

  • 原理:

簡單地說,內容分髮網絡(CDN)是一個經策略性部署的整體系統,包括分布式儲存、負載平衡、網路請求的重新導向和內容管理4個要件,而內容管理和全域的網路流量管理(Traffic Management)是CDN的核心所在。
通過使用者就近性和伺服器負載的判斷,CDN確保內容以一種極為高效的方式為使用者的請求提供服務。總的來說,內容服務基於快取服務器,也稱作代理緩衝(Surrogate),
它位於網路的邊緣,距使用者僅有"一跳"(Single Hop)之遙。同時,代理緩衝是內容供應商原始伺服器(通常位於CDN服務提供者的資料中心)的一個透明鏡像。
這樣的架構使得CDN服務提供者能夠代表他們客戶,即內容供應商,向終端使用者提供儘可能好的體驗,而這些使用者是不能容忍請求回應時間有任何延遲的。

JS一些碎知識點

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.