目前接觸最多的頁面開發,基本仍是使用 JQuery 的。主要緣由基於:操做方便;頁面簡單;兼容良好;新手多……沒有能配合使用其餘方案的人。所以,本篇文章就是寫着玩加吐點槽的
。css
Write Less,Do More是JQuery的核心理念。因此大家就不要在工做中隨意造輪子了!html
絕對禁止同步請求!必定要處理全部可能的狀況!前端
普通示例
:jquery
function getData(){ var params= {} $.ajax({ type: 'post', dataType: 'json', url: 'xxxxx', data: params, beforeSend: function(){}, success: function(data){ if(data.code != 1){ // 失敗方法 return; } // 成功方法 }, error: function(){}, complete: function(){} }); }
大部分兼容要求不高,公司使用同一個接口,只是傳參不一樣,所以,共通的ajax請求方案爲:git
function reqAjax (params) { var deferred = $.Deferred(); $.ajax({ type: 'post', dataType: 'json', url: 'xxxx', data: params, success: function(data){ deferred.resolve(data); }, error: function(err){ deferred.reject(err); } }); return deferred; }
主要使用了JQuery(>1.5)的 deferred 對象。請求示例
:github
function getData () { // 一、校驗,或其餘方法獲取參數 var params = {} // 二、自定義beforeSend // 三、請求數據 var p = reqAjax(params); // 四、自定義success方法 p.done(function (data) {}); // 五、自定義error方法,通常屬於超時或網絡不正常 p.fail(function (err) {}); // 以上執行成功以後可鏈式調用下一步操做 p.then(function () {}); }
若是想單獨使用Ajax,通常來講推薦兩個方案:Zepto.js 和 本身去 github 搜索ajax
根據設計的不一樣,有時須要重複添加一些元素。除了基本的模板插件外,還能夠充分使用 JQuery 的 clone 方法json
儘可能不要拼接字符串!bootstrap
假設dom結構爲:網絡
<!--bootstrap樣式,靜態界面寫完後,在test樣式上加上隱藏樣式hidden--> <div class="test"> <p>字段1:<span class="test1 text-info"></span></p> <p>字段2:<span class="test2 text-primary"></span></p> <p>字段3:<span class="test3 text-warning"></span></p> </div>
接口請求成功,處理dom:
// 本身處理循環 function addList(arr){ // 模擬請求過來的數據 var data = { test1: Math.random().toFixed(5), test2: Math.random().toFixed(5), test3: Math.random().toFixed(5) } // 假設父級dom var pDom = $('.xxx'); // 直接克隆已經寫好且隱藏的模板,去掉hidden var dom = pDom.find('.test.hidden').clone().removeClass('hidden'); // 取巧的方法,根據字段標識的名稱取dom元素,而後賦值,通常來講還須要進行其餘的處理 for(var key in data){ dom.find('.'+key).text(data[key]) } // 處理完畢,加入父級dom中 pDom.append(dom); }
主要是我不喜歡拼接字符串,懶得很,並且改別人的BUG好惡心。
事件使用多看看教程就行,但如何使用得稍微琢磨一下
如:不要在 $(document).ready()
中初始化全部亂七八糟的方法,很難找的……
對於新添加的元素,添加點擊(或其餘)事件,可使用
$(parentDom).on('click', 'newDom', function(){});
或
$(newDom).live('click', function(){})
做爲前端,不要光想着js,好歹也學學 animate.css
PC端使用動效是沒問題的,但移動端網頁,如slideUp、animate之類,最好用css樣式代替,否則會有卡頓效果。
……移動端爲何還用jquery?jquery 壓縮版通常在80~90 kb,對現在的網絡是能夠接受的,固然最好用 zepto.js 代替。
請在完成任務以後再考慮優化……
不要把不熟悉的東西帶到工做中,除非沒有更好的替代方案
若不想使用JQuery,且不考慮兼容性,可參考:You-Dont-Need-jQuery
若是有空,記得重構代碼~
原本想寫點具備實用性的東西,但Jquery的特性網上已經有不少了,所以再也不贅述,能給新人一點提示就行。