Галоўная / Артыкулы

Зняць з вжытку застарэлыя залежнасці JavaScript: CRA, Moment, jQuery і іншыя

Калькі бібліятэкаў і адзінакоў JavaScript, якія трэба поступова адмовіцца від іх использовання, чаму кожны з іх стаў прычынай проблем, што можа іх заменіць, і як запобець таму, каб список вашых залежнасцей зноў не пастаў проблематычным.

Выдавец: REACTAPP.TOP6 хв чытання1411 слоў

Крыніцы: **JavaScript Libraries and Tools Heading Toward Deprecation: What to Drop in 2026**

Большасць проектаў на JavaScript маюць калькі залежнасцяў, які былі явным выборам пад час стварэння репазітарыя і якія зараз є некалькавым тлумакам: вялікія пакеты, невылечаныя уязвімасці, некоректная сумеснае працаванне з сучаснымі середавымі адработкі, або функцыі, якія платформа тепер надае безкоштовна. Ні адна з іх не вызывае проблемы за адну ноч, і самэ гэта ўсёле якраз прычына, чаму яны застаюцца. У гэтым кяліку рассказваецца пра бібліятэкі і інструменты, якія ўстарелі, знаходзяцца у режыме тэхнічнага адтрымання чы ўстойчыва вяртаюцца у занепад, пояснюецца, чаму кожны з іх астаў позаду, і наводзяцца заменнікі, якія трэба выбраць, каб можна было планаваць міграцыю свядома, а не пад тым пячам.

Інструменты для стварэння і падтрымкі

Create React App

Працаваў гады ўсё тое час, калі Create React App (CRA) быў спосабам стварэння проекта на React. Начынком 2025 года команда React офіцыйна зняла яго з ролі інструмента для стварэння новых праектаў, і ён больш не атрымлеў значных апдэйтаў, таму проблемы з безпекай у яго інструментальнай сяродовыце застаюцца нерашанымі. Колькасць яго завантажэнняў стрэмга зменшваецца, калі команды пераходзяць на іншыя рашэнні.

