- PVSM.RU - https://www.pvsm.ru -

Github.com отказывается от использования jQuery и переходит на чистый JavaScript

Сегодня Mislav Marohnić объявил о том [1], что разработчики Github избавились от jQuery на фронтенде GitHub.com. Казалось бы, в самом этом факте нет ничего примечательного, если бы не один интересный момент.

Проблема выбора нового фреймворка для фронтенда была решена радикально — решено было обойтись без фреймворков в принципе. Вместо них были использованы следующие средства:

  • querySelectorAll [2] (который предположительно был вдохновлен когда-то именно jQuery),
  • fetch [3] для работы с AJAX,
  • delegated-events для обработки событий,
  • полифиллы для работы с DOM,
  • пользовательские элементы (Custom Elements [4]), которые сейчас на подъеме.

Помимо Custom Elements, ничего другого из Web Components было решено не использовать. Разработчики присматривались к Shadow DOM и были бы не против прибегнуть к нему — однако, в силу того, что на полифиллах скорость поиска в DOM оставляет желать лучшего, им пришлось пока отложить эту затею.

Зачем разработчикам в принципе потребовалось все это сделать? По их словам [5], для того, чтобы «отдавать» посетителям меньше килобайт, иметь возможность использовать более явно выраженный синтаксис для выполнения манипуляций с DOM, а также ради возможности использовать библиотеку Flow.JS [6] для статического анализа типов. По словам разработчиков, процесс ухода с jQuery занял годы.

image

Эдди Османи из команды Google Chrome оценил [7] быструю скорость работы и загрузки новой версии сайта

На смену плагину jquery-pjax [8] пришел vanilla pjax [9], который «заточен» специально под Github, снабжен улучшениями и тесно связан с кодовой базой — к сожалению, код используемой Github версии библиотеки вряд ли будет открыт в связи с трудностью ее поддержки в будущем.

Кстати, многие из своих веб-компонентов Github выкладывает в open source — посмотреть их можно по ссылке [10], в дальнейшем список будет расширяться. Для браузеров, в которых отсутствует нативная поддержка fetch, в Github был написан собственный полифилл [11]; для делегирования событий используется библиотека delegated-events [12]. Обе библиотеки доступны под лицензией MIT.

Автор: HotWaterMusic

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/287219

Ссылки в тексте:

[1] объявил о том: https://twitter.com/mislav/status/1022058279000842240

[2] querySelectorAll: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll

[3] fetch: https://developer.mozilla.org/ru/docs/Web/API/Fetch_API/Using_Fetch

[4] Custom Elements: https://learn.javascript.ru/webcomponent-core

[5] По их словам: https://twitter.com/mislav/status/1022071071065944064

[6] библиотеку Flow.JS: https://flow.org/en/

[7] оценил: https://twitter.com/addyosmani/status/1022151085572550656

[8] jquery-pjax: https://github.com/defunkt/jquery-pjax

[9] vanilla pjax: https://github.com/martndemus/pjax

[10] можно по ссылке: https://github.com/search?q=topic%3Aweb-components+org%3Agithub

[11] полифилл: https://github.com/github/fetch

[12] delegated-events: https://github.com/dgraham/delegated-events

[13] Источник: https://habr.com/post/418257/?utm_campaign=418257