Задать вопрос
  • Как правильно собрать библиотеку NPM из ES6 классов?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Может быть там вообще не использовать ни Вебпак ни Бабель

    Да, это современное решение для модулей.)
    В package.json для точку входа указать не main, а module и дело с концом.
    Хотя вебпак много чего полезного ещё может делать, а вот бабель для библиотеки-модуля - лишнее.
    Но а родительский проект тогда поймет, что этот импорт нужно будет дополнительно транспилировать? В нем то бабель используется...

    Как настроишь бабель-лоадер в проекте, так и будет транспилировать. По умолчанию он транспилирует всё, и надо специально указывать exclude, чтоб не лез в node_modules.
    Если пользуетесь какими-то cli - для этого есть специальные настройки(transpileDependencies).
    Ответ написан
    Комментировать
  • Почему куки приходят с сервера, но не сохраняются в браузере?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    1. У тебя вообще запрос не проходит, cors не полностью настроен на сервере.
    2. Даже если будет настроен - кука поставится для сервера, а не для клиента, т.к. адреса разные.
    3. Если в проде домен бэка и фронта будет един, то просто используй proxy встроенный в devServer.
    Ответ написан
    Комментировать
  • Как правильно кодировать URl для сохранения файла в window-1251?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Сам по себе браузер не предоставляет средств для кодирования в какую-либо кодировку кроме utf-8 (хотя под капотом всё это, само собой, есть и в определённый момент такой функционал мог бы появиться, но был выпилен из стандарта, чтоб этим нацистам икалось).
    Тебе надо найти любую функцию "utf-8 to win1251" и кодировать текст вручную перед тем как класть в строку.
    Ответ написан
    Комментировать
  • Как в JS переписать метод так чтоб он вызывался с еще одним аргументом по дефолту?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    1. Ты уверен что хочешь замонкипатчить весь класс и всех потомков, а не конкретный его инстанс?
    2. У тебя ряд никак не связанных с ts ошибок, эта строчка: this.showParams.apply(this, ...args); содержит две ошибки:
    а) вызывая this.showParams внутри this.showParams ты поучаешь бесконечную рекурсию, надо сохранить старый this.showParams в отдельную переменную и вызывать через неё;
    б.) Function.prototype.apply принимает вторым аргументом массив, а ты его тут зазря разбираешь.

    Если на 1 вопрос ответ "нет", то как-то так должно быть:
    class ExampleClass {
      showParams(...args) {
        console.log('I have to be calleb');
        console.log(...args);
      }
    }
    
    const exampleInstance = new ExampleClass();
    
    exampleInstance.showParams('one', 'Two', 'Three', 456);
    
    exampleInstance.showParams = (showParamsOld => function(...args){
      args.push('Default Argument');
      return showParamsOld.apply(this, args); 
    })(exampleInstance.showParams);
    
    exampleInstance.showParams('one', 'Two', 'Three', 456);
    Если ответ "да", то поправь сам.

    Только помни, что монки-патчинг это плохо, и к нему стоит прибегать только в крайних случаях.
    Ответ написан
    3 комментария
  • TypeScript. Как собрать объект из массива строк?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    На самом деле чтоб была полноценная типизация надо как-то так:
    getStyles<T extends keyof CSSStyleDeclaration>(styles: readonly T[]) {
      return styles.reduce((res, style) => {
        res[style] = this.$nativeElement.style[style];
        return res;
      }, {} as Pick<CSSStyleDeclaration, T>);
    }

    Песочница.

    Разница с решением от Дмитрий в том, что тип получившегося объекта будет содержать только полученные ключи, а не все возможные в CSSStyleDeclaration.
    Ответ написан
    2 комментария
  • Как добавить массив в data атрибут во vue js шаблоне?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    JSON.stringify(item.SIZES)
    Только так делать не надо. Вам не нужен массив в data. Всё что вы делаете с этим массивом - вы должны делать прямо с ним в пределах vue.
    Ответ написан
    Комментировать
  • Почему разная структура проекта при разной установке Vue и библиотек?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    В node_modules лежат собранные готовые пакеты, вам туда лезть не надо.

    Структура проекта, создаваемая vue-cli соответствует (очевидно) выбранным опциям.
    Но эта структура - не что-то сакральное единственно верное. Всё что создал vue-cli вы можете создать вручную. Или создать совершенно другую структуру. Важна лишь логика в коде, папочки не важны.

    Так что устанавливая какие-то пакеты вручную вы делаете именно это: устанавливаете пакеты. Т.е. (утрируя) просто кладёте их в node_modules и прописываете их наличие в package.json.
    Это никак не влияет на ваш код. Если вы хотите их использовать в коде - вы должны использовать их в коде. Создавать отдельные файлы и папки, или просто подключать в уже имеющихся - ваше дело.
    vue-cli делает это за вас, при выборе опций, но это особенность vue-cli, а не неотъемлемое свойство npm пакетов.
    Ответ написан
  • Стоит ли изучать pug?

    Aetae
    @Aetae
    Тлен
    Там нечего толком изучать. Всё интуитивно понятно, разок доку прочитать достаточно.
    А вот стоит ли использовать при наличии современных фреймворков(или совместно с ними) - это уже отдельный вопрос.
    Ответ написан
    1 комментарий
  • Как динамически менять ширину и высоту контейнера в зависимости от контента с сохранением пропорций?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    К сожалению css\html так устроен, что только одно измерение динамически может зависеть от другого, так что это невозможно без скриптов.
    Ответ написан
    Комментировать
  • Почему он так делает?

    Aetae
    @Aetae
    Тлен
    Если про формат переносов:
    Settings - Editor - Code Style - HTML - Other > Aligin attributes

    Если про то что автоматически переносит, то либо глобально увеличить количество символов в строке
    Settings - Editor - Code Style > Hard wrap at: <число символов>
    либо запретить переносить конкретно html атрибуты:
    Settings - Editor - Code Style - HTML - Other > Wrap attributes: Do not wrap


    В любом случае не рекомендовал бы менять никаких из этих настроек, так как они действительно способствуют удобству чтения и написания кода.
    Ответ написан
    1 комментарий
  • Подменить "visible" на странице, возможно?

    Aetae
    @Aetae
    Тлен
    Какие проблемы?
    Object.defineProperty(document, 'visibilityState', {
      value: 'visible'
    })
    Что-то конечно может сломаться на странице, но вас же это не волнует?)
    Ответ написан
    1 комментарий
  • Как правильно трансформировать время?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Z на конце - это отсутствие часового пояса, что трактуется по стандарту UTC - всемирному координированному времени.
    По умолчанию же new Date() задаёт дату в часовом поясе системы. (у вас +3 - скорее всего MSK).
    Если нужно время именно в UTC - поменяйте:
    var newDate = new Date(yyyy, mm, dd, h, m, s);
    на:
    var newDate = new Date(Date.UTC(yyyy, mm, dd, h, m, s));

    Но скорее всего это вам не нужно.
    Ответ написан
    Комментировать
  • Почему код работает неверно?

    Aetae
    @Aetae
    Тлен
    Ну потому что результат парсинга строки - строка. Приводи к числу явно.
    И таки да, срань. Уважай свой код, чувак, даже если пишешь заведомое говно.
    Ответ написан
  • Как разрабатывать на vue cli + бэкенд на другом сервере?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Тот что запускается при serve приспособлен для разработки: там есть hot reload и всякое прочее.
    Вы можете фигачить build --watch, и использовать ваш прод сервер сразу, но это медленно и неудобно.
    Ответ написан
    Комментировать
  • Как задать динамический маршрут в дочернем элементе?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Убери ведущую / из всех children.
    Ответ написан
    1 комментарий
  • Почему Electronjs не видит экспорты после начала работы?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Пальцем в небо: попробуй в tsconfig module: esnext.
    Ответ написан
    Комментировать
  • Как работает конструкция type t = {...}[keyof T]?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Обычное обращение по ключу, как в javascript, что тут непонятного?
    const foo = {
      bar: 1
    };
    foo['bar'] // 1
    const baz = {
      qux: 2
    }['qux']; // 2
    тайпскрит в работе с типами тут ничем не отличается:
    type user = {
        id: number,
        name: string,
    };
    type id = user['id']; // number
    type userKeys = keyof user; // 'id' | 'name'
    type userTypes = user[keyof user]; // number | string
    тип never же просто не учитывается:
    number | string | never - то же самое что number | string.
    Ответ написан
    1 комментарий
  • Отмена подключения js/Замена Скрипта можно ли?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Нет не возможно. Потому что загруженный файл не "работает", он уже "отработал". Уберёте его вы или нет, разницы после этого никакой. Можно только бороться с последствиями сделанного кодом.
    Варианты по-лучше есть всегда, вопрос лишь в том что на самом деле вам нужно.
    Ответ написан
    Комментировать
  • Pixel perfect VS Типографика?

    Aetae
    @Aetae
    Тлен
    Вэб-дизайнер должен понимать как типографика работает в вэбе. Есди он что-то там нашаманил левого в своём фотошопе - это его косяк, пусть переделывает. Вот и всё, собственно.
    Это если разница велика. Если разница полупиксельная - то это нормально, шрифты по разному рендерятся как в разных браузерах, так и в разных OS.
    Ответ написан
    Комментировать
  • В чём прикол использования Map (и прочих подобных) в JS против for?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Всё должно быть к месту, очевидно.

    Если нужна остановка цикла - можно использовать some, если нужен именно map с остановкой цикла - тут следует использовать for либо какую-нить либу, которая это умеет.

    Если эти некие "они" с оверхедом используют обычный map там где должен быть прерван цикл или там где не нужно получения нового массива - они говнокодеры.
    Если вы используете классический for там где идеально справился бы map - вы старпёр, бессмысленно раздувающий и усложняющий код.

    А производительность надо оптимизировать там и только там, где надо оптимизировать производительность.
    Ответ написан
    3 комментария