踩坑:AJAX同步、頁面元素替換、耦合

AJAX同步

用JQ發(fā)起AJAX異步請求的時候遇到一個坑。

使用場景是這樣的:

  1. 在輸入框中輸入評論信息,單擊發(fā)送按鈕,觸發(fā)post()方法

  2. post()函數(shù)里面發(fā)起AJAX請求,用post方法請求'/comment',將請求攜帶的數(shù)據(jù)插入數(shù)據(jù)庫

  3. 接著,用getJSON()方法獲取數(shù)據(jù)庫數(shù)據(jù)

邏輯看起來沒有問題,但是存在一個異步的情況,插入數(shù)據(jù)庫的操作會調(diào)用IO,比較費時,因此導致getJSON()總是先于AJAX獲得響應。

導致的問題是,頁面無法實時更新插入的消息。

解決方案是在發(fā)送AJAX請求之前,設置AJAX請求為同步請求,執(zhí)行語句如下:

$.ajaxSettings.async = false;

頁面元素替換

還是上面AJAX局部更新的案例。

在做之前,我思考了一下如何替換頁面元素。

得到三種解決方案,分別是:

  1. 先把id為comment-container的元素中的,每一個id為comment-item的元素逐條刪掉,再把從數(shù)據(jù)庫遍歷出來的元素逐條插入

  2. 先把所有id為comment-item元素用一個id為comment-list-wrapper包起來,每次更新的時候直接把comment-list-wrapper整個替換掉

  3. 僅僅是把剛剛插入的記錄搜索出來,追加到第一個id為comment-item元素的前面

結果證明,第二種解決方案是最優(yōu)的,原因如下:

  1. 第一種是最直接的想法,不過在刪除和插入的時間間隙會閃一下

  2. 第二種比第一種多包裝了一層,看起來是多此一舉,實際上可以減少元素更新的操作次數(shù),從而提升體驗

  3. 第三種是性能最優(yōu)的選擇,不過查詢數(shù)據(jù)庫時并不能準確地拿到剛才插入的那一條數(shù)據(jù)。搜索字段是什么呢?在高并發(fā)情況下,元素搜索不準確,是不可行的做法

耦合

高質(zhì)量的代碼是高內(nèi)聚、低耦合的。

為了寫出高質(zhì)量的代碼,減少程序中的錯誤,提高可維護性,得到以下心得:

  1. 在編程時盡可能使用軟編碼代替硬編碼

  2. 在寫代碼之前應充分考慮到編碼需要用到的變量。

    比如,在寫代碼的過程中,我需要為數(shù)據(jù)庫或者類添加一個新字段,那么我就可能需要重新回過頭去賦值,這很容易漏掉一些屬性的設置

  3. 合理使用框架、組件和插件。這些工具對一些地方進行了封裝,可有效減少耦合,提高開發(fā)效率

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容