Hacker News

Poprosiłem Claude'a Code o usunięcie jQuery. Nie wyszło fatalnie

Poprosiłem Claude'a Code o usunięcie jQuery. Nie wyszło fatalnie Ta eksploracja zagłębia się w pytanie, badając jego znaczenie i możliwości — Mewayz Business OS.

5 min. przeczytaj

Mewayz Team

Editorial Team

Hacker News

Poprosiłem Claude'a Code o usunięcie jQuery. Nie udało się

Usunięcie jQuery ze starszej bazy kodu na papierze wydaje się proste — w praktyce jest to jeden z najbardziej podstępnych refaktorów, jakich może spróbować programista. Przekazałem to zadanie Claude’owi Code, asystentowi kodowania AI, oczekując czystej migracji do waniliowego JavaScript, a potem nastąpiła kaskada uszkodzonych procedur obsługi zdarzeń, brakujących abstrakcji AJAX i głęboko zagnieżdżonych zależności wtyczek, które rzuciły projekt na kolana.

Dlaczego usunięcie jQuery wydawało się dobrym pomysłem?

Pomysł był przekonujący: nowoczesne przeglądarki wyeliminowały lukę w kompatybilności, która sprawiła, że ​​jQuery stało się niezbędne w 2009 roku. Vanilla JavaScript obsługuje teraz natywnie manipulację DOM, żądania pobrania i delegowanie zdarzeń. Usunięcie jQuery powoduje zmniejszenie pakietu o 87 KB (zminifikowany + spakowany w formacie gzip), poprawia wyniki Lighthouse i eliminuje zależność, której konserwacja poświęca coraz mniej uwagi.

Naszą bazą kodową był średniej wielkości pulpit nawigacyjny SaaS zawierający około 140 000 linii kodu JavaScript, zgromadzonych w ciągu sześciu lat. jQuery było wszędzie — nie tylko w funkcjach narzędziowych, ale wplecione w wtyczki innych firm, sprawdzanie poprawności starszych formularzy, a nawet niektóre części szablonów renderowane przez serwer. Powierzchnia refaktoryzacji była ogromna i naiwnie założyłem, że narzędzie AI zje ją na śniadanie.

Co właściwie się stało, gdy Claude Code próbował to zrobić?

Pierwsze podanie było zachęcające. Claude Code poprawnie zidentyfikował wywołania $(document).ready() i zastąpił je słuchaczami DOMContentLoaded. Proste wywołania $.ajax() zostały w prosty sposób przekonwertowane na funkcję fetch(). W przypadku nisko wiszących owoców sztuczna inteligencja spisała się znakomicie.

Potem pojawiły się wtyczki. Nasz kod bazował na Select2, DataTables i niestandardowym selektorze zakresu dat — wszystko było zależne od jQuery. Claude Code zasugerował zastąpienie ich nowoczesnymi alternatywami, co jest samo w sobie słuszną radą, ale nie uwzględnia skutków ubocznych. Zamiana Select2 na Choices.js zmieniła interfejs API inicjalizacji, nazwy zdarzeń i umowę powiązania danych. Claude Code zastąpił import i poszedł dalej, pozostawiając nienaruszone odniesienia w 23 komponentach.

Co gorsza, sztuczna inteligencja miała problemy z pośrednim użyciem jQuery — miejscami, w których z technicznego punktu widzenia napisano waniliowy JS, ale przekazały wyniki za pomocą funkcji narzędziowych jQuery, takich jak $.extend() lub $.isPlainObject(). Całkowicie je pominął podczas przebiegu analizy.

„Narzędzia do kodowania AI doskonale radzą sobie z zastępowaniem wzorców. Mają trudności z systemowym mapowaniem zależności — zrozumieniem nie tylko tego, gdzie wywoływana jest biblioteka, ale także tego, jakie kontrakty pośrednio wymusza w całej bazie kodu”.

💡 CZY WIESZ?

Mewayz replaces 8+ business tools in one platform

CRM · Fakturowanie · HR · Projekty · Rezerwacje · eCommerce · POS · Analityka. Darmowy plan dostępny na zawsze.

Zacznij za darmo →

Jakie są prawdziwe wyzwania związane z migracją z jQuery do Vanilla?

Awaria ujawniła problemy strukturalne, których żadne narzędzie — człowiek ani sztuczna inteligencja — nie jest w stanie ominąć bez odpowiedniego przygotowania:

Ukryte kontrakty na wtyczki: wtyczki jQuery opierają się na wewnętrznym systemie zdarzeń jQuery (rozszerzenia $.fn, zdarzenia delegowane). Zamiana biblioteki hosta unieważnia wszystkie wtyczki jednocześnie, a nie stopniowo.

Różnice w obsłudze błędów AJAX: funkcja $.ajax() jQuery zawija błędy w znormalizowanym obiekcie. Interfejs Fetch API zgłasza awarię sieci, ale rozwiązuje problem po odpowiedziach 4xx/5xx — jest to inwersja behawioralna, która psuje każdą istniejącą procedurę obsługi błędów.

Abstrakcje animacji: $.animate(), .fadeIn() i .slideUp() nie mają bezpośrednich odpowiedników; Przejścia CSS wymagają strukturalnych zmian znaczników, a nie tylko zamiany JavaScript.

Różnice w silniku selektorów: Silnik Sizzle jQuery obsługuje pseudoselektory, takie jak :visible i :has(), których querySelectorAll() nie obsługuje natywnie.

Założenia dotyczące stanu globalnego: Starszy kod często mutuje obiekt jQuery lub opiera się na kolejności wtyczek — założenia niewidoczne dla analizy statycznej.

Claude Code poprawnie zidentyfikował około 60% wymaganych zmian. Pozostałe 40% wymagało programisty-człowieka, który rozumiałby kontrakty behawioralne, a nie tylko składnię.

Jak programiści powinni faktycznie podejść do tej migracji?

Właściwa strategia ma charakter przyrostowy i oparty na granicach, a nie hurtowa. Zamiast wyrywać jQuery

Streamline Your Business with Mewayz

Mewayz brings 207 business modules into one platform — CRM, invoicing, project management, and more. Join 138,000+ users who simplified their workflow.

Start Free Today →

Wypróbuj Mewayz za Darmo

Kompleksowa platforma dla CRM, fakturowania, projektów, HR i więcej. Karta kredytowa nie jest wymagana.

Zacznij dziś zarządzać swoją firmą mądrzej.

Dołącz do 30,000+ firm. Plan darmowy na zawsze · Bez karty kredytowej.

Uznałeś to za przydatne? Udostępnij to.

Gotowy, aby wprowadzić to w życie?

Dołącz do 30,000+ firm korzystających z Mewayz. Darmowy plan forever — karta kredytowa nie jest wymagana.

Rozpocznij darmowy okres próbny →

Gotowy, by podjąć działanie?

Rozpocznij swój darmowy okres próbny Mewayz dziś

Platforma biznesowa wszystko w jednym. Karta kredytowa nie jest wymagana.

Zacznij za darmo →

14-dniowy darmowy okres próbny · Bez karty kredytowej · Anuluj w dowolnym momencie