Инструмент Для Сравнения Css-Фреймворков

Здравствуйте, я Александр.

Я активно изучаю и занимаюсь веб-разработкой уже около года.

Все началось с удаления клиента любимой игры и поиска наставника.

Совершенствуясь в веб-разработке, я создал проект CSS Comparator. Сама суть проекта заключается в сравнении CSS-фреймворков по размеру и другим популярным и современным параметрам.

При создании проекта коммерческие цели не преследуются.

Эта статья в основном предназначена для получения отзывов от других веб-разработчиков.

На данный момент это уже мой третий проект, и поскольку он будет интересен и полезен как новичкам, так и опытным веб-разработчикам, я решил написать о нем статью.

Все началось с того, что мой коллега искал CSS-фреймворк, основанный на размере, и первый ответ, который предлагает Google, выглядит так:

Инструмент для сравнения CSS-фреймворков

Так возникла идея — создать продукт, который бы сравнивал популярные CSS-фреймворки по размеру, а также по другим параметрам.

Над проектом работают всего два человека — я, как фронтенд-веб-разработчик, и мой коллега, который парсер на Golang. Первый прототип проекта имел достаточно упрощенный вид:

Инструмент для сравнения CSS-фреймворков

В отличие от популярных альтернатив, наш проект имеет фильтр доступности, независим (нет зависимости от JavaScript, jQuery и т. д.), а также содержит ссылки на чат Gitter и Stack Overflow. Тогда проект полностью перешёл ко мне.

В начале июля 2019 года работа над ним началась.

Первым желанием было придать товару более выразительный вид, и конечно сюда входило добавление фильтрации и сортировки по размеру.

Для отображения нужных вам результатов вам достаточно указать необходимый размер (в байтах) в соответствующем поле ввода:

Инструмент для сравнения CSS-фреймворков

Таблица размеров также доступна отдельно:

Инструмент для сравнения CSS-фреймворков

Подобно фильтрации по размеру, вы можете фильтровать по количеству вопросов в Stack Overflow и количеству звезд на GitHub. Ведь известно, что каждый веб-разработчик тратит много времени на поиск необходимой информации.

В связи с этим я решил добавить на форум соответствующие ссылки и ссылки, если они есть.

Данные решения помогут существенно облегчить и ускорить разработку, ведь все необходимые ссылки находятся под рукой.

А фильтрация поможет найти фреймворк, более популярный среди пользователей.

Конечно, во времена смартфонов невозможно было не добавить в мультиселект данные об адаптивности фреймворков, и фильтрацию по ним:

Инструмент для сравнения CSS-фреймворков

В целом информацию, размещаемую на рамочной карте, можно схематически представить следующим перечнем:

  • Имя платформы
  • Компания-разработчик
  • Количество звезд GitHub
  • Наличие доступности
  • Зависимость JavaScript
  • Лицензия
  • Адаптивность
  • Размеры
  • Количество вопросов по переполнению стека
  • Количество пользователей чата Gitter
  • Форум
А сам блок фильтрации и карта в целом выглядят так:

Инструмент для сравнения CSS-фреймворков

На стороне клиента использовались HTML5, CSS3 (верстка с помощью Flexbox) и чистый JavaScript без использования сторонних библиотек и фреймворков.

Звезды GitHub и все размеры фреймворков получаются из общедоступных API с помощью парсера Golang и обновляются еженедельно с помощью заданий cron.

Инструмент для сравнения CSS-фреймворков

Сам скребок работает достаточно просто.

Данные о количестве звезд на GitHub получены из приведенного выше json (у каждого фреймворка он свой), который в примере Bootstrap находится по ссылке.

А размеры рассчитываются так: загружаются dev и prod версии CSS, а затем prod версия архивируется в формате gzip. Поэтому дальше я расскажу, что происходит на клиенте.

Фильтрация осуществляется по флажкам с помощью функции onChecked, принимающей 3 параметра: $element — сам чекбокс name — имя фильтра filter — сам фильтр.

На примере фильтрации по доступности весь код будет выглядеть так:

  
   

const FILTER_ACCESSIBILITY = "accessibility"; function matchAll(framework) { return true; } function matchAccessibility(framework) { return framework.accessibility; } const matchStateMap = { [FILTER_ACCESSIBILITY]: matchAll, }; function match(frameworks) { const result = frameworks .

filter(matchStateMap[FILTER_ACCESSIBILITY]); // other filtration return result; } function $(id) { return document.getElementById(id); } function render(list) { const views = new Array(list.length); for (let i = 0; i < list.length; i++) { const item = list[i]; views[i] = `<h2><a href="${item.siteUrl}" target="_blank">${item.name} v${item.version}</a></h2>`; } $("demo").

innerHTML = views.join(""); } function onChecked($element, name, filter) { $element.addEventListener("click", function () { if ($element.checked) { matchStateMap[name] = filter; } else { matchStateMap[name] = matchAll; } render(match(frameworks)); }); } const $accessibilityCheckbox = $("js-checkbox-accessibility"); onChecked($accessibilityCheckbox, FILTER_ACCESSIBILITY, matchAccessibility);

Сортировку выполняет аналогичная функция

let compare = null; const matchStateMap = { [FILTER_ACCESSIBILITY]: matchAll, // .

}; function match(frameworks) { const result = frameworks .

filter(matchStateMap[FILTER_ACCESSIBILITY]); // other filtration // sort O(N *ln(N)), so better first match, than sort if (compare !== null) { result.sort(compare); } return result; } function sortByStars(a, b) { // DESC return b.repository.stars - a.repository.stars; } function onSort($element, sort) { $element.addEventListener("click", function () { compare = sort; render(match(frameworks)); }); } const $moreStars = $("js-sort-by-stars"); onSort($moreStars, sortByStars);

По данным аналитики, средний трафик на проект составляет около 10 пользователей в день.

Что касается планов на будущее, то это добавление списка доступных компонентов (навбар, кнопка и т.д.) с последующим сравнением их размеров.

Также создаем похожие статические страницы с использованием всех сравниваемых фреймворков и сравниваем их размеры и скорость загрузки.

И, если проект будет популярен, будет добавлен скрапер для обновления количества вопросов на Stack Overflow и количества пользователей на Gitter. Теги: #CSS #веб #веб-разработка #css framework #компаратор

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.