Что возвращает свойство navigator.userAgent?
Anonymous Quiz
11%
Массив языков, предпочтительных для пользователя.
71%
Строку, содержащую название браузера.
8%
Уведомление о состоянии подключения к сети.
9%
Объект с данными о куки.
Media is too big
VIEW IN TELEGRAM
Drag and Drop with JavaScript
В этом видео создаётся Drag and Drop на чистом JS при помощи браузерных событий "dragover" и "drop".
👉 @seniorFront
В этом видео создаётся Drag and Drop на чистом JS при помощи браузерных событий "dragover" и "drop".
👉 @seniorFront
🔥5👍4
String incrementer
Вам дана строка. Если она заканчивается числом, то прибавьте к этому числу 1. Если она не заканчивается числом, то вставьте 1 в конец строки.
Примеры:
👉 @seniorFront
Вам дана строка. Если она заканчивается числом, то прибавьте к этому числу 1. Если она не заканчивается числом, то вставьте 1 в конец строки.
Примеры:
foo -> foo1
foobar23 -> foobar24
foo0042 -> foo0043
foo9 -> foo10
foo099 -> foo100
👉 @seniorFront
👎5👍4
Даты в Javascript наконец-то пофиксят
Из всех последних изменений, которые будут внедрены в ECMAScript, моим любимым с большим отрывом от остальных стало предложение Temporal. Это предложение очень прогрессивное, мы уже можем воспользоваться этим API при помощи полифила, разработанного командой FullCalendar.
В этой статье я расскажу об одном из его главных преимуществ: у нас наконец появился нативный объект, описывающий Zoned Date Time.
👉 @seniorFront
Из всех последних изменений, которые будут внедрены в ECMAScript, моим любимым с большим отрывом от остальных стало предложение Temporal. Это предложение очень прогрессивное, мы уже можем воспользоваться этим API при помощи полифила, разработанного командой FullCalendar.
В этой статье я расскажу об одном из его главных преимуществ: у нас наконец появился нативный объект, описывающий Zoned Date Time.
👉 @seniorFront
🔥5👍1
Как часто происходит рендер в React?
Первоначальный рендеринг
Когда компонент впервые добавляется в DOM, происходит его рендеринг. Это единственный раз, когда компонент рендерится в процессе монтирования.
Обновление состояния
Когда состояние компонента изменяется, React вызывает рендеринг компонента. Это позволяет компоненту отобразить новые данные.
Обновление пропсов
Если родительский компонент передаёт новые пропсы, дочерний компонент будет ререндериться с новыми данными.
Обновление контекста
Когда значение контекста изменяется, все компоненты, использующие этот контекст, будут ререндериться.
Обновление при изменении ключа
Если ключ компонента изменяется, React удаляет старый компонент и добавляет новый, вызывая рендеринг нового компонента.
Чтобы уменьшить количество ненужных рендеров, можно использовать:
- PureComponent и React.memo для функциональных компонентов.
- shouldComponentUpdate для классовых компонентов.
- useMemo и useCallback для мемоизации значений и функций в функциональных компонентах.
👉 @seniorFront
Первоначальный рендеринг
Когда компонент впервые добавляется в DOM, происходит его рендеринг. Это единственный раз, когда компонент рендерится в процессе монтирования.
function App() {
return <MyComponent />;
}
Обновление состояния
Когда состояние компонента изменяется, React вызывает рендеринг компонента. Это позволяет компоненту отобразить новые данные.
function MyComponent() {
const [count, setCount] = useState(0);
return (
<div>
<p>{count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
Обновление пропсов
Если родительский компонент передаёт новые пропсы, дочерний компонент будет ререндериться с новыми данными.
function ParentComponent() {
const [value, setValue] = useState(0);
return (
<div>
<button onClick={() => setValue(value + 1)}>Change Value</button>
<ChildComponent value={value} />
</div>
);
}
function ChildComponent({ value }) {
return <p>{value}</p>;
}
Обновление контекста
Когда значение контекста изменяется, все компоненты, использующие этот контекст, будут ререндериться.
const MyContext = React.createContext();
function App() {
const [value, setValue] = useState('initial');
return (
<MyContext.Provider value={value}>
<button onClick={() => setValue('updated')}>Update Context</button>
<MyComponent />
</MyContext.Provider>
);
}
function MyComponent() {
const contextValue = useContext(MyContext);
return <p>{contextValue}</p>;
}
Обновление при изменении ключа
Если ключ компонента изменяется, React удаляет старый компонент и добавляет новый, вызывая рендеринг нового компонента.
function App() {
const [items, setItems] = useState([1, 2, 3]);
return (
<ul>
{items.map(item => (
<li key={item}>{item}</li>
))}
<button onClick={() => setItems([4, 5, 6])}>Change Items</button>
</ul>
);
}
Чтобы уменьшить количество ненужных рендеров, можно использовать:
- PureComponent и React.memo для функциональных компонентов.
- shouldComponentUpdate для классовых компонентов.
- useMemo и useCallback для мемоизации значений и функций в функциональных компонентах.
👉 @seniorFront
👍17👎1
This media is not supported in your browser
VIEW IN TELEGRAM
sticky stacking on scroll
Логика перелистывания карточек реализована в JS и задействуется по событию 'scroll'.
👉 @seniorFront
Логика перелистывания карточек реализована в JS и задействуется по событию 'scroll'.
👉 @seniorFront
👍5
Анатомия техдолга. Излечим ли пациент?
Почти все ИТ-компании имеют технический долг, но не у каждой есть с ним сложности. Где же эта тонкая грань?
Данный вопрос становится проблемой, когда он либо бесконтрольный, либо проценты уже слишком высоки. «Долговая яма» очень сильно влияет на вовлеченность команды, особенно в случаях, когда данный код достается «в наследство». Сопровождение такого кода становится тяжелой, а иногда и невыполнимой задачей. Отсюда вытекают негативные последствия:
- Большие временные затраты
- Сложность внедрения новыx фич, которые могут увеличить сам долг.
- Снижение мотивации команды и общей комфортной среды внутри.
- Выгорание и отсутствие интереса.
Один из основных способов решения – рефакторинг кода (контролируемый процесс улучшения кода или процесса старой кодовой базы без внесения в него новых возможностей).
Существуют и другие способы уменьшения долга:
- Стабильная реструктуризация и рефакторинг – создание небольших задач на оптимизацию, выделение времени в процессе доработок и внесение нового функционала.
- Приоритетность – вытекает из прошлого пункта. Если затраты времени неимоверно высоки, то в приоритете исправить ситуацию, нежели добавить новых фишек и, тем самым, увеличить %.
- Внедрение ревью (желательно многоступенчатого), стандартов написания и стиля кода, развитие команды и совместное обсуждение, встречи. Внедрение систем автоматической проверки кода.
- Разработка ТД, схем процессов, данных и архитектуры в целом. Помогает выявить проблемы на основе визуализированных и технических данных. Отличный вариант – проектирование полного бизнес-процесса на этапе создания функционала поможет избежать проблем в будущем при определённом уровне команды, поддержка актуальности документации позволит «новичкам» (не только уровень программирования, но и просто новая команда или сотрудник) вникнуть в процесс быстрее и проще. Но данный способ является больше утопией в современной разработке, чем повседневностью.
Мы для себя выявили следующе правило – оставь после себя лучше, чем было. То есть при исправлении ошибки или доработке какого-либо файла, мы пробегаемся глазами и стараемся поправить те вещи, которые нам не понравились или видно, что можно сделать лучше.
👉 @seniorFront
Почти все ИТ-компании имеют технический долг, но не у каждой есть с ним сложности. Где же эта тонкая грань?
Данный вопрос становится проблемой, когда он либо бесконтрольный, либо проценты уже слишком высоки. «Долговая яма» очень сильно влияет на вовлеченность команды, особенно в случаях, когда данный код достается «в наследство». Сопровождение такого кода становится тяжелой, а иногда и невыполнимой задачей. Отсюда вытекают негативные последствия:
- Большие временные затраты
- Сложность внедрения новыx фич, которые могут увеличить сам долг.
- Снижение мотивации команды и общей комфортной среды внутри.
- Выгорание и отсутствие интереса.
Один из основных способов решения – рефакторинг кода (контролируемый процесс улучшения кода или процесса старой кодовой базы без внесения в него новых возможностей).
Существуют и другие способы уменьшения долга:
- Стабильная реструктуризация и рефакторинг – создание небольших задач на оптимизацию, выделение времени в процессе доработок и внесение нового функционала.
- Приоритетность – вытекает из прошлого пункта. Если затраты времени неимоверно высоки, то в приоритете исправить ситуацию, нежели добавить новых фишек и, тем самым, увеличить %.
- Внедрение ревью (желательно многоступенчатого), стандартов написания и стиля кода, развитие команды и совместное обсуждение, встречи. Внедрение систем автоматической проверки кода.
- Разработка ТД, схем процессов, данных и архитектуры в целом. Помогает выявить проблемы на основе визуализированных и технических данных. Отличный вариант – проектирование полного бизнес-процесса на этапе создания функционала поможет избежать проблем в будущем при определённом уровне команды, поддержка актуальности документации позволит «новичкам» (не только уровень программирования, но и просто новая команда или сотрудник) вникнуть в процесс быстрее и проще. Но данный способ является больше утопией в современной разработке, чем повседневностью.
Мы для себя выявили следующе правило – оставь после себя лучше, чем было. То есть при исправлении ошибки или доработке какого-либо файла, мы пробегаемся глазами и стараемся поправить те вещи, которые нам не понравились или видно, что можно сделать лучше.
👉 @seniorFront
👍2
Отделяй и делегируй или Как безболезненно разгрузить менеджера
В этой статье я хотел бы ответить на вопрос: на что нужно обратить внимание руководителю при передаче отдельной функции исполнителю? Или всё достаточно просто, и мы зря здесь сегодня собрались? В термин «функция» я закладываю смысл какой-либо прямой деятельности руководителя. Давайте вместе попробуем разобраться и понять, есть ли подводные камни в этом вопросе и, если есть, то какие.
Спойлер: получилась небольшая (большая) шпаргалка, подсматривая в которую, руководителю будет проще понять, на что же обратить внимание при передаче своей функции исполнителю.
👉 @seniorFront
В этой статье я хотел бы ответить на вопрос: на что нужно обратить внимание руководителю при передаче отдельной функции исполнителю? Или всё достаточно просто, и мы зря здесь сегодня собрались? В термин «функция» я закладываю смысл какой-либо прямой деятельности руководителя. Давайте вместе попробуем разобраться и понять, есть ли подводные камни в этом вопросе и, если есть, то какие.
Спойлер: получилась небольшая (большая) шпаргалка, подсматривая в которую, руководителю будет проще понять, на что же обратить внимание при передаче своей функции исполнителю.
👉 @seniorFront
Нельзя просто так взять и выбрать подходящую библиотеку компонентов...
Но можно написать свою, или стилизовать готовую. В статье разработчик интерфейсов Яндекс Про рассказывает про плюсы и минусы каждого подхода.
А какое решение выбрала команда Про, читайте по ссылке: dev.go.yandex
Но можно написать свою, или стилизовать готовую. В статье разработчик интерфейсов Яндекс Про рассказывает про плюсы и минусы каждого подхода.
А какое решение выбрала команда Про, читайте по ссылке: dev.go.yandex
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Share & Social Semicircles
Свёрстано и анимировано с использованием возможностей препроцессоров Haml и SCSS.
👉 @seniorFront
Свёрстано и анимировано с использованием возможностей препроцессоров Haml и SCSS.
👉 @seniorFront
👍7
Media is too big
VIEW IN TELEGRAM
CSS & JS Background Animation Effects
В этом видео создаётся CSS анимация, которая запускается при событии 'mousemove'.
👉 @seniorFront
В этом видео создаётся CSS анимация, которая запускается при событии 'mousemove'.
👉 @seniorFront
🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
all CSS
Реализовано без использования JS. Свёрстано и анимировано при помощи препроцессоров Pug и SCSS.
👉 @seniorFront
Реализовано без использования JS. Свёрстано и анимировано при помощи препроцессоров Pug и SCSS.
👉 @seniorFront
👍9
⭐️21 сентября Альфа-Банк проведёт A?.Frontend Day — конференцию, которую вы не захотите пропустить.
📆Когда: 21 сентября с 10:00 до 19:00
📍Где: офлайн в Москве и онлайн
На конференции выступят крутые эксперты, каждый из которых готов поделиться своим опытом и сообщить о новейших разработках:
🧷Вадим Царегородцев из Ostrovok.ru расскажет о Valibot — инструменте, который помогает сделать валидацию данных в JavaScript гибкой и безопасной.
🧷Сергей Попов из Skillbox сообщит о проблемах внедрения изменений в компаниях и предложит способы их решения.
🧷Никита Мамизеров объяснит, как внедряли BDUI в Альфа-Банк, с какими сложностями столкнулись и что в итоге получилось.
🧷Никита Ульшин из Т-банка расскажет о паттернах отказоустойчивости, которые помогут минимизировать риски и обеспечить стабильную работу вашего приложения.
Мы подготовили программу на весь день, на A?.Frontend Day вас ждут: онлайн и офлайн-активности, подарки для участников и, конечно же, афтепати, на котором можно расслабиться после насыщенного дня🍸
Регистрация
Ещё больше полезного в Alfa Frontend Community
📆Когда: 21 сентября с 10:00 до 19:00
📍Где: офлайн в Москве и онлайн
На конференции выступят крутые эксперты, каждый из которых готов поделиться своим опытом и сообщить о новейших разработках:
🧷Вадим Царегородцев из Ostrovok.ru расскажет о Valibot — инструменте, который помогает сделать валидацию данных в JavaScript гибкой и безопасной.
🧷Сергей Попов из Skillbox сообщит о проблемах внедрения изменений в компаниях и предложит способы их решения.
🧷Никита Мамизеров объяснит, как внедряли BDUI в Альфа-Банк, с какими сложностями столкнулись и что в итоге получилось.
🧷Никита Ульшин из Т-банка расскажет о паттернах отказоустойчивости, которые помогут минимизировать риски и обеспечить стабильную работу вашего приложения.
Мы подготовили программу на весь день, на A?.Frontend Day вас ждут: онлайн и офлайн-активности, подарки для участников и, конечно же, афтепати, на котором можно расслабиться после насыщенного дня
Регистрация
Ещё больше полезного в Alfa Frontend Community
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1🔥1
Какое из следующих состояний НЕ является состоянием Promise?
Anonymous Quiz
9%
Pending
66%
Completed
18%
Fulfilled
7%
Rejected
🔥5👍1
Media is too big
VIEW IN TELEGRAM
CSS SVG Neon Loader Animation Effects
В этом видео создается с нуля SVG картинка-загрузчик, анимированная в CSS.
👉 @seniorFront
В этом видео создается с нуля SVG картинка-загрузчик, анимированная в CSS.
👉 @seniorFront
👎1