摘要:總共寫了四篇文章都是自己的一些拙見,僅供參考,請多多指教,我這邊也會持續(xù)修正加更新介紹一下基本用法介紹一下渲染原理介紹一下的算法和對值的認(rèn)識介紹一下對于兼容的修改這篇主要是記錄一下針對做了哪些修改增加用來兼容某些功能函數(shù),例如等將每個文件單
總共寫了四篇文章(都是自己的一些拙見,僅供參考,請多多指教,我這邊也會持續(xù)修正加更新)
介紹一下snabbdom基本用法
介紹一下snabbdom渲染原理
介紹一下snabddom的diff算法和對key值的認(rèn)識
介紹一下對于兼容IE8的修改
這篇主要是記錄一下針對ie8做了哪些修改
增加polyfill.js用來兼容某些功能函數(shù),例如addeventliostener,forEach等
將每個文件多帶帶用對象封裝供其他文件使用
舉例: 導(dǎo)出 //a.js aModule={}; (function(aModule){ aModule.init=function(){} })(aModule) 導(dǎo)入 var init=aModule.init;
class.js(IE8沒有classList屬性)
elm.classList.remove(name); //兼容IE8 改為: if (elm.classList) { elm.classList.remove(name); } else { //兼容IE8 elm.className = elm.className.replace(name, ""); } elm.classList[cur ? "add" : "remove"](name); 改為: if (elm.classList) { elm.classList[cur ? "add" : "remove"](name); } else { //兼容IE8 if (cur) { //add elm.className += " " + name; } else { //remove elm.className = elm.className.replace(name, ""); } }
dataset.js(IE8沒有dataset屬性)
delete elm.dataset[key]; elm.dataset[key] = dataset[key]; 改為: _updateDataset(elm, "remove", key) _updateDataset(elm, "set", key, dataset[key]) //兼容IE8 function _updateDataset(elm, type, key, val) { if (elm.dataset) { if ("remove" == type) { delete elm.dataset[key]; } else { elm.dataset[key] = val; } } else { var name; name = "data-" + key; if ("remove" == type) { elm.removeAttribute(name); } else { elm.setAttribute(name, val); } } }
eventlistener.js(這里比較奇怪的就是綁定在handler函數(shù)上的vnode屬性在IE8上無法訪問,所以我在這里采用的是將vnode主動傳遞進(jìn)去,通過閉包保存)
var listener = vnode.listener = oldVnode.listener || createListener();
改為:
var listener = vnode.listener = oldVnode.listener || createListener(vnode);
function createListener() { //兼容IE8,訪問不到handler.vnode,得傳進(jìn)來 return function handler(event) { handleEvent(event, handler.vnode); } } 改為: function createListener(vnode) { //兼容IE8,訪問不到handler.vnode,得傳進(jìn)來 return function handler(event) { if (handler.vnode) { handleEvent(event, handler.vnode); } else { handleEvent(event, vnode); } } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/100370.html
摘要:閑聊在學(xué)的過程中,虛擬應(yīng)該是聽的最多的概念之一,得知其是借鑒進(jìn)行開發(fā),故習(xí)之。以我的觀點來看,多個相同元素渲染時,則需要為每個元素添加值。 閑聊:在學(xué)vue的過程中,虛擬dom應(yīng)該是聽的最多的概念之一,得知其是借鑒snabbdom.js進(jìn)行開發(fā),故習(xí)之。由于我工作處于IE8的環(huán)境,對ES6,TS這些知識的練習(xí)也只是淺嘗輒止,而snabbdom.js從v.0.5.4這個版本后開始使用TS...
摘要:毫無疑問的是算法的復(fù)雜度與效率是決定能夠帶來性能提升效果的關(guān)鍵因素。速度略有損失,但可讀性大大提高。因此目前的主流算法趨向一致,在主要思路上,與的方式基本相同。在里面實現(xiàn)了的算法與支持。是唯一添加的方法所以只發(fā)生在中。 VirtualDOM是react在組件化開發(fā)場景下,針對DOM重排重繪性能瓶頸作出的重要優(yōu)化方案,而他最具價值的核心功能是如何識別并保存新舊節(jié)點數(shù)據(jù)結(jié)構(gòu)之間差異的方法,...
摘要:總共寫了四篇文章都是自己的一些拙見,僅供參考,請多多指教,我這邊也會持續(xù)修正加更新介紹一下基本用法介紹一下渲染原理介紹一下的算法和對值的認(rèn)識介紹一下對于兼容的修改這篇主要是說一下的算法在上一篇中我總結(jié)過對比渲染的流程大體分為通過來判斷兩個是 總共寫了四篇文章(都是自己的一些拙見,僅供參考,請多多指教,我這邊也會持續(xù)修正加更新) 介紹一下snabbdom基本用法 介紹一下snabbdo...
摘要:如果新舊的和都相同,說明兩個相似,我們就可以保留舊的節(jié)點,再具體去比較其差異性,在舊的上進(jìn)行打補丁否則直接替換節(jié)點。 總共寫了四篇文章(都是自己的一些拙見,僅供參考,請多多指教,我這邊也會持續(xù)修正加更新) 介紹一下snabbdom基本用法 介紹一下snabbdom渲染原理 介紹一下snabddom的diff算法和對key值的認(rèn)識 介紹一下對于兼容IE8的修改 這篇我將以自己的思路去...
摘要:這個大概是的鉤子吧在每一次插入操作的時候都將節(jié)點這類型方法可以看出來是在調(diào)用對應(yīng)的方法因為開始的時候就導(dǎo)入進(jìn)來了插入節(jié)點操作的時候都需要加入子節(jié)點有子元素也就是的時候遞歸調(diào)用循環(huán)子節(jié)點生成對應(yīng)著一些操作之后都要觸發(fā)鉤子函數(shù)。 snabbdom 本文的snabbdom源碼分析采用的是0.54版本(即未用ts重寫前的最后一版) 前期了解 snabbdom被用作vue的虛擬dom。本文的一個...
閱讀 2196·2021-11-15 11:36
閱讀 1366·2021-10-14 09:42
閱讀 4178·2021-09-30 09:52
閱讀 1690·2021-09-24 10:24
閱讀 941·2021-09-02 09:56
閱讀 2664·2019-08-30 13:11
閱讀 3043·2019-08-30 13:06
閱讀 929·2019-08-30 12:56