一种提高 react 生态系统中网络应用程序性能的方法

П. В. БУРЧАК, Л. М. ОЛЕЩЕНКО
{"title":"一种提高 react 生态系统中网络应用程序性能的方法","authors":"П. В. БУРЧАК, Л. М. ОЛЕЩЕНКО","doi":"10.35546/kntu2078-4481.2023.3.12","DOIUrl":null,"url":null,"abstract":"У статті розглянуто наявні методи підвищення продуктивності вебдодатку в екосистемі фреймворку React, їх переваги та недоліки, зокрема, використання React.memo, PureComponent, shouldComponentUpdate, Lazy Loading, Code Splitting та мемоізації селекторів. Запропоновано оптимізований метод, який дозволяє скоротити час виконання програми в середньому на 17%. Основна ідея запропонованого методу полягає в розділенні стану даних вебдодатку на атомарні фрагменти. Кожна сутність має свій власний фрагмент стану, що ізолює його від інших. Ці фрагменти використовуються React Context API для передачі конфігурації сутності, включаючи дані та функції для її зміни. Context API використовується для забезпечення обробки усієї програми. Стан розділяється на атомарні фрагменти, що дозволяє реалізувати їх ізоляцію. За допомогою функції hook отримується доступ до цих фрагментів та їх зміни. Компоненти, які використовують цей метод, автоматично реагують на зміни стану і оновлюються, якщо стан змінився. Головною перевагою такого підходу є можливість використання технології замикання та передавання функції обробників стану. Запропонований метод базується на підході, який було запозичено з бібліотеки Recoil. Цей підхід є схожим на стандартні функції-хуки у фреймворку React, для якого було розроблено запропонований метод. Було використано переваги та недоліки використання популярних бібліотек для керування станом у вебдодатках. Метою модифікації було уникнення надмірних операцій, коли поточний та новий стани не відрізняються, покращення продуктивності при додаванні великої кількості елементів та забезпечення можливості використання схожих частин коду багаторазово. Особливу увагу приділено проблемі надмірних операцій, які виникають, коли всі компоненти, що підписані на зміну стану, автоматично оновлюються, навіть якщо самі значення стану не змінились. Додано можливість перевірки рівності станів перед їх оновленням, що дозволяє заощадити ресурси та зберегти продуктивність. Також реалізовано спрощено роботу з функціями зміни стану, щоб їх можна було знову використовувати без повторення коду.","PeriodicalId":32537,"journal":{"name":"Vestnik Irkutskogo gosudarstvennogo tekhnicheskogo universiteta","volume":"49 6","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2023-11-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"МЕТОД ПІДВИЩЕННЯ ПРОДУКТИВНОСТІ ВЕБДОДАТКУ В ЕКОСИСТЕМІ ФРЕЙМВОРКУ REACT\",\"authors\":\"П. В. БУРЧАК, Л. М. ОЛЕЩЕНКО\",\"doi\":\"10.35546/kntu2078-4481.2023.3.12\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"У статті розглянуто наявні методи підвищення продуктивності вебдодатку в екосистемі фреймворку React, їх переваги та недоліки, зокрема, використання React.memo, PureComponent, shouldComponentUpdate, Lazy Loading, Code Splitting та мемоізації селекторів. Запропоновано оптимізований метод, який дозволяє скоротити час виконання програми в середньому на 17%. Основна ідея запропонованого методу полягає в розділенні стану даних вебдодатку на атомарні фрагменти. Кожна сутність має свій власний фрагмент стану, що ізолює його від інших. Ці фрагменти використовуються React Context API для передачі конфігурації сутності, включаючи дані та функції для її зміни. Context API використовується для забезпечення обробки усієї програми. Стан розділяється на атомарні фрагменти, що дозволяє реалізувати їх ізоляцію. За допомогою функції hook отримується доступ до цих фрагментів та їх зміни. Компоненти, які використовують цей метод, автоматично реагують на зміни стану і оновлюються, якщо стан змінився. Головною перевагою такого підходу є можливість використання технології замикання та передавання функції обробників стану. Запропонований метод базується на підході, який було запозичено з бібліотеки Recoil. Цей підхід є схожим на стандартні функції-хуки у фреймворку React, для якого було розроблено запропонований метод. Було використано переваги та недоліки використання популярних бібліотек для керування станом у вебдодатках. Метою модифікації було уникнення надмірних операцій, коли поточний та новий стани не відрізняються, покращення продуктивності при додаванні великої кількості елементів та забезпечення можливості використання схожих частин коду багаторазово. Особливу увагу приділено проблемі надмірних операцій, які виникають, коли всі компоненти, що підписані на зміну стану, автоматично оновлюються, навіть якщо самі значення стану не змінились. Додано можливість перевірки рівності станів перед їх оновленням, що дозволяє заощадити ресурси та зберегти продуктивність. Також реалізовано спрощено роботу з функціями зміни стану, щоб їх можна було знову використовувати без повторення коду.\",\"PeriodicalId\":32537,\"journal\":{\"name\":\"Vestnik Irkutskogo gosudarstvennogo tekhnicheskogo universiteta\",\"volume\":\"49 6\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2023-11-13\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Vestnik Irkutskogo gosudarstvennogo tekhnicheskogo universiteta\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.35546/kntu2078-4481.2023.3.12\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Vestnik Irkutskogo gosudarstvennogo tekhnicheskogo universiteta","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.35546/kntu2078-4481.2023.3.12","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

摘要

文章讨论了在 React 生态系统中提高网络应用程序性能的现有方法及其优缺点,特别是 React.memo、PureComponent、shouldComponentUpdate、Lazy Loading、Code Splitting 和选择器备忘的使用。我们提出了一种优化方法,可将程序执行时间平均缩短 17%。所提方法的主要思想是将网络应用程序的数据状态划分为原子片段。每个实体都有自己的状态片段,与其他实体隔离开来。React Context API 使用这些片段来传递实体的配置,包括数据和修改数据的函数。Context API 用于为整个应用程序提供处理功能。状态被划分为原子片段,从而实现了隔离。钩子函数用于访问和修改这些片段。使用这种方法的组件会自动响应状态变化,并在状态发生变化时进行更新。这种方法的主要优点是能够使用闭包技术,并将函数传递给状态处理程序。所提议的方法基于从 Recoil 库借鉴的方法。这种方法与 React 框架中的标准 Hook 函数类似,而所提出的方法正是为此开发的。我们考虑了在网络应用程序中使用流行库进行状态管理的优缺点。修改的目的是在当前状态和新状态没有差异时避免不必要的操作,在添加大量元素时提高性能,并确保代码的类似部分可以重复使用。我们特别关注的是,当所有订阅了状态变化的组件都自动更新时,即使状态值本身没有变化,也会出现多余操作的问题。我们增加了在更新状态之前检查状态是否相等的功能,这样既能节省资源,又能保证性能。此外,还简化了状态更改函数的工作,因此无需重复代码即可再次使用这些函数。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
МЕТОД ПІДВИЩЕННЯ ПРОДУКТИВНОСТІ ВЕБДОДАТКУ В ЕКОСИСТЕМІ ФРЕЙМВОРКУ REACT
У статті розглянуто наявні методи підвищення продуктивності вебдодатку в екосистемі фреймворку React, їх переваги та недоліки, зокрема, використання React.memo, PureComponent, shouldComponentUpdate, Lazy Loading, Code Splitting та мемоізації селекторів. Запропоновано оптимізований метод, який дозволяє скоротити час виконання програми в середньому на 17%. Основна ідея запропонованого методу полягає в розділенні стану даних вебдодатку на атомарні фрагменти. Кожна сутність має свій власний фрагмент стану, що ізолює його від інших. Ці фрагменти використовуються React Context API для передачі конфігурації сутності, включаючи дані та функції для її зміни. Context API використовується для забезпечення обробки усієї програми. Стан розділяється на атомарні фрагменти, що дозволяє реалізувати їх ізоляцію. За допомогою функції hook отримується доступ до цих фрагментів та їх зміни. Компоненти, які використовують цей метод, автоматично реагують на зміни стану і оновлюються, якщо стан змінився. Головною перевагою такого підходу є можливість використання технології замикання та передавання функції обробників стану. Запропонований метод базується на підході, який було запозичено з бібліотеки Recoil. Цей підхід є схожим на стандартні функції-хуки у фреймворку React, для якого було розроблено запропонований метод. Було використано переваги та недоліки використання популярних бібліотек для керування станом у вебдодатках. Метою модифікації було уникнення надмірних операцій, коли поточний та новий стани не відрізняються, покращення продуктивності при додаванні великої кількості елементів та забезпечення можливості використання схожих частин коду багаторазово. Особливу увагу приділено проблемі надмірних операцій, які виникають, коли всі компоненти, що підписані на зміну стану, автоматично оновлюються, навіть якщо самі значення стану не змінились. Додано можливість перевірки рівності станів перед їх оновленням, що дозволяє заощадити ресурси та зберегти продуктивність. Також реалізовано спрощено роботу з функціями зміни стану, щоб їх можна було знову використовувати без повторення коду.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
10
审稿时长
12 weeks
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信