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

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Есть такая фигня Number.MAX_SAFE_INTEGER - максимально безопасное число. Остальное будет представлено "приблизительно".
    Ты можешь использовать BigInt, если тебе нужно работать именно с такими большими числами. Но скорее всего этого не нужно и ты что-то делаешь не так.
    Ответ написан
  • Yarn audit fix - как обезопасить сайт?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Не изменил версию, потому что tar "6.0.2", а не tar "^6.0.2".
    А в целом - забейте болт.
    1. Большинство уязвимостей находятся в либах, использующихся вами локально для сборки, а сами себя вы ломать будете.
    2. Vue исполняется на клиенте и всё эти уязвимости в любом случае не имеют никакого значения, даже если окажутся в рабочем коде.

    Внимательней к этому стоит присмотреться только когда начнёте писать сервер на node.js.

    P.S. Если очень хочется - можно воспользоваться yarn resolutions и захардпатчить версии зависимостей. Но никто тогда вам не гарантирует корректную работу.
    Ответ написан
    Комментировать
  • Импорт child_process исчезает?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Всё, само собой, работает.

    Вот вам минимальный конфиг:
    package.json:
    {
      "name": "ts",
      "version": "1.0.0",
      "type": "module",
      "main": "index.js",
      "module": "index.js",
      "license": "MIT",
      "dependencies": {
        "typescript": "^4.4.4"
      },
      "devDependencies": {
        "@types/node": "^16.11.7"
      }
    }


    tsconfig.json:
    {
      "compilerOptions": {
        "target": "esnext",
        "module": "esnext",
        "esModuleInterop": true,
        "strict": true
      }
    }


    index.ts & результирующий index.js:
    import cp from "child_process";
    console.log(cp);


    Ищите отличия.
    Ответ написан
    Комментировать
  • Из-за чего вылезает ошибка при изменении значения в json?

    Aetae
    @Aetae
    Тлен
    Я сейчас покажу абсолютно секретный кусок кода, вы такой нигде больше не найдёте. Это чудо решает 99% проблем!
    spoiler
    $data  = file_get_contents('values.json');
    $data = json_decode($data , true); 
    var_dump($data);
    Ответ написан
  • Как извлечь строку из HTML через JavaScript?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    У indexOf есть второй параметр.
    spoiler
    function findInString(OUTPUT_HTML, before, after) {
      let start = OUTPUT_HTML.indexOf(before);
      if (start === -1) 
        return '';
      start += before.length;
      
      const end = OUTPUT_HTML.indexOf(',', start);
      if (end === -1) 
        return '';
      return OUTPUT_HTML.slice(start, end);
    }
    
    const productCost = +findInString(OUTPUT_HTML, '"productCost":', ',');
    Ответ написан
    Комментировать
  • Какая роль ...props в HOC в данном коде?

    Aetae
    @Aetae
    Тлен
    const PeoplePageWithErrorApi = WithErrorApi(PeoplePage)
    
    <PeoplePageWithErrorApi foo="bar"> 
    // props = {foo: bar} 
    // внутри PeoplePage props {
    //  foo: 'bar', 
    //  setErrorApi: setErrorApi из WithErrorApi, 
    //  setLoader: setLoader из WithErrorApi, 
    //  isLoading: isLoading из WithErrorApi
    //}

    Очевидно же, нет?
    Ответ написан
    4 комментария
  • Как сделать плавное увеличение/уменьшение высоты в зависимости от отображения контента vue?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Элементарно, вот те на коленке накидал:


    Только он не учитывает кучу всяких edge-case, самое очевидное: изменения ширины в процессе работы - следует добавить ещё обёртку и ResizeObserver.
    Но и не очевидных там много, потому для таких вещей обычно используют готовые либы.)
    Ответ написан
    3 комментария
  • Не запускается виндовс если частота ОЗУ выше чем 2666 МГц, почему?

    Aetae
    @Aetae
    Тлен
    Процессор тоже важен, причём чем больше памяти/слотов тем на меньшей частоте он может её тянуть.

    Найди тут свой проц, там секцию memory controller и посмотри тянет ли твой конфиг.
    Ответ написан
    Комментировать
  • Как заставить VUE грузить динамические компоненты из CDN?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Vue использует webpack, а webpack использует для запросов конкретные пути, которые ты указываешь при билде.

    Решение в лоб:
    особый билд для cdn, где параметр publicPatch указывает на соответствующий сайт.
    Решение хитрое: webpack позволяет менять публичный путь динамически, присваивая его переменной __webpack_public_path__. Остаётся только при старте приложения получить путь к скрипту, например из document.currentScript, выделить из него нужный путь и присвоить его.
    Ответ написан
    2 комментария
  • Что означает данное выражение?

    Aetae
    @Aetae
    Тлен
    0 и более подряд символов л, <пробел> или ".

    А вообще: изучите регэкспы, на таком примитивном уровне - это совсем не сложно.
    Штука незаменимая для работы с любым текстом.
    Ответ написан
    Комментировать
  • Как пропустить запрос на сервер без обработки vue-router?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Если вопрос про прод: настроить сервер, чтоб сначала отдавал /api откуда надо, а только потом заворачивал все запросы на index.html.

    Если вопрос про разработку: в vue-cli используется webpack dev server, и там есть proxy, через который вы можете направить запросы с /api на свои боевые или локальные сервера.
    Ответ написан
    Комментировать
  • Почему не происходит перерендеринг страницы при изменения значения объекта?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Ну ёпрст.
    const dateTimeLocal = reactive({
      day: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
      hour: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
      minute: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
      second: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
    });


    P.S. Это Vue 2 не мог отслеживать добавление новых ключей, Vue 3 же может всё, если не забыть его об этом попросить.
    Ответ написан
  • Как принудительно вызвать computed свойство в компоненте vue 2?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Во-первых: тебе намекнули уже в комментах:
    computed свойства в vue пересчитываются когда меняются их реактивные зависимости, которые участвовали в предыдущих вычислениях

    Т.е. на пальцах: ты обратился в computed к this.value - теперь он смотрит за изменениями this.value. Твоё же computed ни к чему не обращается, оно просто возвращает функцию, её содержимое и вызовы к computed не относятся.

    Для понимания:
    Вот этот твой код:
    computed: {
      validatedClass() {
        return (input) => {
          return {
            'uk-form-success': this.wasValidated && !this.errors[input],
            'uk-form-danger': this.wasValidated && this.errors[input],
          }
        }
      }
    },

    равносилен:
    function someRandomFunction(input) => {
      return {
        'uk-form-success': this.wasValidated && !this.errors[input],
        'uk-form-danger': this.wasValidated && this.errors[input],
      }
    }
    computed: {
      validatedClass() {
        return someFunction.bind(this);
      }
    },

    Такой computed будет обновлён только когда Vue пошлёт. В идеале, на самом деле, никогда.

    По сути ты просто написал обычный метод, но через одно место.)

    Во-вторых: проблема у тебя в другом: this.errors = {}.
    Из-за ограниченных возможностей сеттеров, новые ключи, добавленные в объект таким образомthis.errors.email = [] - не реактивны.
    Добавлять ключи надо либо черезthis.$set(this.errors, 'email', []) либо, что лучше, заранее:
    this.errors = {
      email: '',
      // ...
    }


    Ну и в третьих: менять что-то в this.$children - очень очень очень плохо. Просто используй props. Такая возможность наличествует только для крайне сложных случаев в компонентах библиотек. Точно не для твоего.
    Ответ написан
    1 комментарий
  • Как в Chrome заставить input type="submit" не скроллить экран вверх документа?

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

    Aetae
    @Aetae
    Тлен
    1. Получать данные на каждой странице в самой странице - передавать как props в Sliders.
    2. Сделать компонент-обёртку VasyaSliders только и делающий, что получающий данные Васи и рисующий с ними Sliders. Положить его в папочку components рядом со страницами его использующими.

    ¯\_(ツ)_/¯
    Ответ написан
    Комментировать
  • 1-3 ppi в мониторе сильно заметно?

    Aetae
    @Aetae
    Тлен
    Ppi - это пикселей на инч.
    Если у них идентичные физические размеры экрана и идентичные рабочие разрешения, то хз как у них может быть разный ppi. Мб вообще ошибка округления.

    А влияет ли для тебя: если ты сможешь определить разницу в один пиксель из 90 на участке размером 2.5 см - то да, иначе нет.)
    Ответ написан
    Комментировать
  • Можно ли по коду программы определить кто создала программу?

    Aetae
    @Aetae
    Тлен
    Общий ответ: нет.
    Но в конкретном случае надо анализировать сам софт, мож там копирайт затесался, или пути к файлам с именем юзера или ещё 100500 вариантов как мог случайно(или специально) задеанониться программист.)
    Ответ написан
    Комментировать
  • Как изменить display в div при radio: checked?

    Aetae
    @Aetae
    Тлен
    Никак.
    Селекторы ~ и + работают только если элементы в одном родителе и идут по порядку.
    Ответ написан
    Комментировать
  • Какой способ импорта Bootstrap модуля в компонент Vue лучше использовать?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    В первом случае вы в теории тащите весь bootstrap во втором только modal. Однако на деле нет никакой разницы, потому что все популярные системы сборки умеют в tree-shaking, т.е. оставляют в бандле только то, что используется.
    Разницы в скорости нет.

    Единственное что вам следует выбрать один вариант и ему следовать, иначе в случае bootstrap получится дублирование кода. Что кстати странно, обычно корневой файл содержит просто реэкспорт тех же самых отдельных модулей, а не копии.
    Ответ написан
    Комментировать