Задать вопрос
Контакты

Достижения

Все достижения (6)

Наибольший вклад в теги

Все теги (41)

Лучшие ответы пользователя

Все ответы (73)
  • Зачем нужны интерфейсы в Angular?

    Дело не в Angular, а в том что такое интерфейс. Я расскажу со стороны моей практики.

    Интерфейс это контракт взаимодействия между техническими сущностями (классы, объекты, функции, и так далее). Если мы создаем 10 объектов, которые соблюдают (реализуют) интерфейс, значит их можно подменять друг другом (только не нужно нарушать LSP, это принцип SOLID).

    Так вот, отсюда есть мощные бонусы:

    Первое, если создавать интерфейсы, то сущности начинают зависеть не друг от друга, а от интерфейса. Это значит что вместо зависимости одного класса от другого конкретного класса, можно использовать зависимость от интерфейса и любой класс реализующий интерфейс. Таким образом, если понадобится, можно спокойно заменить один класс на другой, если они реализуют один и тот же интерфейс. Это называется принцип инверсии зависимостей (один из принципов SOLID).

    Выходит что сущности не завязываются друг на друга, и их можно разрабатывать независимо друг от друга, а в разработке чем меньше связей между классами/объектами, тем лучше. Если потом понадобится изменить код, поменять класс, будет значительно меньше проблем. Меньше, потому что если есть цепочка зависимостей, то нельзя изменить что-то одно, потому что другое сломается, и придется менять всю цепочку. Убирая прямые зависимости изменение кода становится проще.

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

    Третье, это понимание с чем ты работаешь. Когда есть интерфейс, ты всегда понимаешь что можно использовать у объекта, что там есть, и какого это типа. Просто очень удобно.

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

    Ты сначала думаешь как оно будет работать, какие есть данные, потом описываешь это через интерфейсы, и прочее, а потом реализуешь. Поэтому можно считать что интерфейс это один из ключевых строительных блоков архитектуры приложения. Без него сущности будут пытаться дергать нужные им данные от объектов на входе, без понимания можно ли их вообще оттуда дергать, что там вообще реально есть, и в итоге получится хаос.

    Поэтому Ангуляр собственно не причем, это просто фреймворк, а принципы проектирования там те же самые, как и в любом другом приложении.
    Ответ написан
    1 комментарий
  • Есть ли курс по анимации для начинающего?

    Анимация в JavaScript это набор техник по изменению CSS элементов, не более того. Основное это animation, transition, и transform.

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

    Это минимум.

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

    Для этого нужно разбираться со вкладкой Performance в Chrome DevTools. Профайлите свои анимации, причем, делайте их похардовее, чтобы браузер офигел и подвисал, и смотрите почему он лагает. Чтобы понять причины тормозов придется копать в дерево DOM, как рисуются элементы, как они аффектятся при изменении DOM, и прочее. Так и поймете как делаются анимации, что хорошо и что плохо для браузера.

    Всё описанное выше есть в документациях, можно найти при необходимости, например:

    https://developers.google.com/web/fundamentals/per... (читать весь раздел)
    https://developer.mozilla.org/en-US/docs/Web/CSS/a...

    Вообще информации нужно море, ссылок будет намного больше.

    Собственно по вопросу – я не искал, но не уверен что найдется нормальный курс по анимациям, разве что поверхностные. Если хотите реально научиться работать с анимациями, то практика, вероятно, лучший вариант.
    Ответ написан
    Комментировать
  • JS последовательность изучения, что учить после основы в 2021 году?

    Сейчас почти весь фронт это React, минус часть работает с Ангуляром или Vue, и часть с динозаврами и другими менее популярными решениями.

    Минимально нужно:
    1. HTML
    2. CSS
    3. JavaScript
    4. Сборка (Webpack в 99% случаев)
    5. React (вся экосистема, включая Redux, Saga, Router, и прочее)
    6. Тестирование приложений на фронте (Jest, Karma, Selenium, Puppeteer, Cucumber, Gherkin минимум)


    Это самый минимум, но на самом деле надо намного больше:
    1. Знание архитектур ПО, видов, плюсов, минусов
    2. Знание принципов проектирования (шаблоны, SOLID, и другие слова)
    3. Изучение приемов кодирования
    4. Изучение работы сетевых протоколов (особенно HTTP/S)


    Дальше остается миллион и маленькая тележка того, что нужно знать ЕЩЕ, и здесь уже нереально всё перечислить, например:
    • Процессы отрисовки веб-страницы
    • Продвинутая работа с анимацией
    • Виды программирования, их плюсы и минусы, как они работают
    • Изучение инструментов
    • Изучение приемов балансировки нагрузки (в том числе на фронте)


    ...и потом еще Agile (чистый, потом Scrum, Kanban), а потом управление командами, принципы коммуницирования, принципы планирования работы, понимание процессов производства софта, и прочее и прочее..

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

    Берете задачу посложнее, и делаете на нормальном стеке. В процессе соберете миллион грабель, научитесь тому минимуму, что необходимо, и так прокачаетесь.

    Пет-проекты нужно делать всегда, даже если есть работа, потому что работа это устоявшиеся принципы и инструменты, а пет-проекты дают возможность изучения и использования других инструментов, подходов, поэтому это отличный способ улучшить свои навыки.
    Ответ написан
    1 комментарий
  • Чему, как и где учиться веб дизайну?

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

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

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

    Третье, разобраться как устроены сайты (структура, шапка, контент, футер, меню), и посмотреть на разные UI Kit'ы, чтобы понять из чего обычно строятся все интерфейсы (плюс-минус, если без наворотов).

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

    Ну и практика-практика-практика, больше никак.
    С опытом придет чувство что хорошо, а что не очень. Объяснить это сложно :)

    По инструментам – Zeplin, или вектор, но могу ошибаться, потому что не дизайнер, я просто знаю что крутые дизайнеры работают с этим. Если сложно (вектор это непросто для новичка), можно начать с фотошопа.
    Ответ написан
    1 комментарий
  • Как сделать такую полосу прокрутки на сайте?

    Подарите дизайнеру сервый карандаш и попросить нарисовать цветную картину :)
    Это к тому, дизайнер должен понимать принципы веб и такие вещи не придумывать, чтобы потом разработчики не страдали.

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

    Есть второй вариант, это JavaScript, т.е. программировать цвет элементов, в том числе этого "перехода" скроллбара. Сложное решение чтобы описать словами, но если коротко, то писать свой скроллбар, этот ползунок делать как два элемента одинакового или разного цвета, и в зависимости от прокрутки менять их размер и цвет, получится эффект "перехода".

    Вариант №3, опять же JavaScript, это реализация через canvas.

    Вариант №4, и он самый лучший, это согласовать изменения в дизайне.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (44)