• Как убрать все события со всех элементов?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Костыльно, но...
    document.documentElement.innerHTML = document.documentElement.innerHTML;
    Ответ написан
    Комментировать
  • Как убрать класс у всех siblings без JQuery?

    miraage
    @miraage
    Старый прогер
    const onClick = (event) => {
      const elem = event.target;
      const siblings = Array.from(elem.parentNode.querySelectorAll(`.${elem.className}`));
    
      siblings.forEach((sibling) => {
        const isCurrent = (sibling === elem);
    
        sibling.classList.toggle('active', isCurrent);
      });
    };
    Ответ написан
    Комментировать
  • Как сделать функцию неперевызывающейся?

    Я, конечно, не гуру, но, можно сделать ключ.
    var x = 0,
    	key = true;
    function plus() {
    	if( key ) {
    		key = false;
    	}
    	
    	// do any
    	key = true;
    }
    Ответ написан
    Комментировать
  • Как правильно реализовать API?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Шаг 1, изучаем https://jwt.io/ - на настоящий момент стандарт для аутентификации.
    Шаг 2. Каждое устройство должно иметь уникальный токен. Пользователь должен иметь возможность деавторизовать любое устройство. При смене пароля все токены автоматически стираются.

    Организация хранения токена должна выглядеть примерно так:
    tokens
    - user_id
    - device_id  - при авторизации через браузер можно подставить md5(User-Agent)
    - device_name  - человеко-понятное имя девайса или название браузера
    - token
    - last_used
    - expires_at

    Про API, вместо передачи дополнительного параметра в запросе очень часто используют HTTP-заголовки.
    Наличие множества токенов практически ничем не грозит, разве что небольшим увеличением размера данных.
    Сброс токенов нужен по времени, по смене пароля, значительной смене географии (другая страна и т.п.), при нажатии кнопки Выход и по желанию пользователя (опции Выйти со всех устройств).
    Ответ написан
    12 комментариев
  • ES6 generators или promises?

    @VitalyT
    Если вы разрабатываете для PostgreSQL, то вы можете воcпользоваться pg-promise, в которой промисы и генераторы работают вместе превосходно, и тогда вам не нужно делать какой-либо жесткий выбор, а можно свободно комбинировать:

    db.task(function*(t) {
            let firstResult = yield t.query('SELECT...');
            let secondResult = yield t.query('SELECT...');
            // etc...
    
            return {firstResult, secondResult};
        })
        .then(function (data) {
            // data.firstResult, data.secondResult;
        });

    так-же см.: SELECT ⇒ INSERT
    Ответ написан
    2 комментария
  • Почему angularjs уделяют так много внимания?

    @bromzh
    Drugs-driven development
    На момент его выхода он обладал рядом уникальных вещей и был (если я не ошибаюсь) почти самым первым полноценным фреймворком для создания сложных фронтенд-приложений. Это не просто набор библиотек, а логически связанная система, которая может решать свои задачи очень хорошо.
    Некоторые идеи были очень удачны (внедрение зависимостей, система модулей и их асинхронная загрузка, отказ от своего синтаксиса шаблонов в пользу обычного HTML со своими тегами и атрибутами, двунаправленная связь данных) некоторые оказались не такими хорошими (двунаправленная связь данных, магия $scope в контроллерах, отсутствие документации и др.). Но фреймворк развивается и с каждой версией становится всё удобнее.
    Но JS (вернее, ECMAScript) тоже развивается, и некоторые вещи из первого ангуляра стали дублироваться в es6. Поэтому теперь авторы взяли и сделали заново вторую версию, в которой учли все ошибки.
    Но даже в сейчас первая версия очень популярна, хотя бы по причине уже сложившейся огромной инфраструктуры.
    Ещё одной из причин популярности является тот факт, что реальных аналогов у него очень мало, практически нет. У других фреймворков/библиотек есть свои минусы, причём, на мой взгляд, они перекрывают их плюсы.
    Ответ написан
    3 комментария
  • Cервис онлайн для рисования блок-схем?

    Absent
    @Absent
    draw.io — бесплатный и интегрируется с Google Drive (создает гугл-доки, которые потом открываются в этом сервисе)
    Ответ написан
    6 комментариев