Привет! Меня зовут Дмитрий Усов, я фронтенд-разработчик в компании Ситимобил.
Буквально несколько месяцев назад возникла задача создать виджет для заказа такси через сайт. В этой статье я хотел бы объяснить, почему для этой задачи был выбран Svelte, поделиться своим мнением о его преимуществах и недостатках, а также дать полезные ссылки, если вы решите изучить или использовать эту технологию.
Исходные данные
Задача: создать виджет для заказа такси через сайт. Вам необходимо определиться с требованиями и исходя из них выбрать инструмент, с помощью которого будет написан этот виджет. Что было важно в моем случае:- Со стороны бизнеса:
- Виджет должен загружаться и запускаться быстро.
В результате размер конечного пакета должен быть как можно меньшим.
- Виджет должен загружаться и запускаться быстро.
- Со стороны разработки:
- Компонентный подход. Это облегчит дальнейшие изменения.
- Возможность избежать ручного управления DOM. Это позволит вам писать код быстрее.
- Мне хотелось, чтобы эта технология развивалась, чтобы у нее было сообщество и хорошая документация.
- Компонентный подход. Это облегчит дальнейшие изменения.
У React, Vue и Angular с этим проблемы.
Реагировать | Вю | Угловой | |
---|---|---|---|
Размер времени выполнения (gzip + мин) | 39,5 КБ + 2,6 КБ | 22,8 КБ | 90, 1 КБ |
- Все еще тот же размер во время выполнения.
- Stateofjs — насколько технология интересна разработчикам и насколько они ею довольны.
Предействовать | Стройный | |
---|---|---|
Размер времени выполнения (gzip + мин) | 3,8 КБ | 1,4 КБ |
Удовлетворен | 78% | 88% |
Интересный | 40% | 67% |
Преимущества Свелте:
- Выигрышные показатели в таблице.
- Отличная возможность для экспериментов, так как проект небольшой.
Preact здесь проигрывает, так как внутри это React, который мы уже везде используем.
- Большинство компонентов являются домашняя страница Mail.ru написан на Svelte.
Несколько слов о Svelte
Svelte - это язык с принципиально новым подходом к созданию пользовательских интерфейсов.Я рекомендую прочитать этот статью, чтобы узнать больше о Svelte.В то время как традиционные фреймворки, такие как React и Vue, выполняют большую часть своей работы в браузере, Svelte переносит эту работу на этап компиляции, который происходит при создании приложения.
Выполнение
Виджет представляет собой модальное окно с несколькими экранами и формами внутри.
Здесь нужно было понять, сможет ли Svelte реализовать тот функционал, который указан в технических характеристиках.
Потратив день на изучение и тестирование, я пришел к выводу, что это возможно, и начал это реализовывать.
Доступен виджет - Здесь .
Сама реализация не заняла много времени — в Svelte имеется огромное количество полезных инструментов (об этом позже).
Один из самых запоминающихся моментов: поднятие локального обратного прокси для связи с серверной частью в обход CORS. Изначально для сборки проекта был выбран роллап, но, как выяснилось позже, запрещено убедитесь, что и горячая перезагрузка, и прокси активны, поскольку каждый предоставляет свой собственный сервер, и вы можете использовать только один.
Пришлось уже готовый роллап поменять на вебпак.
В остальном все проблемы, с которыми я столкнулся, были решены быстро.
Итак, преимущества Svelte
Опишу все преимущества, которые заметил в процессе выбора технологии и реализации проекта.Важный : все написанное здесь - мое личное мнение.
Возможно, преимущества, которые я выделил, не будут таковыми для вас, вашего проекта или компании.
Низкий порог входа
Здесь простой JS/HTML/CSS в компонентах и дополнительные бонусы от крупных фреймворков.Новички и разработчики с опытом Vue/React/Angular обязательно найдут в Svelte что-то знакомое.
Скорость
- Размер времени выполнения (мин+gzip) 1,4 КБ .
- Нет виртуальный DOM .
На этапе сборки Svelte знает все состояния приложения и то, как оно может меняться между ними.
- Минимальный шаблон .
- Технология удаления мертвого CSS. Если ваше приложение не использует какую-то часть CSS-кода, то подключенный линтер сообщит вам об этом.
И если вы вдруг забудете удалить этот код, компилятор сделает это за вас.
Множество полезных инструментов разработки.
- Существует компонентный подход.
- Есть реактивность .
- Есть жизненные циклы компонентов .
- Есть контекст И магазины , позволяющий взаимодействовать между компонентами.
- Действия .
Я также рекомендую статья AlexxNB , в котором он раскрыл больше примеров.
- Есть самый простой и функциональный анимация как я когда-либо видел.
Несмотря на то, что анимации написаны как функции JS, они компилируются в нативные CSS-анимации и, соответственно, выполняются в отдельном от JS потоке.
Сообщество и документация
- Есть подробное документация В сети.
- Управление , который содержит все, что вам нужно знать, чтобы начать писать на Svelte.
- Есть русскоязычное сообщество в Telegram, в котором более 1500 человек.
- Есть официальный Дискорд с чатами на разные темы (сапер, свелте, вакансии, машинопись и т.д).
Минусы Свелте
А теперь о недостатках, которые я заметил в процессе выбора технологии и реализации проекта.Опять же, важно : все написанное здесь - мое личное мнение.
Возможно, для вас, вашего проекта или компании выделенные мной минусы таковыми не будут.
Подсветка синтаксиса в Gitlab
Синтаксис Svelte изначально в Gitlab не выделено .Это большая проблема в развитии команды.
ПавелМалый предложил вам использовать gitattributes в качестве обходного пути.
Мониторинг ошибок
В Свелте нет обработчика ошибок , Как ErrorBoundary в React .Виджет встроен в сайт, и вы не хотите глобально отслеживать все ошибки, которые возникают у этого сайта при подключении, например, Часовой .
Хотелось бы иметь возможность отслеживать ошибки JS конкретно в виджете.
Количество библиотек
Готовые решения очень мало .
выводы
- Внимательно проверьте, соответствует ли выбранная вами технология заявленным требованиям.
- Во время реализации казалось, что лучшей технологии для виджета и быть не может. Писать на Svelte было огромным удовольствием.
Надеюсь, появятся еще проекты, в которых это можно будет применить.
- Svelte — это пример того, как, не имея за собой финансовой поддержки, можно сделать отличную технологию, у которой определенно есть ниша для применения.
Надеюсь, что с годами оно будет только расти.
Полезные ссылки и плагины на примере vscode
- Репортаж Ильи Климова поможет каждому, кто смотрит на Svelte, ответить на вопрос: «Является ли Svelte хорошим выбором для моего проектаЭ»
- Здесь о Svelte много информации и видео.
- Telegram-сообщество
- Сообщество в раздоре
- Статьи на dev.to
- Машинопись
- Состояние Svelte 2020
- Автоимпорт стройных
- Строгий синтаксис
- Svelte IntelliSense
- Стройные фрагменты
Благодарности
Отдельное спасибо Евгению Володину, Кристине Цараевой, Павлу Малышеву, Артему Пулявину, Владу Кабанцову, Павлу Луговкину за рецензирование статьи.Теги: #JavaScript #svelte #SvelteJS
-
Распределение Данных В Apache Ignite
19 Oct, 24 -
Настройка Archlinux На Asus Eee 1201Nl
19 Oct, 24 -
Пак Фпсу-Ип И Его Преимущества
19 Oct, 24