JS框架設計讀書筆記之 節點模組

2022-02-09 08:34:13 字數 980 閱讀 8129

瀏覽器提供了多種手段建立api,從流行程度依次是document.createelement、innerhtml、insertadjacenthtml、createcontextualfragment。

document.createelement:傳入乙個標籤名,返回此型別的元素節點。對於瀏覽器不支援的節點型別,也可以支援,後來被用於ie6-ie8支援h5新標籤。  

console.log(document.createelement('abc'));    //

innerhtml:建立效率至少比createelement快2-10倍,並且可以一次性大量生成節點,但是對於空白的處理有相容問題;另外innerhtml不會執行script裡面的指令碼,jquery直接用正則把內容抽出來使用全域性eval執行了。最後乙個問題是有些標籤不能直接作為div的子標籤,例如tr、td、th,框架用特殊標籤包裹這些,結果後來發現瀏覽器會自動補全這些標籤...

insertadjacenthtml:可以靈活的將節點插入任意位置,但是同樣有標籤包裹問題。

clonenode:ie會複製繫結的事件,由於引用不是來自框架,也無法解除,一般框架重寫api,接受乙個布林引數決定是否複製事件。

removenode:ie私有實現,將目標從文件樹中刪除,返回目標節點。接受乙個引數,false時僅刪除目標節點,保留子節點。

removechild:在老ie有記憶體洩露問題,因為在ie6-ie8中存在乙個叫dom超空間的概念,當元素移出dom樹,又有js關聯時,此元素不會消失,會被儲存到乙個叫超空間的地方。

//

ext框架中針對ie6/ie7的重寫

var removenode = ie6 || ie7 ? function

() }

}() :

function

(node)

JS框架設計讀書筆記之 核心模組

該模組是框架最先執行的部分,jquery與vue中都有初始化的 模組的功能主要是 物件擴充套件 陣列化 型別判定 事件繫結和解綁 無衝突處理 模組載入 domready 物件擴充套件 jquery.extend first.length i return first grep function el...

JS框架設計讀書筆記之 動畫

css樣式可分為兩種,一種值接近無限的集合 color,width 一種值只有幾種 display 可以進行計算的樣式,產生了動畫效果。1.動畫的第一步是獲得元素的精確樣式值。2.若要做平移,傳入結束位置 距離 時長 fps。tips fps設定多少合適?除了人的眼睛,還要考慮到顯示器的顯示速度與瀏...

JS框架設計讀書筆記之 選擇器引擎02

以sizzle的主函式宣告為例,來說明引擎的相關概念。function sizzle selector,context,results,seed 種子集seed 如果css選擇器非常複雜,需要分幾步來得到結果,那麼第一次得到的元素集合就叫種子集。sizzle引擎的解析基本上是由右到左,種子集中的一部...