成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

h5性能優(yōu)化,細(xì)節(jié)決定結(jié)果。

desdik / 2468人閱讀

摘要:介紹一些最近整理的優(yōu)化細(xì)節(jié)。今天就說(shuō)一下大家寫(xiě)代碼時(shí)可以培養(yǎng)的優(yōu)化的細(xì)節(jié)點(diǎn)。有自動(dòng)化生成方案。其實(shí)優(yōu)化的細(xì)節(jié)很多,所以要好好培養(yǎng)自己的編碼習(xí)慣,積少成多,慢慢的不斷積累,代碼的質(zhì)量肯定就不同了。

介紹一些最近整理的優(yōu)化細(xì)節(jié)。圖片壓縮什么的就不說(shuō)了,這是優(yōu)化必須做的。今天就說(shuō)一下大家寫(xiě)代碼時(shí)可以培養(yǎng)的優(yōu)化的細(xì)節(jié)點(diǎn)。

不濫用float。不濫用web字體。

Float在渲染時(shí)計(jì)算量比較大,并且會(huì)脫標(biāo)、塌陷。我們可以用flex布局來(lái)代替。web字體引入需要不小的消耗,最好跟設(shè)計(jì)提一下不要太多。

css中避免多余的樣式設(shè)置。

color、font、line-height等都是可以繼承的,所以他們的子元素如果屬性一樣就要重復(fù)寫(xiě)了,特別是font-family。

復(fù)雜的一個(gè)方法,可以緩存函數(shù)的返回值。

function cached (fn) {
    var cache = Object.create(null);
    return (function cachedFn (str) {
        var hit = cache[str];
        return hit || (cache[str] = fn(str))
    })
};
var fk = function (str) {
  return str.charAt(0).toUpperCase() + str.slice(1)
}
var cacheFk = cached(fk)
// 1 step
cacheFk("ui") 
//2 step
cacheFk("ui")

這是我看vue源碼時(shí)發(fā)現(xiàn)的一段代碼,作用就是可以緩存一個(gè)復(fù)雜函數(shù)的值,如果參數(shù)一樣就不重復(fù)計(jì)算。但這里要注意的是,這個(gè)緩存函數(shù)是通過(guò)閉包來(lái)做的,所以要做一些權(quán)衡。

盡量減少layout。

// 觸發(fā)兩次 layout
var newWidth = Div.offsetWidth + 50;
Div.style.width = newWidth + "px";
var newHeight = Div.offsetHeight + 50;
Div.style.height = newHeight + "px";

// 只觸發(fā)一次 layout
var newWidth = Div.offsetWidth + 50;
var newHeight = Div.offsetHeight + 50;
Div.style.width = newWidth + "px";
Div.style.height = newHeight + "px";

所有可觸發(fā)layout的操作都會(huì)被暫時(shí)放入 layout-queue 中,等到必須更新的時(shí)候,再計(jì)算整個(gè)隊(duì)列中所有操作影響的結(jié)果,如此就可只進(jìn)行一次的layout,從而提升性能。

動(dòng)畫(huà)元素最好脫標(biāo),不影響其他模塊。這樣也是為了不影響其他元素。

transform代替position。

做一些css位移效果,最好用transform而不要用定位。我剛?cè)腴T(mén)的時(shí)候用position做動(dòng)畫(huà)卡的一匹~~~

選擇dom元素使用id,但不要為設(shè)置css而定義id。

如果用id選擇器,就不要加其他class約束。定義過(guò)多id會(huì)使重用性降低,維護(hù)更困難,所以css中不建議多用id。

多次使用length的時(shí)候,要用變量保存。

var len = dom.length;
for(var i = 0;i < len;i++){};

這樣好處就是每次循環(huán),不用都計(jì)算dom的長(zhǎng)度了。

requestAnimationFrame代替setTimeout

var start = null;
var element = document.getElementById("SomeElementYouWantToAnimate");
element.style.position = "absolute";

function step(timestamp) {
  if (!start) start = timestamp;
  var progress = timestamp - start;
  element.style.left = Math.min(progress / 10, 200) + "px";
  if (progress < 2000) {
    window.requestAnimationFrame(step);
  }
}

window.requestAnimationFrame(step);
//window.requestAnimationFrame(callback);
返回值是一個(gè) long 整數(shù),請(qǐng)求 ID ,是回調(diào)列表中唯一的標(biāo)識(shí)。是個(gè)非零值,沒(méi)別的意義。你可以傳這個(gè)值給 window.cancelAnimationFrame() 以取消回調(diào)函數(shù)。

requestAnimationFrame就是不用設(shè)置時(shí)間的定時(shí)器,每1/60s運(yùn)行一次,這是根據(jù)瀏覽器刷新幀數(shù)來(lái)定的。但兼容是個(gè)問(wèn)題,用的話需要寫(xiě)好兼容。

如果可以,盡量避免全局查找。

//dom = document.querySelector("#id");
function test() {
    dom = document.querySelector("#id");
}

