Ответы пользователя по тегу Фронтенд
  • Как фронтенд понимает, что мы авторизованы?

    bingo347
    @bingo347
    Crazy on performance...
    2. Сервер присылает нам ответ, если он позитивный, то возвращает set-cookie, где устанавливает в cookie бразуера сессионный ключ;
    Притом set-cookie он возвращает с флагами secure (доступно только по https) и http-only (недоступно из js). Это единственный доступный вариант хранить сессионный ключ, чтоб его не угнали.

    Во время работы приложения - каким образом фронтент понимает, что отображать? Авторизованную страницу с данными или экран авторизации.
    Делает запрос на эти данные, если успешно - пользователь авторизован, можно записать это в стейт в памяти, как и данные, если 401 - пишем в стейт и на основе этого у нас экран авторизации.
    При отправке логина и пароля так же по ответу сервера можно понять что рендерить.
    Ответ написан
    Комментировать
  • Как проверить токен?

    bingo347
    @bingo347
    Crazy on performance...
    Как лучше проверить токен сохраненный в localstorage при заходе на сайт?
    Хранить токен в localStorage - не очень хорошая идея, так как любой скрипт на любой странице сайта сможет прочитать такой токен и сделать с ним что угодно (например отправить на свой сервер для последующего массового взлома).

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

    Единственный адекватный на сегодня вариант хранения токенов - это кука с флагами secure и http-only.
    Флаг secure обеспечит, что кука будет доступна только по https.
    Флаг http-only не даст доступ к этой куке из JS, прочитать ее сможет только сервер.
    Ответ написан
    Комментировать
  • Сервер возвращает ответ на фронт в виде значений, как изменить стили в зависимости от этих значений?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Вообще выглядит так, что у Вас все же ограниченный набор состояний, которые можно заранее описать классами в стилях и переключать эти классы по ответу от сервера.

    Но если все же стили в каждом конкретном случае определяются сервером, то можно генерировать их на лету. Правда есть проблема, с тем, что такие стили не редактируются через devtools (хотя сейчас может уже что изменилось). Несколько лет назад я сталкивался с подобной задачей, когда стили для некоторых вариантов отображения UI задавались пользователями, я тогда написал вот такой модуль для решения этой задачи:
    https://gist.github.com/bingo347/cb8e62606e206c009...
    Ответ написан
    1 комментарий
  • Как тестировать оптимизацию frontend?

    bingo347
    @bingo347
    Crazy on performance...
    796stwepspdbny_xqrwrrtvoor4.png
    Ответ написан
    Комментировать
  • Как исправить ошибку: You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    test: '/\.png$/'
    ковычки лишние
    test: /\.png$/
    Ответ написан
    Комментировать
  • Порядок изучения frontend?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    frontend.png
    от себя бы добавил, что вместо bem лучше использовать css-modules;
    в качестве первого фреймворка я бы брал последний ангуляр, а не реакт, так как и хорошим практикам научитесь и ценник свой поднимите, ну и кроме основной тройки я бы рекомендовал попробовать svelte, хотя бы что бы просто знать, что можно писать меньше и проще
    Ответ написан
  • Какие модные фронтенд-фишки можете посоветовать?

    bingo347
    @bingo347
    Crazy on performance...
    0. a11y (ну и еще сюда можно заглянуть)
    Притом доступность - это не только версия для слепых (вообще это не отдельная версия должна быть, а сам сайт должен поддерживать скринридер), бывает еще ограниченность движений, в том числе временная (перелом руки, ребенок на руках).

    1. Семантика
    По словам одного очень крутого верстальщика, divатоз очень опасная болезнь с огромным количеством побочек...

    2. Адекватная работа с клавиатуры
    Про клавиатуру. Вот реально бесит, но браузер это почти единственная утилита где я тянусь за мышкой... (хотя есть еще мак ось, но там эпл умный, а юзеров считают тупым быдлом, ну и адекватный трекпад это сглаживает). У меня нет особых проблем не с мышкой не с тачпадом, но клавиатура тупо позволяет мне управлять компом быстрее, а мое время дорого.
    А причиной всему простой факт - интерфейсы делают макаки, которые даже сочетаний своей IDE не знают...
    Что самое интересное, выполнив предыдущие пункты, Вы уже получите вполне вменяемую работу с клавиатурой, просто и абсолютно бесплатно. Но вслед за divатозом как правило развивается хз-где-фокус, ескейп-для-трусов, не-пашут-стрелки и еще куча мелких заболеваний, приводящих к неспособности купить в инете мышку не имея этой самой мышки (попробуйте, очень интересный челендж, покупать с телефона в зачет не идет). Ну и больше всего бесит, когда на сочетания ОС или браузера сайт вешает что-то свое...

    3. Интуитивно понятный интерфейс
    Люди не любят, когда их заставляют думать. Мозг вообще сжигает энергии больше всего остального тела, а если его еще и заставлять активно работать... И это не просто про знакомые иконки, узнаваемое их положение. Это вообще про возможность выполнять большинство действий на автомате. Почему у модалок кнопка закрытия в правом углу? Это привычно большинству, ведь на винде окна закрываются так же. Вот только никто не мешает отследить, что мы на макоси, где вообще-то привычнее, когда крестик слева...
    Ответ написан
    Комментировать
  • Должен ли верстальщик писать логику, например калькулятора обмена валюты?

    bingo347
    @bingo347
    Crazy on performance...
    Зависит от того что Вы прописали в договоре с заказчиком и в ТЗ
    Ответ написан
    3 комментария
  • Как сделать такую прокрутку по сайту?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Комментировать
  • Вопрос о новых веяниях и требованиях во фронтенде?

    bingo347
    @bingo347
    Crazy on performance...
    Для начала скажу об Html academy, что знаю.
    В начале года звали преподавать у них js + разрабатывать по нему курсы. Сразу скажу, что у меня впервые сложилось положительное впечатление от такого предложения, а не пошел я к ним по причинам не зависящим от них. Во-первых они дают базис, основы без которых Вы просто не сможете нормально разрабатывать, а освоить с этим базисом фреймворк большого труда не составит (про фреймворки ниже напишу).
    Во-вторых, хорошее впечатление у них составили люди, с кем удалось пообщаться, которые занимаются там составлением курсов и преподаванием - все как один не академики-теоретики, а практикующие разработчики с хорошим уровнем (а набирала в преподаватели Html academy в тот момент не ниже сеньера, предлагая соответствующую рынку зп).
    Ну и в-третьих, один раз собеседовал кандидата, имеющего за плечами только Html academy, обычно я негативно отношусь к кандидатом имеющим только курсы за плечами, но тут собеседуемый показал хороший уровень владения js.

    Теперь по фреймворкам.
    Не одному адекватному работодателю не нужен тупой фреймворкописатель без знания языка и нативного api, на которых этот фреймворк основан. В то же время, при знании js и DOM Api - Vue и React осваиваются за неделю, Angular за месяц. А без знания основ, может формочки ваять и сможете, но не больше. Так что учите сначала основы - js и нативное api браузера (DOM, CSSOM, ajax и т.д.), а уже потом беритесь за фреймворк.
    Ответ написан
    Комментировать
  • Почему получаем значение из el.style.left?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    читать из style можно, это по сути просто объект
    parseFloat возвращает NaN когда не может распарсить число

    подозреваю, что в первом случает style.left еще не установлен, а во втором, уже да
    хотя правильнее использовать getComputedStyle - ибо объект style содержит только инлайн стили, а getComputedStyle вернет тот стиль, который элемент имеет непосредственно в момент вызова, не зависимо от того как он установлен
    Ответ написан
    Комментировать
  • Намного ли webpack сложнее чем gulp?

    bingo347
    @bingo347
    Crazy on performance...
    Во-первых, это разные вещи, webpack - это бандлер (сборщик если по-русски), gulp - таскраннер (запускалка задач)
    Во-вторых, их можно использовать как совместно так и раздельно
    В-третьих, gulp потихой теряет актуальность, ибо npm вполне умеет быть таскраннером

    Что проще? все же webpack, тут почти всегда все задается декларативным конфигом в виде js объекта, а в gulp надо писать код в функционально-императивном стиле
    Ответ написан
    1 комментарий
  • Откуда пошло разделение терминов с Client-side и Server-side на Front end и Back end?

    bingo347
    @bingo347
    Crazy on performance...
    "Client-side и Server-side" и "Frontend и Backend" - это абсолютно разные и никак не связанные понятия

    Клиент - это приложение, которое делегирует часть своего функционала другому приложению - серверу
    Сервер - это приложение, которое обслуживает множество клиентов, предоставляя им свой функционал
    Frontend - это часть приложения, отвечающая за интерфейс (GUI, CLI, etc.), то есть то, что непосредственно видит пользователь, с чем пользователь взаимодействует
    Backend - это часть приложения, отвечающая за бизнес логику, за фоновые задачи, за то что скрыто от пользователя

    Практически любое приложение содержит backend часть, не зависимо от того клиент оно, сервер или вообще работает без клиент-серверного взаимодействия
    frontend часть может содержать как клиент, так и сервер, хотя сервера содержат ее не часто
    Яркий пример - X.org (сервер GUI в Linux и некоторых других *nix системах) содержит frontend часть - рисует на экране, получает пользовательский ввод (клавиатура, мышь, джойстик, etc.), а простейшие WindowManager (например awesome), являющиеся клиентами по отношению к X.org, frontend части не содержат

    Конкретно в web это идет с тех времен, когда вся логика была на сервере, а на клиенте были статичные html страницы, а js использовался только для красотулечек-финтифлюшечек

    P.S. Еще про web, а конкретно про его клиентскую часть, то есть браузер:
    Когда пишем html, css - это frontend (пусть "чистые" верстальщики порадуются)
    Когда пишем js код взаимодействующий с DOM, CSSOM, рисующий на Canvas - это frontend
    Когда в js обрабатываем пользовательские события (keyup, click, focus, touchstart, etc.) - это frontend
    Когда на js производим расчеты, проверки ввода, вешаем таймеры, работаем с локальными хранилищами, отправляем ajax запросы - это backend
    Когда обрабатываем такие события как load, message, DOMContentLoaded - это backend
    Код работающий в WebWorker'е - это backend
    Продолжать можно долго, суть думаю ясна
    Ответ написан
    Комментировать
  • Что нужно помнить в js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Бесполезно учить JS (как и любой другой ЯП или технологию), владение приходит только с практикой и опытом
    От того, что Вы прочитали что-то о незнакомой Вам технологии, Вы получите нулевой результат
    От того, что скопировали примеры - аналогично
    От того, что решили самостоятельные задачи - результат около 5%
    Начните делать небольшой проект и за информацией лезте в MDN, это будет гораздо эффективнее
    P.S. Кантор устарел, ИМХО
    Ответ написан
    Комментировать
  • Какие технологии нужны для полноценного SPA?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Если нужен серверный рендеринг (например для сео или ускорения первичной загрузки), то тут однозначно придется использовать node.js
    Для всего остального бэк может быть любым
    БД выбирается под данные и то, как Вы с ними будете работать
    Общение между фронтом и бэком лучше организовать через websocket
    Ответ написан
    Комментировать
  • Как правильно использовать изолированные модули в JS?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    То что модули изолированы и ничего не знают друг о друге - это абсолютно правильный подход избавляющий от многих проблем
    А для хранения общего состояния приложения посмотрите в сторону redux
    Ответ написан
    Комментировать
  • Какой Internet Explorer стоит учитывать при разработке?

    bingo347
    @bingo347 Куратор тега HTML
    Crazy on performance...
    IE официально deprecated и те кто его используют вряд ли принесут Вам прибыль, так что вполне можно ориентироваться на Edge у которого проблем значительно меньше, а так на IE10+ практически все лечится с помощью polyfill.io
    А вот на что из динозавров действительно стоит обратить внимание - Safari, я лично 8+ стараюсь поддерживать, который в свою очередь так же лечится polyfill.io
    Ответ написан
    1 комментарий
  • Как подключать к странице библиотеки из node_modules?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Попробуйте webpack
    Имхо, лучший инструмент для работы с модулями
    Ответ написан
    Комментировать