Основныя прычыны структурнага характеру: ніхто актываўна яго не падтрымляе, його прыпускі ў чыненні пакетавання і роботы з серверамі ўстарэлі, а альтернатывы падтрымляюць сучасныя вакалітацыі, такія як серверная рэндарынацыя, шырэйшыя можлівасці стварэння праекта і кращы досвядк для разработчыкаў без дадатковай наладкі. Хорашыя замены включаюць:

  • Vite з @vitejs/plugin-react для стандартных одностранічных праектаў
  • Next.js, Remix / React Router або іншы полны фрэймворк, якікольве праекту патрабуеется рутер, стандарты запрашання дадзеных або код з боку сервера
  • Parcel або Rsbuild, якщо хочаце чаго легшага
  • Паколькі прыкладны код CRA ў большай частцы являе сабо стандартны код React плюс заштырэная настройка кампаўвання, процес міграцыі зазвычай выходзіць значна меншым, чым спакульвалі команды: вы заменяеце інструмент кампаўвання, перасунулі точку входу HTML і правіла настройкі змянных сераўысу, а самыя компаненты застаюцца недастрыжанымі. Якщо вы пачынаеце з нуля, інструкцыі ў нашымаянвядзе па настройцы React і Vite охопляюць новую базовую структуру.

    Webpack для новых проектаў

    Webpack аж ніяк не мертва. Вельмі велика колькасць прыкладнікаў у працэйным режыме яшчэ ствараюцца з ўжываннем Webpack, і гэта не змяніцца ў скоры час. Зменшуецца толькі яго частка ў новых проектах, галоўная прычына — складнасць канфігурацыі і болей спачаткуючы час у пораўнанні з новэйшымі інструментамі. Для стварэння фронтэнду з нуля сёгодні стандартам є Vite, а іншыя хорашы варыянты — цэе раштапкі на базе Rspack і esbuild. Webpack застаецца прыемным выборам для дужа складных існуючых канфігурацый, але рэдка калі ён падходзіць для стварання новага проекту. Чырпакавейшыя порэванні варыянтаў можна пазначыць за лінкам “Выбір бандлера”.

    Бібліятэкі, якія былі адключаныя да платформы

    Moment.js

    Практычна кожны разработчык JavaScript колісці ўжо викорыстоўваў Moment.js. Яго сабеяктары вельмі давно называюць яго проектам-спадчынай, які працюе ў режыме падтрымкі. Ён вялікі, яго об’екты за замовчанням є зменнымі (што часта створяе проблемы з багамі, калі дата меняецца ў однам месцы, а спостерагаецца ў іншым), і яго нельга эфектыва адсорбаваць пад час компіляцыі.

    Функцыяны карэнтнага оброблень дат удосконаліліся, і малыя незменныя бібліятэкі тепер выпалююць задачу з кращай продуктывасцю. Вашы варыянты, прыблізна па порядку праграмовання:

    • Intl.DateTimeFormat для форматавання, якое врачае локалізацыю
    • Temporal — новая вбудованая API для дат і часу, на якую разработчыкі чакалі гады; ёй пачала супортаваць разныя сервісы і прыгледчыкі; пераканайцеся ў тэчным супорце для вашых ціляў пры ўжыванні
    • date-fns, Luxon або Day.js, якщо бібліятэка все ўсё неабходная

    Якщо Moment все ўсё застаецца ў вашай дрэва завіснасця, запланаваце міграцыю. Лячэнне размеру пакета сама по сабе часта ёсць значным.

    jQuery

    У 2010-х гадах jQuery рашыў справжнія проблемы, якія існавалі межа разнымі браузерамі. Для новага коду сёння гэта практычна ніколі не ўзгоджваецца, адколькі стандартызаваныя API DOM, fetch і фрэймворкі компанентав прыкрываюць усё, што раней было неабходна для ўсунення такіх проблем. Звычны JavaScript з querySelector, classList, addEventListener і вбудованым fetch справляецца з большасцю працы з DOM, а React, Vue, Svelte чысто Solid беруць на сябе задачы, калі патрэбны інтерфейсы на адной з базаў компанентав. Коды з паслявейшых версіях будуць існаваць з jQuery ўпроцэсе гадоў, і гэта нормальна, але ўжыццё яго ў абсалютна новым проекте ёсць сігналам аб проблемах.

    Lodash і Underscore

    Даўнае раней ES2015, Lodash быў практычна неабходны. Чэраз годы большасць яго функцый з’явіліся ў самай мове: методы масэвых структураў такія як map, filter і reduce, Object.entries, можлівасць асоцыяцыі з элементамі, які можу быть null, і ўсё іншае. Няма праблемы выкарыстоўваць толькі калькі функцый з усей бібліятэкі, але ўсю яе цягнуць з сабой — гэта не мае сенсу. Пачніце з самай мовы і дадзіце спецыяльныя функцыі толькі там, дзе стандартная API справды не падходзіць, напрыклад для перагляду глыбокай роўнасці або кантролю частоты вызываў. Нашая стаття пра власныя функцыі JavaScript, якія заменяюць патрэбу ў сторонніх бібліятэках паказвае конкрэтныя прыклады такых замены.

    Тэставанне і сець

    Enzyme

    Дзееназы давно был прадомінантным спосабам тэставання компанентаў React, але ён ніколі не прыстосаваўся належна да React 18 і яго фічарак конкантэнту, таму ўжыццё яго розбілася. Пакалі дзееназы спрыяў тэставанню внутраніх элементаў компанентаў (статаусу, методаў экзампляра, шэрапых дрэва рэндара), міграцыя часткова ўключае змену мантэйндзу. React Testing Library, варыянт, рекамендаваны як спяльнай адуменасцю, так і камандай React, замест таго тэстуе тое, што бачыць і робіць корыстнік.

    request і node-fetch v2

    request быў афіцыйна зняты з викорыстання ўжо давно і больш не атрымлеў жадных патчаў з абароны, таму яе ўжыццё є значным рызыкам. Колькасць завантажэнняў node-fetch v2 таксама розкішна зменілася, адтолькі ў Node.js 18 і новыя версіі є вбудованы fetch (у першых версіях ён быў пазначаны як эксперыментальны, таму пераканайцеся ў його працэсе на вашай версіі Node). Выкорыстоўваюце натыўны fetch, які тепер працуе ў сучасным Node і ў всіх нынешніх прыгледачах. Калі вам патрэбны повтарныя спробы, інтерцепторы або болей могучая стрімінгавая падтрымка, разглядзіце аптымалныя рашэнняя у вачынкух undici, ky або got.

    Іншыя элементы, якія варта стежыць

    Ішчыныя змены таксама заслуговуюць на месца ў вашым списку апгрэйдаў:

    • ESLint 9.x па свайму графіку выпускаў заканчыў сваю жыцёвую трымкі ў серпні 2026 года; планаваце пераход на версію v10 і пераканайцеся ў датах на сайцы ESLint.
  • SDK для JavaScript v2 адміністрацыі AWS ўжо не падтрымваецца. Зменяйце яго на модульныя кліенты v3 пад @aws-sdk/*, якія таксама дазволяюць імпортуваць толькі тыя кліенты, якія вы викорыстоўвайце.
  • Старэйшыя інструменты, такія як vue-cli і Nuxt 2, фактычна ўжо є застарэлымі.
  • У меры модернізацыі сэрвісу Node.js продовжваюць знімаць падтрымку вбудованых функцыяй і старэйшых API, таму перад кожным апгрейдам да новай версіі чытайце офіцыйны список знімаемых функцыяй.
  • Сэрвісы на кшталт Bun включаюць большую колькасць функцыяй натыўна, што ўсё больш зменшае патрэбу ў багатьых маленькіх пакетах-засобах.
  • Процедура, якая падтрымвае актуальнасць залежнасцей

    Дастатнька толькі адна замена гэтых бібліятэкаў; мета — стварыць прычыну, якая не дазволіць нарабляцца новым пакетам залежнасцей.

    1. Рэгулярна адрабатывайце package.json і запускайце npm outdated асабіста npm audit, ўжо каб былы видны будзь-якія змены.
  • Вядзіце прыоритэт натывным функцыям платформы, калі яны стануць стабільнымі і будуць шырока падтрымваныя ў тых средах, якія вы нарабляеце.
  • Следзіце за аанунсамі пра зняцье падтрымкі, якія публікуюць React, Node.js, ESLint і адпаведныя разработчыкі вашых ключовых бібліятэкаў.
  • Спрыяйце настанове, што „гэта ўсё яшчэ працюе“, як тымчасовам стану. Постаўка аптэчак проты вялікага бяспекавага рызыку і падтрымка екасістэмы маюць большое значэнне, чым зручнасць проста не чыніць нічога.
  • Для новых проектаў за значкам прызначэння выбірайце сучасныя інструменты: Vite, вбудованы fetch, Temporal, які ўздойшоў падтрымку, і актуальныя версіі ключовых фрэймворкаў.
  • Прыгодны ўзмаўк: не кожная застарэлая залежнасць патрабуе негайнага перапісвання. Стабільны внутрашні інструмент, які выкарыстоўвае jQuery або Webpack, можа коштаць больш пад час міграцыі, ніж калі-небудзь заўсёды зашчадзіць. Прыоритэтаваце ў залежнасці ад ступеня выкорыстання. Усё, што не падтрымваецца і якое вплывае на сеть, даныя корыстніка або процес складання (request, CRA, AWS SDK v2), стоіць на першай пазіцыі; інструменты, якія зменшують размер пакетаў, такія як Moment і Lodash, — на другай; чыста стылістычная модернізацыя можа чакаць.

    Ключовыя выводы

    • Застарэлыя і не падтрымваныя пакеты ў першую чаргу яўляюцься проблемай безпекі, а толькі пасля — проблемай выдатнасці, таму міграцыі трэба ранжаваць па рызыку.
    • Багато колькіх ранейшых стандартных інструментаў (Moment, Lodash, jQuery, request) былі аб’еднаны з самым языкам, DOM або средой выканання, што робіць ўзамену меншым за самую залежнасць.
  • Міграцыя інструментаў, такіх як CRA на Vite, зазвычай стосуецца настройкаў, а не коду прыемлів.
  • Рэгулярны аудыт і викорыстанне сучасных інструментаў для новых проектаў дапамагаюць у майбутнім зменшыць колькасць такіх патрэбаў.