比如上面的,如果只做test內(nèi)使用dom 就不要在全局定義,因?yàn)閳?zhí)行的時(shí)候會(huì)現(xiàn)在test函數(shù)內(nèi)部作用域查找,速度會(huì)快。

除非不知道遍歷的長(zhǎng)度或者遍歷對(duì)象 不要用for in

    function t1(){        //20ms
        var i = 0;
       for(item in anObj) {
           i++
       }
       if( i === 100000){
           console.log("for in ok")
       }
    }
    function t2(){     //4ms
        var len = anObj.length;
        var i = 0;
        for(var i = 0 ;i < len;i++){
            i++
        }
        if( i === 100000){
            console.log("for ok")
        }
    }

這是我自己試驗(yàn)循環(huán)100000個(gè)元素的數(shù)組,得出的執(zhí)行時(shí)間(看代碼)。所以最好別用,一般實(shí)際也不會(huì)用到遍歷對(duì)象。如果真有特殊情況遍歷對(duì)象,也要注意 ?。?!遍歷出來(lái)的東西是不是自己。以為for in是會(huì)遍歷其原型鏈的。

骨架屏

這個(gè)是增強(qiáng)用戶(hù)體驗(yàn),類(lèi)似增強(qiáng)版loading。有自動(dòng)化生成方案。感興趣可以看看。

ios禁止頁(yè)面識(shí)別手機(jī)號(hào)。Android禁止識(shí)別郵箱。


頭部css 底部js。

這個(gè)大家都知道,js將阻塞解析dom,增加白屏?xí)r間。所以一定要注意啊。

其實(shí)優(yōu)化的細(xì)節(jié)很多,所以要好好培養(yǎng)自己的編碼習(xí)慣,積少成多,慢慢的不斷積累,代碼的質(zhì)量肯定就不同了。 最后祝大家身體健康。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/53145.html

相關(guān)文章

  • h5性能優(yōu)化,細(xì)節(jié)決定結(jié)果。

    摘要:介紹一些最近整理的優(yōu)化細(xì)節(jié)。今天就說(shuō)一下大家寫(xiě)代碼時(shí)可以培養(yǎng)的優(yōu)化的細(xì)節(jié)點(diǎn)。有自動(dòng)化生成方案。其實(shí)優(yōu)化的細(xì)節(jié)很多,所以要好好培養(yǎng)自己的編碼習(xí)慣,積少成多,慢慢的不斷積累,代碼的質(zhì)量肯定就不同了。 介紹一些最近整理的優(yōu)化細(xì)節(jié)。圖片壓縮什么的就不說(shuō)了,這是優(yōu)化必須做的。今天就說(shuō)一下大家寫(xiě)代碼時(shí)可以培養(yǎng)的優(yōu)化的細(xì)節(jié)點(diǎn)。 不濫用float。不濫用web字體。 Float在渲染時(shí)計(jì)算量比較大,并...

    wangshijun 評(píng)論0 收藏0
  • h5性能優(yōu)化,細(xì)節(jié)決定結(jié)果。

    摘要:介紹一些最近整理的優(yōu)化細(xì)節(jié)。今天就說(shuō)一下大家寫(xiě)代碼時(shí)可以培養(yǎng)的優(yōu)化的細(xì)節(jié)點(diǎn)。有自動(dòng)化生成方案。其實(shí)優(yōu)化的細(xì)節(jié)很多,所以要好好培養(yǎng)自己的編碼習(xí)慣,積少成多,慢慢的不斷積累,代碼的質(zhì)量肯定就不同了。 介紹一些最近整理的優(yōu)化細(xì)節(jié)。圖片壓縮什么的就不說(shuō)了,這是優(yōu)化必須做的。今天就說(shuō)一下大家寫(xiě)代碼時(shí)可以培養(yǎng)的優(yōu)化的細(xì)節(jié)點(diǎn)。 不濫用float。不濫用web字體。 Float在渲染時(shí)計(jì)算量比較大,并...

    beita 評(píng)論0 收藏0
  • react+mobx 構(gòu)建H5制作工具項(xiàng)目經(jīng)驗(yàn)總結(jié)

    摘要:三性能優(yōu)化處理做工具類(lèi)的項(xiàng)目,性能是非常大的挑戰(zhàn),我總結(jié)了以下幾個(gè)常見(jiàn)的性能優(yōu)化點(diǎn)數(shù)據(jù)緩存。防抖,節(jié)流,事件委托內(nèi)存釋放。 內(nèi)容大綱: 1、功能介紹 2、技術(shù)架構(gòu) 3、性能優(yōu)化 4、細(xì)節(jié)分享 5、開(kāi)源說(shuō)明 一、項(xiàng)目功能介紹 很久沒(méi)寫(xiě)過(guò)技術(shù)類(lèi)的文章了,這次給大家分享一個(gè)近期的項(xiàng)目,采用react+mobx+jquery構(gòu)建的大型工具類(lèi)項(xiàng)目。查看項(xiàng)目網(wǎng)址。 如果用過(guò)易企秀,maka或者...

    用戶(hù)84 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<