国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

為什么使用react

Towers / 2988人閱讀

摘要:為什么會慢呢因為對的修改為影響網頁的用戶界面,重繪頁面是一項昂貴的操作。太多的操作會導致一系列的重繪操作,為了確保執行結果的準確性,所有的修改操作是按順序同步執行的。回流操作主要會發生在幾種情況下當對節點執行新增或者刪除操作時。

一. 函數式編程

 React 把用戶界面抽象成一個個組件,如按鈕組件 Button、對話框組件 Dialog、日期組件 Calendar。
 開發者通過組合這些組件,最終得到功能豐富、可交互的頁面。通過引入 JSX 語法,復用組件變得非常容易,
 同時也能保證組件結構清晰。有了組件這層抽象,React 把代碼和真實渲染目標隔離開來,除了可以在瀏覽器
 端渲染到 DOM 來開發網頁外,還能用于開發原生移動應用。

二 虛擬DOM

DOM操作的效率是很低的,而且不是一般的慢,而且這也是引發性能問題的常見問題之一。為什么會慢呢?
因為對 DOM的修改為影響網頁的用戶界面,重繪頁面是一項昂貴的操作。太多的DOM操作會導致一系列的重
繪操作,為了確保執行結果的準確性,所有的修改操作是按順序同步執行的。我們稱這個過程叫做回流
(reflow),同時這也是最昂貴的瀏覽器操作之一。回流操作主要會發生在幾種情況下:

當對DOM節點執行新增或者刪除操作時。

動態設置一個樣式時(比如element.style.width="10px")。

當獲取一個必須經過計算的尺寸值時,比如訪問offsetWidth、clientHeight或者其他需要經過計算的CSS值(在兼容DOM的瀏覽器中,可以通過getComputedStyle函數獲取;在IE中,可以通過currentStyle屬性獲取)。 解決問題的關鍵,就是限制通過DOM操作所引發回流的次數。大部分瀏覽器都不會在JavaScript的執行過程中更新DOM。相應的,這些瀏覽器將對對DOM的操作放進一個隊列,并在JavaScript腳本執行完畢以后按順序一次執行完畢。也就是說,在JavaScript執行的過程中,用戶不能和瀏覽器進行互動,直到一個回流操作被執行。(失控腳本對話框會觸發回流操作,因為他執行了一個中止JavaScript執行的操作,此時會對用戶界面進行更新)

真實頁面對應一個 DOM 樹。在傳統頁面的開發模式中,每次需要更新頁面時,都要手動操作DOM進行更新。DOM 操作非常昂貴。我們都知道在前端開發中,性能消耗最大的就是 DOM 操作,而且這部分代碼會讓整體項目的代碼變得難以維護。React 把真實 DOM 樹轉換成 JavaScript 對象樹,每次數據更新后,重新計算 Virtual DOM,并和上一次生成的 Virtual DOM 做對比,對發生變化的部分做批量更新。React 也提供了直觀的 houldComponentUpdate 生命周期回調,來減少數據變化后不必要的 Virtual DOM 對比過程,以保證性能。我們說 Virtual DOM 提升了 React 的性能,但這并不是 React 的唯一亮點。此外,Virtual DOM的渲染方式也比傳統 DOM 操作好一些,但并不明顯,因為對比 DOM 節點也是需要計算資源的。它最大的好處其實還在于方便和其他平臺集成,比如 react-native 是基于 Virtual DOM 渲染出原生控件,因為 React 組件可以映射為對應的原生控件。在輸出的時候,是輸出 Web DOM,還是 Android 控件,還是 iOS 控件,就由平臺本身決定了。因此,react-native 有一個口號——LearnOnce,Write Anywhere。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/95560.html

相關文章

  • React 328道最全面試題(持續更新)

    摘要:希望大家在這浮夸的前端圈里,保持冷靜,堅持每天花分鐘來學習與思考。 今天的React題沒有太多的故事…… 半個月前出了248個Vue的知識點,受到很多朋友的關注,都強烈要求再出多些React相前的面試題,受到大家的邀請,我又找了20多個React的使用者,他們給出了328道React的面試題,由我整理好發給大家,同時發布在了前端面試每日3+1的React專題,希望對大家有所幫助,同時大...

    kumfo 評論0 收藏0
  • 「譯」setState如何知道它該做什么

    摘要:本文翻譯自原作者如果有任何版權問題,請聯系當你在組件中調用時,你覺得會發生什么當然,會用這條狀態重新渲染組件并且更新匹配到的,然后返回元素。如果你之前使用過一些渲染器比如說,你可能知道在頁面中使用超過一個渲染器是沒什么問題的。 本文翻譯自:How Does setState Know What to Do?原作者:Dan Abramov 如果有任何版權問題,請聯系shuirong199...

    OldPanda 評論0 收藏0
  • React 常見的面試題(在 React 里面,你可以知道也可以不知道的事, 但是你會發現他們確實很

    摘要:為了使用它們,您可以向組件添加一個屬性,該屬性的值是一個回調函數,它將接收底層的元素或組件的已掛接實例,作為其第一個參數。通常最好使用另一個生命周期方法,而不是依賴這個回調函數,但是很高興知道它存在。 React 常見的面試題 (在 React 里面,你可以知道也可以不知道的事, 但是你會發現他們確實很有用) 根據記錄,問這些問題可能不是深入了解他們在使用 React 方面的經驗的最...

    cppprimer 評論0 收藏0
  • 淺談React Fiber

    摘要:因為版本將真正廢棄這三生命周期到目前為止,的渲染機制遵循同步渲染首次渲染,更新時更新時卸載時期間每個周期函數各司其職,輸入輸出都是可預測,一路下來很順暢。通過進一步觀察可以發現,預廢棄的三個生命周期函數都發生在虛擬的構建期間,也就是之前。 showImg(https://segmentfault.com/img/bVbweoj?w=559&h=300); 背景 前段時間準備前端招聘事項...

    izhuhaodev 評論0 收藏0
  • React 內部機制探秘 - React Component 和 Element(文末附彩蛋demo

    摘要:內部機制探秘和文末附彩蛋和源碼這篇文章比較偏基礎,但是對入門內部機制和實現原理卻至關重要。當然也需要明白一些淺顯的內部工作機制。當改變出現時,相比于真實更新虛擬的性能優勢非常明顯。直到最終,會得到完整的表述樹的對象。 React 內部機制探秘 - React Component 和 Element(文末附彩蛋demo和源碼) 這篇文章比較偏基礎,但是對入門 React 內部機制和實現原...

    wenshi11019 評論0 收藏0
  • Airbnb React/JSX 編碼規范

    摘要:來自于中文編碼規范編碼規范算是最合理的編碼規范之一了基本規范每個文件只寫一個模塊但是多個無狀態模塊可以放在單個文件中推薦使用語法不要使用,除非從一個非的文件中初始化你的創建模塊如果你的模塊有內部狀態或者是推薦使用而不是除非你有充足的理由 來自于Airbnb React/JSX 中文編碼規范 Airbnb React/JSX 編碼規范 算是最合理的React/JSX編碼規范之一了 Bas...

    CODING 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<