169 похожих чатов

Привет. подскажите плиз, есть ли какой-то смысл не дублировать svg

в проекте? понятно что можно вынести все svg в отдельную папку, но получается помойка как мне кажется, потом сложнее искать нужную svg. я раскидываю всё по папкам страниц, типа модульность такая. это нормальный подход? или мб от этого страдает производительность или ещё какие минусы есть?

27 ответов

19 просмотров

“svg” - иконки?

А чё помойка, выносишь статику в одно место и структурируешь

ну кмк не очень хорошо, как минимум вес проекта растет при желании модульность можно сделать отдельным icons.js файлом для группы компонентов (н-р сделай такой в папке main-page, где у тебя лежит все для главной страницы) и туда импортни нужное

Pavel-Vladimirov Автор вопроса
Sunrise
А чё помойка, выносишь статику в одно место и стру...

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

Для иконок самый правильный путь - использовать спрайты. Советую свою тулзу - https://www.npmjs.com/package/@neodx/svg Почитать можешь тут https://t.me/this_is_your_channel/44 и тут https://t.me/so_this_is/7

Pavel-Vladimirov Автор вопроса
Natalie
ну кмк не очень хорошо, как минимум вес проекта ра...

ну это ещё больше каши добавляет, не? лишние импорты

или так у меня вообще (не лучшая практика, да, но у меня мало иконок, так что пойдет) вся разметка в одном файле в объекте лежит, я ее потом вызываю через название поля

нихера себе))) мы тут за килобайты деремся, мегабайт это много

Natalie
или так у меня вообще (не лучшая практика, да, но...

А могла бы взять поделку и делать так: import { Icon } from '@/shared/ui'; export function SomeFeature() { return ( <div className="space-y-4"> <Icon name="common/add" /> <Icon name="common/close" className="text-red-500" /> <Icon name="text/bold" className="text-lg" /> <Icon name="actions/delete" className="p-2 rounded-md bg-stone-300" /> </div> ); }

Pavel-Vladimirov Автор вопроса
Natalie
нихера себе))) мы тут за килобайты деремся, мегаба...

так а на что влияет? или при старте приложения оно всё прогружается у клиента в браузере? а лишние 100кб при загрузке новой страницы это разве много?

Pavel Vladimirov
так а на что влияет? или при старте приложения оно...

- Да - Ты сам себе руинишь DX - SVG in JS - раковник

Dmitry Remezov
Для иконок самый правильный путь - использовать сп...

@Pavel5284 Ты понял, о чем говорю?) Один раз настраиваешь плагин для генерации спрайтов, пишешь компонент иконки и везде юзаешь, оно всё автоматически будет работать. Никаких svg in js, сотен импортов, всё максимально быстро, просто, правильно и удобно

Pavel-Vladimirov Автор вопроса

Нет. Где можно посмотреть реальный код?

Pavel Vladimirov
Нет. Где можно посмотреть реальный код?

Тут https://www.npmjs.com/package/@neodx/svg#step-by-step И тут https://github.com/secundant/neodx/tree/main/examples/svg-vite

Dmitry Remezov
https://t.me/so_this_is/7

а это чей канал кстати?

Dmitry Remezov
https://t.me/so_this_is/7

Есть у спрайтов минусы?

Abdullaev
Есть у спрайтов минусы?

Да, ломаются на масках/фильтрах (типа <g filter=“url(#kek)”>), пока не дошли руки до автоматического инлайна таких приколов. Но это всё не актуально для иконок

Pavel-Vladimirov Автор вопроса
Dmitry Remezov
Тут https://www.npmjs.com/package/@neodx/svg#step-...

Спс. Попробую внедрить на выхах. Но в чём смысл? Бандл уменьшится или что?

Pavel-Vladimirov Автор вопроса
/ /
удобство паша, удобство

Ну мне удобно дублировать и импортировать. Удобство это вкусовщина и дело привычки, не?

Pavel Vladimirov
Спс. Попробую внедрить на выхах. Но в чём смысл? Б...

Ты бы открыл что скидывал, там написаны проблемы) Много причин, например: - DX - у тебя будет один компонент с автокомплитом и типизацией - Скорость сборки (dev-сборки тоже) - Само собой, меньше бандл, ты всю статику сделал статикой, а не впердолил в JS - +100кб svg in JS != +100кб svg в виде отдельного файла

Pavel Vladimirov
Ну мне удобно дублировать и импортировать. Удобств...

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

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Карта сайта