Задать вопрос
Ответы пользователя по тегу JavaScript
  • Где найти исходники стандартной библиотеки JavaScript?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Ну есть же поиск — там всё легко находится. Да, размазано по куче файлов — ну а иначе никак. Вот например: https://github.com/v8/v8/tree/main/src/builtins
    Ответ написан
    1 комментарий
  • На сколько практично разделять логику загрузки данных?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    "Правильность" зависит от точки зрения, требований, ограничений и прочих особенностей решения. Ваш код решает вашу проблему? Удовлетворяет вашим требованиям, предъявляемым к нему? Значит всё отлично. Если нет - то тут уже надо думать и искать более правильное решение по конкретным критериям конкретного проекта.
    Ответ написан
    Комментировать
  • Как подключить библиотеку?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    А вы вообще хотя бы описание видели этой библиотеки, не? Ну может хотя бы название видели, не? Оно вас не смутило? Да и в описании ведь всё ясно написано:

    A light-weight module that brings Fetch API to Node.js.

    https://www.npmjs.com/package/node-fetch#installation
    Попробуйте следовать официальной инструкции и запускать код в контексте ноды, а не браузера.
    Ответ написан
    Комментировать
  • Как выкинуть неиспользуемые функции из библиотек?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    То, что вам нужно называется "Встряхивание дерева (Tree-shaking)". В популярных сборщиках есть либо из коробки либо в плагинах. Например в rollupjs и webpack эта фича есть из коробки:
    Ответ написан
    Комментировать
  • Как реализовать библиотеку классов на JavaScript?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Правильнее так:

    Type.js
    class Type
    {
        isArray() {}
    }
    
    export default Type

    Dialog.js
    class Dialog 
    {
        show() {}
    }
    
    export default Dialog

    CRM.js
    import Type from './Type.js'
    import Dialog from './Dialog.js'
    
    export { Type, Dialog }

    И далее исходный код скармливается сборщикам типа babel, gulp, rollup и прочим. И вот то, что вы привели - результат работы с кодом этих сборщиков для совместимости со старыми браузерами. Для ноды само собой сборщики не используются - там они не нужны. Простой пример реализации библиотеки для ноды/браузера с использованием сборщиков rollup и babel: @voidvolker/enum.
    Ответ написан
    1 комментарий
  • Переменная, созданная в разных местах работает в addEventListener по-разному, почему?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Ну, собственно тут всё достаточно очевидно, если присмотреться - ищется то, чего ещё нет:
    const deleteMovieBtns = document.querySelectorAll('.delete')
    ...
    const updateList = (films, parent) => {
            films.forEach((film, i) => {
                ...
                parent.innerHTML += `
                <li class="promo__interactive-item">${i + 1} ${film}
                    <div class="delete"></div>
                </li>
            `;
            })
        }
        updateList(movieDB.movies, promoMovieList);
    Ответ написан
    Комментировать
  • Как добавить ограничение на перемещение с transform translate?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Используйте Math.min() и Math.max() для ограничений координат.
    Ответ написан
  • Как сделать, чтобы на сайте картинка при нажатии открывалась в большом размере а при повторном щелчке возвращалась к исходнику? В HTML?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Добавить флаг "открыта/закрыта" и при клике закрывать/открывать в зависимости от флага.
    Ответ написан
    Комментировать
  • Как оптимизировать загрузку и парсинг больших JS файлов со стороны браузера/клиента?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    1. Установить NodeJS
    2. Установить MongoDB
    3. Установить Mongoose или любую другую ORM
    4. Написать простейшие контроллёры для вашего API
    5. Запустить сервис на VPS и использовать для ваших задач
    Ответ написан
    Комментировать
  • Как правильнее переписать id's в формах?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Id должен быть уникальным и единственным во всём документе: https://htmlbook.ru/html/attr/id
    Поэтому, если нужны идентификаторы элементам - то следует каждому элементу назначить свой уникальный. А вот имена элементов формы могут повторяться. Элементы в форме в JS скрипте можно найти по любому атрибуту. Обычно используются имена или классы. Какой именно использовать цикл в коде значения не имеет.
    Ответ написан
    Комментировать
  • Как работать с минифицированным JS?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Никак. С кодом после минификации не надо никак работать. Минифицированный код предназначен для доставки его по сети максимально быстро на клиент. Для изменения кода вам следует вносить изменения в исходный код и уже только потом его минифицировать, а не наоборот. Если исходного кода нет - то пропускаете через любой деобфускатор и вручную восстанавливаете исходный код. Ну или пишете сами с нуля то же самое.
    Ответ написан
    2 комментария
  • Действительно ли скрипт на этом сайте не работает?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Да, проблема в скрипте по этой ссылке:
    https://tetherscript.onfastspring.com/popup-controlmynikon/builder

    В России он недоступен. В других регионах он доступен и кнопки на сайте работают.

    Но при включенном VPN тоже никаких окон не открывается.

    Возможно ваш VPN тоже заблокирован либо ещё какой косяк. Либо пробуйте полностью перезагрузить страницу/браузер либо ищите другой впн.
    Ответ написан
    Комментировать
  • Какой посоветуете учебник/книгу JavaScript?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Ответ написан
    Комментировать
  • Как устранить ошибку Cannot set properties of null (setting 'innerHTML') в JS&?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    RTFM: Document -> document.getElementById()
    ссылка на объект типа Element соответствующий указанному ID или null, если элемент с указанным ID не найден в документе.
    Ответ написан
    Комментировать
  • Как одновременно использовать npm_module на macOS и windows?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    В общем случае - никак. Нельзя использовать идентичные бинарные и платформенно-зависмые модули на разных платформах. Во время установки ставится версия модуля для текущей платформы. Версии для других платформ не устанавливаются. Некоторые бинарные модули даже собираются на месте с использованием доступных компиляторов. Так же есть модули, которые используют системные API вызовы и тоже устанавливаются версии в соответствии с системой и платформой. Конечно, многие модули написаны на чистом JS и не зависят от платформы - вот такие модули можно устанавливать на одной платформе и переносить на другую. Но, у них могут быть зависимости, которые зависят от платформы. Поэтому у вас только один путь - виртуализация.
    1. Установить VirtualBox или UtmApp
    2. Установить х86-64 винду в виде виртуальной машины
    3. Устанавливать модули внутри винды и результат переносить на целевую машину (есть вероятность, что что-то будет не работать из-за симлинков или устанавливаемых системных зависимостей - тут только по ситуации вручную всё ставить и настраивать)
    Ответ написан
    1 комментарий
  • Почему функции по смещению свойств объектов работают только с объектами, у которых свойства состоят из букв?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Потому что в стандарте JS порядок свойств в объекте не гарантирован. Т.е., там может быть абсолютно любой порядок. Так что ваша функция бессмысленна. Если вам нужна сортировка - используйте массивы.
    Ответ написан
    4 комментария
  • Есть ли какой-нибудь заменитель pattern matching в Javascript/ECMAScript?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Если хочется больше синтаксического сахара и читабельности - посмотрите в сторону CoffeeScript.
    Ответ написан
    2 комментария
  • Как сделать "прилегание" элементов к друг другу?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Медведь? Измеряется длина пальцев медведя в пикселях и ему устанавливается смещение относительно целевого элемента на данное число пикселей. Либо в минус от ближайшей границы либо в плюс от дальней - тут как удобнее и зависит от других особенностей вёрстки. Ну или ещё какой вариант можно придумать. Плюс в данном случае изображение медведя с прозрачностью и на один пиксель с полупрозрачностью заходит на целевую картинку.
    Ответ написан
    2 комментария
  • Как нарисовать интерактивную схему?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Каким методом наиболее правильно сделать подобное? Интересует именно идея, реализовать сам смогу.

    Правильнее по каким именно критериям? Если же смотреть на проблему глобально и в целом с точки зрения эффективности разработки, то проще всего сделать следующее:
    1. В любом векторном редакторе сделать рисунок или схему зала (да хоть в фигме или в том же диаграмс.нет)
    2. Выдать креслам номера/ID/классы
    3. Экспортировать в SVG
    4. Добавить на странцу в виде стандартного SVG элемента
    5. Добавить стили для кресел "свободно/занято/выбрано/выбирается" и т.п.
    6. На странице в JS повесить простые обработчики на события креслам
    7. Profit

    Минимум усилий - максимум результата. Canvas тут не нужен. Только если у вас есть под рукой либа 2D/3D графики, которую вы отлично знаете и вам на ней сделать то же самое будет как два байте переслать - то кто же против-то? Тогда да, можно использовать Canvas и прочее.
    Ответ написан
    4 комментария
  • Как отображать только один из одинаковых div с id="x" предыдущий развернутый сворачивать?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    https://htmlbook.ru/html/attr/id
    Задает стилевой идентификатор — уникальное имя элемента, которое используется для изменения его стиля и обращения к нему через скрипты. Идентификатор в коде документа должен быть в единственном экземпляре, иными словами, встречаться только один раз.

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