Задать вопрос
  • Не работает import в nodejs?

    @kulaeff
    Front-end developer
    Можно использовать флаг --experimental-modules. Вот так:

    node --experimental-modules my-app.mjs

    Дока
    Ответ написан
    Комментировать
  • Удаление неиспользуемого javascript кода?

    @kulaeff
    Front-end developer
    Нет, для js такого нет. Нужно понимать, что определить где используемый код, а где неиспользуемый довольно нетривиальная задача. К примеру, у вас есть метод некоего класса, упрощенно:

    function foo() {
      ...
    }


    Но вы вызываете ее так:
    obj[getMethodName()]()

    То есть getMethodName() возвращает вам строку foo и вы таким образом вызываете функцию foo(). И линтер и IDE скажут вам, что якобы функция foo() не используется, но, как мы видим, это не так. Тем не менее, это редкий сценарий и вряд ли вы когда-либо будете такое использовать. Что касается UglifyJS, то он удаляет только unreachable код. Например код, находящийся после return. Резюмируя, можно сказать, что связка линтер + минификатор на 99% дадут вам желаемый эффект.
    Ответ написан
    Комментировать
  • Как сделать проверку в jquery?

    @kulaeff
    Front-end developer
    Добавьте к второстепенным инпутам дополнительный класс и нет проблем.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы .animate() работало с текущего значения?

    @kulaeff
    Front-end developer
    Как вариант, можно добавить дополнительный параметр, например, initial вдобавок к percentage. Т.е. чтобы не от 0 до percentage, а от inital до percentage.

    Fiddle
    Ответ написан
  • Как исправить эту проблему с drag'n'drop?

    @kulaeff
    Front-end developer
    Такой курсор появляется, когда вы на странице что-то выделяете и начинаете перетаскивать. Курсор такой будет до тех пор, пока он не окажется над каким-то элементом, который может принять то, что вы перетаскиваете, тогда он меняется на стрелку с плюсиком. Возможно у вас такая хреновина. Dragstart то вы отменили, но это не мешает выделять текст вроде. Чтобы запретить выделение текста, есть CSS свойство user-select.
    Ответ написан
    Комментировать
  • Можно ли сделать запись экрана с помощью js?

    @kulaeff
    Front-end developer
    Если имеется ввиду запись внутри окна браузера, а не всего экрана, то можно. Сначала HTML загонятеся в SVG, затем SVG рендерится в canvas, а затем, с помощью, MediaStream Recording API, вы забираете поток с канваса в видеофайл. Только этот API не поддерживает IE. Но в принципе, можно с какой-то частотой сбрасывать данные с канваса на сервер как изображение. Таким образом у вас будет последовательность изображений. Только это все в теории.
    Ответ написан
    Комментировать
  • Как узнать что функция загрузилась?

    @kulaeff
    Front-end developer
    Если я правильно понял, то функция начинает работать, когда HTML-код еще не полностью загрузился и элемента #contact-form не существует. В комментариях Adamos отписался, что нужно делать. Ссылка для повышения скилла: jQuery.ready().
    Ответ написан
  • JS. Как отправить input по нажатию Enter?

    @kulaeff
    Front-end developer
    Во-первых, у кнопки id="send", а подписываетесь вы почему-то на событие keydown элемента sendtext. Такого элемента не существует, потому и не срабатывает обработчик. Во-вторых, вы и инлайном вешаете обработчик и через селектор. Так не нужно делать. Как минимум потому, что это усложняет поддержку кода. Надо делать так:

    <form method="post" action="send/to/server">
      <input id="textbox" name="sendtext" class="controls-elements" placeholder="Напишите сообщение и нажмите Enter" type="text"></input>
      <button id="send" class="controls-elements" type="submit">Отправить</button>
    </form>


    function buttonOtprav() {
      //...
    }
    
    $('#send').on('click', buttonOtprav)
    
    $('#send').on('keydown', function(e) {
      if (e.which === 13) {
        buttonOtprav()
      }
    })


    Однако, если это возможно, воспользуйтесь лучше ответом Николай Шабалин.

    PS: Не называйте функции и переменные транслитом, типа buttonOtprav, это как-то, имхо, не солидно. Назовите buttonSend.
    Ответ написан
    Комментировать
  • CSS. Как сделать адаптивность блока по вертикали?

    @kulaeff
    Front-end developer
    Это происходит потому, что блок #converse имеет высоту в процентах, а блок #controls - абсолютное позиционирование и прикреплен к низу, поэтому при увеличении #controls он начинает перекрывать #converse, а при уменьшении, наоборот, разрыв. Как идея - убрать у #controls абсолютное позиционирование и засунуть его в #chat-box, затем сверстать #chat-box с помощью флексов.
    Ответ написан
    3 комментария
  • Web-интерфейс к БД - что выбрать?

    @kulaeff
    Front-end developer
    Нет, это не будет странно, если у вас действительно простенький интерфейс. Если все же не хотите обновлять всю страницу, то тут море решений, но я бы выбрал связку jQuery + lodash + темплейты. Но можно и SPA фреймворк заюзать, если планируется усложнение в будущем. Например, React/Redux, Angular, Vue.
    Ответ написан
    Комментировать
  • Как f.toString здесь работает и расскажите, что происходит в этом коде?

    @kulaeff
    Front-end developer
    Рассмотрим первый пример:

    alert( sum(1)(2) ); // 3

    В функции sum число 1 запоминается в переменной currentSum, далее объявляется функция (внутри sum) f, в которой currentSum складывается с аргументом этой функции (сумма при этом сохраняется в тот же currentSum) и возвращает саму себя, т.е. получается как-бы рекурсия. Далее, в инстанс (не в прототип) функции f добавляется метод toString (https://javascript.ru/object/tostring), которая автоматом вызывается, когда нужно строковое представление. Ключевые понятия для изучения: замыкания, область видимости переменной. Не помешает еще почитать про прототипы и наследование.
    Ответ написан
    Комментировать
  • Как правильно комментировать код?

    @kulaeff
    Front-end developer
    А что такое *user info, *user data? В фигурных скобках нужно указывать тип переменной, например, string, number, object или какой-то свой кастомный тип, заданный с помощью `@typedef`. И обычно не пишут "Function for ...", и так понятно, что это функция, достаточно написать, например, Gets a random text message, Creates user message. Или то же самое, но в инфинитиве - Get, Create и т.д.
    Ответ написан
    3 комментария
  • Как регуляркой вычислить последовательности из одинаковых символов?

    @kulaeff
    Front-end developer
    Для повторяющихся символов:
    ([A-Za-z])\1+

    Для чередующихся:
    ([A-Za-z])([A-Za-z])\1+\2+

    Думаю, логика понятна. Можно набросать функцию, у которой на входе шаблон и строка, а на выходе - true/false.
    Ответ написан
    7 комментариев
  • Как сделать рефакторинг кода?

    @kulaeff
    Front-end developer
    Такое за бесплатно вам вряд ли кто-то сделает, но пару советов могу дать. Коль вы используете for совместно с array.push, то лучше заменить это все на map(). Типа:

    let
        test = await Test.test(ctx.params.id), // получаем все вопросы по данной теме
        answerArr = test.map(item => await Test.answear(item.id));


    А еще используйте eslint.
    Ответ написан
  • Как скрыть скроллбар и оставить возможность скролла (CSS/HTML)?

    @kulaeff
    Front-end developer
    Строго говоря, без использования js никак. Однако можно просто увеличить ширину скроллируемого элемента на ширину его скроллбара таким образом, чтобы он вышел за пределы вьюпорта или родительского блока, у которого overflow: hidden. Но, поскольку ширина скроллбара в браузерах разная, то и тут лучше использовать js.
    Ответ написан
  • Нормальный ли codestyle?

    @kulaeff
    Front-end developer
    Не знаю, что там с кодом на 70 строк, но этот кусок вполне нормальный. Разве что пустые строки до и после if'ов поставить и у стрелочной функции убрать скобки, если параметр один. И вообще юзать eslint.
    Ответ написан
    Комментировать
  • Адаптивка "ходит" влево вправо, знакомо?

    @kulaeff
    Front-end developer
    Проверьте элемент с классом .container-promo, похоже что именно он, а точнее его содержимое, раздувает все остальное.
    Ответ написан
  • Как установить зеркальное отражение на весь div?

    @kulaeff
    Front-end developer
    Вот вам простая заготовка https://jsfiddle.net/h5da4uqc/1/. По желанию можно добавить блюр и прочие штучки.
    Ответ написан
    Комментировать
  • Насколько детально необходимо группировать идентичные свойства?

    @kulaeff
    Front-end developer
    Зачем писать для всех селекторов какое-то правило, если его можно написать один раз? Разумеется первый вариант лучше. Размещать можно где угодно, зависит от ваших целей и задач, но обычно такие длинные записи пишут в начале или вообще в отдельном файле, типа normalize.css.
    Ответ написан
  • Как безболезненно подключать библиотеки на фронтенде?

    @kulaeff
    Front-end developer
    Bower помер. Используйте npm или yarn. Также крайне рекомендую освоить webpack. Он как раз и позволяет указать только единственный файл - точку входа, все остальное он подтянет автоматически и создаст два минифицированных файла - в одном скрипты, в другом стили. Само собой, можно настроить так, чтобы сторонние либы выносились в отдельный файл, а собственный код - в другой файл. Например, при использовании webpack, можно подключить jquery так:

    import $ from 'jquery'

    Можно сделать еще круче, чтобы не импортить jquery в каждом файле, можно заюзать вебпаковский плагин ProvidePlugin:
    new webpack.ProvidePlugin({
      $: 'jquery',
    })

    После чего jquery будет доступен в любом js-файле.
    Ответ написан
    3 комментария