- PVSM.RU - https://www.pvsm.ru -
Сегодня Mislav Marohnić объявил о том [1], что разработчики Github избавились от jQuery на фронтенде GitHub.com. Казалось бы, в самом этом факте нет ничего примечательного, если бы не один интересный момент.
Проблема выбора нового фреймворка для фронтенда была решена радикально — решено было обойтись без фреймворков в принципе. Вместо них были использованы следующие средства:
Помимо Custom Elements, ничего другого из Web Components было решено не использовать. Разработчики присматривались к Shadow DOM и были бы не против прибегнуть к нему — однако, в силу того, что на полифиллах скорость поиска в DOM оставляет желать лучшего, им пришлось пока отложить эту затею.
Зачем разработчикам в принципе потребовалось все это сделать? По их словам [5], для того, чтобы «отдавать» посетителям меньше килобайт, иметь возможность использовать более явно выраженный синтаксис для выполнения манипуляций с DOM, а также ради возможности использовать библиотеку Flow.JS [6] для статического анализа типов. По словам разработчиков, процесс ухода с jQuery занял годы.
Эдди Османи из команды 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
Нажмите здесь для печати.