2016.11.24前端技術(shù)分享講稿

逼死強迫癥之代碼規(guī)范(性能優(yōu)化)

var關(guān)鍵字變量命名(利用$符號帶頭區(qū)分jQuery對象與HTML DOM對象)

var a = 0,
    $loading = $('#loading'),
    $body = $('body');

多次操作DOM對象緩存為變量

//不好的寫法
$('#loading').html("loading...");
$('#loading').fadeIn();

//提升性能的寫法
var $loading = $('#loading');
$loading.html("loading...");
$loading.fadeIn();

//再或者是
$loading.html("loading...").fadeIn();   //鏈式

邏輯判斷表達式

if(!$a) {
    $a = $('#a');
}
//高性能 + 精簡
$a = $a || $('#a');

jQuery選擇器

//老生常談
//不要使用class選擇器
//不要使用class選擇器
//不要使用class選擇器(重要的事情說三遍)

var a = $("span#a");
var b = $("#a #b"); //性能非常非常的差,而且沒有必要(會遍歷前一個節(jié)點)

慎重操作DOM

//一次性的DOM渲染
var list = '<ul id="list">';
for (var i = 1; i < 100; i++) {
    list += '<li>' + i + '</li>';
}
list += '</ul>';
$('body').append(list);

// 多次重復(fù)的DOM渲染(不要這樣寫!)
$('#header').append('<ul id="list"></ul>');
for (var i = 1; i < 100; i++) {
    $('#list').append('<li>' + i + '</li>');
}

慎重使用全局變量,少用attribute存數(shù)據(jù),data()方法附加數(shù)據(jù)(某前端live講到數(shù)據(jù)存取性能時候提到,但是并沒有找到具體性能指標)

//項目中多數(shù)使用attr存取數(shù)據(jù)
<li data-id="877" value="101172" retype="pub"></li>
//采用jQuery的內(nèi)部函數(shù)data()來存儲狀態(tài)
$('#a').data('key', 'value'); //存儲
$('#a').data('key'); //調(diào)用

各種兼容坑坑坑(項目經(jīng)驗)

神奇的safari兼容

safari的new Data()只能識別"xxxx/xx/xx",不能識別"xxxx-xx-xx"

神奇的獲取窗口位置兼容寫法

var leftX = typeof window.screenLeft == 'number' ? window.screenLeft : window.screenX;
ver topY = typeof window.screenTop == 'number' ? window.screenTop : window.screenY;

神奇的Firefox兼容

window.event不能用!而且沒有removeNode方法,只能使用node.parentNode.removeChild(node)

操作目錄樹的時候被坑過。

迷之手機端video對象(iOS兼容)

之前iOS操作video對象(設(shè)置display:none時不會隱藏彈出的播放窗口,只會隱藏頁面上的video節(jié)點),但是目前用戶反饋彈出的播放窗口也會隱藏了!(還未找到有人出現(xiàn)相同問題)

題外話

? 之前寫代碼碰到瓶頸期,不知道怎么才能提升;有時候還會被項目進度逼著走,不得以的時間為了快速解決問題忽略了一些細節(jié)性問題,然而對于這些細節(jié)性問題的鉆研,往往是提升能力的一大關(guān)鍵點。

? “多拆一些好的輪子,而不是刻意去重新發(fā)明輪子”在我看來很有道理,為優(yōu)秀的源碼寫擴展十分有利于能力的提升。(最近新寫的幾個umeditor組件與通用方法都寫成文檔放在git-flow上了,有興趣的可以看看源碼一起分享看法喲)

? 共勉。

? 什么才算是真正的編程能力(知乎)

作者 @鄭小明
2017 年 1 月 5 日

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 不要拿HTML中的內(nèi)容來寫判斷?。。?不要用類名寫選擇器?。?! 代碼規(guī)范檢查 勤寫注釋 前端性能優(yōu)化(https:...
    鄭小明閱讀 419評論 0 3
  • 常見試題 行內(nèi)元素:會在水平方向排列,不能包含塊級元素,設(shè)置width無效,height無效(可以設(shè)置line-h...
    他大舅啊閱讀 2,490評論 1 5
  • 請參看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon閱讀 7,179評論 2 19
  • iMindMap思維導(dǎo)圖提供了恢復(fù)未保存導(dǎo)圖功能。當電腦出于一些不可抗拒的因素(電源斷開,系統(tǒng)崩潰等)而自動關(guān)閉后...
    一只流浪喵閱讀 430評論 0 0
  • 作者:依然 一大早醒來,林郁便覺得渾身酸痛,摸了摸額頭竟有燙手。難道是昨晚喝太多街邊擼串又穿的太少著涼了?想起昨晚...
    依Ran閱讀 482評論 0 0