• Как позиционируют блоки сегодня?

    @kulaeff
    Front-end developer
    Добавлю, что float - зло. А еще есть display: table и display: table-cell.
    Ответ написан
    Комментировать
  • Как и где можно научиться делать такие сайты?

    @kulaeff
    Front-end developer
    На том же, на чем пишутся и обычные сайты, но с более активным использованием технологий для анимаций. Ключевые слова: canvas, css свойства (animate, transform, transition), web animation api, threejs (webgl), gsap (tweenlite, tweenmax), svg animation.
    Ответ написан
    1 комментарий
  • Почему не получается отсортировать элементы методом полного перебора?

    @kulaeff
    Front-end developer
    Потому, что ваш код, в случае если условие if срабатывает, просто меняет элементы местами, но не сортирует.
    К тому же нет нужды делать вложенный цикл:
    https://codepen.io/anon/pen/zwGZzO
    Ответ написан
    Комментировать
  • Как организовать разработку виджетов для самописного сайта?

    @kulaeff
    Front-end developer
    Суть:
    Хранить в БД инфу о том, какие виджеты включены у юзера, затем на странице, на которой нужно выводить эти виджеты делаем запрос в БД (аякс-запросом), получаем инфу, в цикле смотрим что это за виджет и инициализируем его.

    Пример:
    Предположим, имеется страница mysite.ru/widgets. Также имеется три виджета, код которых находится в файлах widget.simple.js, widget.chart.js и widget.table.js. Также примем по умолчанию, что ты используешь jQuery.
    На этой странице делаем запрос на сервер (например, с помощью $.get), сервер достает из БД инфу о том, какие у юзера включены виджеты и отдает нам в таком виде:

    [{
      type: 'simple',
      data: 100
    }, {
      type: 'table',
      data: []
    }, {
      type: 'chart',
      data: []
    }]


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

    $.get(url).done(function(widgets) {
        widgets.forEach(function(widget) {
            switch (widget.type) {
                case 'simple':
                    new SimpleWidget(widget.data);
                    break;
                case 'chart':
                    new ChartWidget(widget.data);
                    break;
                case 'table':
                    new TableWidget(widget.data);
                    break;
            }
        });
    });


    где url - это страница, которая будет отдавать нам json. Классы SimpleWidget, ChartWidget и TableWidget - сами виджеты. Конечно, тут все упрощено, ведь помимо данных для виджета ему еще нужно передавать инфу о том, где именно нужно отобразить виджет (например, в виде селектора, '.simple-widget-container') и прочую нужную информацию. Логика виджетов (а точнее паттерн, который они реализуют) тут не принципиальна, это выходит за рамки вопроса.
    Ответ написан
    3 комментария
  • Как выполнить запрос к странице?

    @kulaeff
    Front-end developer
    А нафига такое вообще может быть нужно?
    Ответ написан
  • Многоязычность сайта на javascript?

    @kulaeff
    Front-end developer
    Ну, гугловский робот вроде бы научился более менее сносно индексить сайты, рисуемые на клиенте. Есть даже инструмент для проверки, проиндексировался сайт или нет. Называется Fetch as Google.
    Ответ написан
    Комментировать
  • Как генерировать уникальный ключ для JWT, если его не рекомендуется хранить в базе?

    @kulaeff
    Front-end developer
    Хм, JWT и так придуман для безопасности. И что значит для каждого токена генерировать уникальный ключ? Секретный ключ для того и нужен, чтобы подписывать токены. Секретный ключ знает только сервер. Сервер сгенерил и подписал токен, отдал на фронт, далее фронт сделал запрос, отослав вместе с запросом токен, а сервер, зная секретный ключ, декодирует этот токен и идентифицирует пользователя, не обращаясь в БД.
    Ответ написан
    4 комментария
  • Что учить Angular или React новичку?

    @kulaeff
    Front-end developer
    Не спеши сесть сразу на фреймворки, ковбой. Для начала твой базовый уровень JS (ES5 и ES6) нужно подтянуть до хорошего/отличного. Нужно хорошо разобраться в функциях, прототипах, паттернах и т.д. Хорошее знание всего этого - основа любого фронтендера и любого фреймворка. Знанием jQuery уже давно никого не удивишь. Касательно фреймворков, я бы посоветовал начать с React/Redux, ибо в данный момент это тренд. Но в уме держать Angular2. И еще надо забыть про gulp/grunt, webpack - наше все.

    ЗЫ: Когда я хочу изучить какой-нить фреймворк, я просто открываю офф. мануал/туториал и пилю какое-нибудь приложение с нуля. С нуля - это значит с нуля. То бишь, открываю свою любимую IDE, запускаю командную строку, пишу npm init, устанавливаю необходимые либы, делаю сборку на вебпаке и начинаю кодить.
    Ответ написан
    9 комментариев
  • При наборе текста сразу отображался в canvas?

    @kulaeff
    Front-end developer
    Во-первых, у тебя ошибки в коде, нажал бы F12 что-ли и посмотрел в консоль, прежде чем писать вопрос. Во-вторых, вместо события change нужно юзать input

    demo
    Ответ написан
    2 комментария