angular項目中輸入延遲以及拖拽卡頓

背景

之前有一個angular項目,頁面上表單不算多互纯,也就一百來個(這個不固定尚蝌,有的地方多迎变,有的地方少),但是再輸入的時候會造成輸入延遲飘言,反應不靈敏氏豌,對用戶體驗極其不好。還有一個功能就是拖拽功能(原生热凹,沒有使用官方中的拖拽功能)泵喘,從左邊拖到右邊區(qū)域,拖拽區(qū)域少的時候還挺流暢般妙,但一旦有幾百上千的時候反應極其的慢纪铺,佛系的人都要變暴躁。

原因(可能)

上面兩個問題其實都和angular的機制有關碟渺。一個雙向綁定一個拖拽歸根結底都是因為angular的變化檢測
angular的雙向綁定主要是臟數(shù)據檢查鲜锚,如果大量的檢查,效率比較低苫拍。(雙向綁定時向zone掛載一個異步函數(shù)芜繁,對數(shù)據改變是做處理,及時將變化反饋顯示在頁面上)可能就會輸入延遲
拖拽(也是向zone掛載異步函數(shù))則是因為angular對每個可移動像素的元素進行檢測而且還可能涉及對dom的操作绒极,當拖拽區(qū)域數(shù)量較為多時骏令,綁定的函數(shù)就越多,angular需要檢測的元素區(qū)域就越來越多垄提,處理起來就越力不從心(即使元素隱藏也不代表不會進行變化檢測)

解決

  1. 對于雙向綁定造成的輸入延遲榔袋,停止使用雙向綁定,改用單向綁定

  2. 拖拽過程angular一直檢測頁面變化铡俐,所以頁面卡頓凰兑。我們需要做的就是設置對某些操作不跟蹤變化

this.ngZone.runOutsideAngular(() => {
        this.dragEnter = this.rd.listen(spanDom, 'dragenter', this.dragenterHandler.bind(this));
        this.dragOver = this.rd.listen(spanDom, 'dragover', (e) => {
            e.preventDefault();
        });
    this.dragLeave = this.rd.listen(spanDom, 'dragleave', this.dragLeaveHandle.bind(this));
});
this.dragDrop = this.rd.listen(spanDom, 'drop', this.dropHandler.bind(this));

對頻繁的操作(如dragover)不去觸發(fā)變更檢測。使用NgZone中的runOutsideAngular方法审丘,angular不會對里面的變化進行跟蹤吏够。

總結

我對angular的變化檢測也似懂非懂 -_-

看到腳本之家還有別的地方有我這篇文章的內容。滩报。锅知。不過他后面自己加了一段PS的demo。但是我這個和他的demo可能是不兼容的露泊,他的demo是使用了別人封裝的拖拽組件喉镰,我這個是直接對dom上操作的旅择。(看到了的注意一下)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末惭笑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沉噩,老刑警劉巖捺宗,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異川蒙,居然都是意外死亡蚜厉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門畜眨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昼牛,“玉大人,你說我怎么就攤上這事康聂》〗。” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵恬汁,是天一觀的道長伶椿。 經常有香客問我,道長氓侧,這世上最難降的妖魔是什么脊另? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮约巷,結果婚禮上偎痛,老公的妹妹穿的比我還像新娘。我一直安慰自己独郎,他們只是感情好看彼,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著囚聚,像睡著了一般靖榕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顽铸,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天茁计,我揣著相機與錄音,去河邊找鬼谓松。 笑死星压,一個胖子當著我的面吹牛,可吹牛的內容都是我干的鬼譬。 我是一名探鬼主播娜膘,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼优质!你這毒婦竟也來了竣贪?” 一聲冷哼從身側響起军洼,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎演怎,沒想到半個月后匕争,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡爷耀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年甘桑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歹叮。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡跑杭,死狀恐怖,靈堂內的尸體忽然破棺而出咆耿,到底是詐尸還是另有隱情艘蹋,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布票灰,位于F島的核電站女阀,受9級特大地震影響,放射性物質發(fā)生泄漏屑迂。R本人自食惡果不足惜浸策,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惹盼。 院中可真熱鬧庸汗,春花似錦、人聲如沸手报。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽湘换。三九已至亲善,卻和暖如春赖临,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背流强。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工脑慧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抡驼,地道東北人阳藻。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓晰奖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親腥泥。 傳聞我的和親對象是個殘疾皇子匾南,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容