Задать вопрос
  • Что изучать первым после JS, TypeScript или React?

    @romaro
    Мне кажется, TypeScript, т.к. он помогает провести ревизию знаний JS. И с Реактом потом будет проще. Ну и если заинтересует разработка под .NET, на C# будет комфортнее переходить при хорошем понимании TS.
    Ответ написан
    Комментировать
  • Почему этот код работает?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    Всё правильно, метод возвращает false и первой выполняется ветка else, результат возвращается ожидаемый:
    let company = {
      sales: [{name: 'John', salary: 1000}, {name: 'Alice', salary: 600 }],
      development: {
        sites: [{name: 'Peter', salary: 2000}, {name: 'Alex', salary: 1800 }],
        internals: [{name: 'Jack', salary: 1300}]
      }
    };
    
    function sumSalaries(department) {
      if (Array.isArray(department)) {
        console.log('case 1');
        return department.reduce((prev, current) => prev + current.salary, 0);массива
      } else {
        console.log('case 2'); // Выполняется первой
        let sum = 0;
        for (let subdep of Object.values(department)) {
          sum += sumSalaries(subdep);
        }
        return sum;
      }
    }
    
    alert(sumSalaries(company)); // 6700 === 6700

    62851aa26453a190350750.png
    Ответ написан
    3 комментария
  • Как работает метод Object.keys?

    Maksclub
    @Maksclub
    maksfedorov.ru
    если методом reduce мы обрабатываем только массив названия ключей, то откуда внутри метода значения этих ключей?

    Вы итерируетесь по массиву с ключами (которые достали через Object.keys(obj) у объекта), но доступ к переменной obj то у вас остается и переменная никуда не делась и не изменилась, не пропала :), вот вы с ней и работаете
    Ответ написан
    Комментировать
  • Как вместо null подставить какое-нибудь другое значение?

    sslion
    @sslion
    function showTest(data) {
      const moviesEl = document.querySelector(".test");
    
      moviesEl.innerHTML = (data.title) ?? "что-то другое";
    }


    не катит?
    Ответ написан
    Комментировать
  • Реализация объектра затемнения?

    RAX7
    @RAX7
    Ответ написан
    Комментировать
  • Почему не работает роутер?

    Alex_mos
    @Alex_mos
    Google всему голова
    А зачем вы экспортирует так export default new VueRouter();
    Если вы это объявляете в переменной router, ее и нужно экспортировать
    export default router
    Ответ написан
    Комментировать
  • Как правильно организовать код vue?

    coderisimo
    @coderisimo
    Тоже воевал с такими "кашами". Все же при полном разделении бэка и фронта разработку вести удобнее, и все более логично. Сейчас использую quasar framework (это тоже vue). Yii приложение работает как rest application (отдает только данные, обработка стандартных запросов из коробки), а фронт на quasar. Hot reload webpack и прочие плюшки такого подхода радуют.
    Основная идея : я настроил конфиг вебпака так, что после сборки он выгружает весь код в папку Yii web. Точка входа в одном представлении - app. Оно тоже модифицируется -

    //таким образом в app.php указываются ссылки на  сгенерированные js файлы
       afterBuild() {
            let writeableStream = fs.createWriteStream('../views/site/app.php');
        //......
            fs.createReadStream('../web/index.html').pipe(writeableStream);
          },


    Соответственно, мы получаем обычное Yii. Что радует - при таком подходе сессии, csf токены - все работает как обычно. Только для локальной разработки , когда vue приложение запускается через свой сервер (мы же работаем локально через cli) - приходится получать csf самостоятельно.
    Ответ написан
    7 комментариев
  • Какой посоветуете набор vue компонентов для создания личного кабинета?

    IgorPI
    @IgorPI
    Мне нравится Quasar
    Работал с Vuetify, слишком много багов, по сравнению с Quasar
    Ответ написан
  • Способы создания мобильного приложения?

    delphinpro
    @delphinpro
    frontend developer
    Есть https://quasar.dev/quasar-cli/developing-mobile-apps
    В том числе и сам электрон
    Ответ написан
    Комментировать
  • Что лучше использовать в локальной разработке веб-проектов на Mac OS? MAMP Pro или Docker?

    Maksclub
    @Maksclub Куратор тега Веб-разработка
    maksfedorov.ru
    Docker очень удобен и прост для поднятия каких угодно сервисов для нужд проекта...
    RabbitMQ, базы для дева/теста, какие угодно демоны и прочее... супер-просто и супер-надежно

    Статьи про ненужность Докера идут только в контексте контейнеров на проде в кубере и прочее

    если, например мне нужно запустить 3 сайта. api.domain.loc, lk.domain.loc, domain.loc. Как сделать, чтобы в адресной строке браузера указывать эти домены и попадать на каждый проект?


    для данного решения вы можете поставить еще один контейнер с nginx как реврес-прокси или traefik как тот же реверс-прокси, который будет ваши урлы роутить внутри приватной network внутри докер-сервисов и отправлять туда запросы...

    Итого:
    • Создаете в docker-compose некоторую сеть (секция network в docker-compose.yml, у каждого из сервиса делаете expose 80 порта (не биндинг портов, чтобы конфликта в localhost не было)
    • Ставите реверс-прокси с nginx, чтобы он тоже мог с этой сетью работать
    • Настраиваете его так, чтобы роуты он направлял в нужные сети нужным серисам
    • Все домены добавляется в /etc/hosts
    Ответ написан
  • Как-то ставят удалено софт на пк - как узнать через что и как?

    Добрый день - узнал об этом через ccleaner

    Ну для начала нужно удалить ccleaner - это тот ещё малварь.

    Обе записи что про powershell, что про OpenSSH выглядят нормально. Но данных не достаточно - приложи сюда скрин из планировщика задач/автозапуска со всеми опциями.

    антивирусы почему-то это все не обнаруживают

    Потому что это и не вирусы вовсе.
    Ответ написан
    4 комментария
  • Как отсортировать массив пар [ключ, значение]?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const sorted = (arr, key) => arr
      .map(n => [ key(n), n ])
      .sort(([a], [b]) => a < b ? -1 : +(a > b))
      .map(n => n[1]);

    Так как сортировка сбивается из-за наличия нечисловых символов в начале некоторых строк, просто вырежем их:

    const sortedArr = sorted(arr, n => n[0].replace(/^\D+/, ''));

    Если же значения могут быть не только двухзначными, то сравнивать их как строки уже нельзя. Делаем из них настоящие числа, считаем сумму; если второе слагаемое отсутствует, используем первое повторно:

    const sortedArr = sorted(arr, n => {
      const d = n[0].match(/\d+/g);
      return +d[0] + +d.at(-1);
    });
    Ответ написан
    Комментировать
  • Как реализовать перетаскиваемый блок с изменяемым размером?

    Fragster
    @Fragster
    помогло? отметь решением!
    Для vue есть реализованный в quasar framework: https://quasarframework.github.io/quasar-ui-qwindo... , но там не сильно сложно и самому сделать.
    Ответ написан
    Комментировать
  • Как вывести индексы массива объектов?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    путаете индекс массива со свойством id в ваших объектах?
    const indexArr = users.map(( item, index ) => item.index)
    нет у item'а свойства "index". Тогда уж, возвращайте переданный index: (item, index) => index Впрочем, индексы выводить, скорее всего, не нужно — для чего печатать числа от 0 до N.

    const fullNames = users.map( fullName ).filter(( item,  index, array ) => {
        return array.indexOf( item ) === index
    })

    Что здесь происходит: сначала из массива объектов через метод массива .map() создаётся новый массив, состоящий только из полных имён. Функцию fullName() вы не привели в вопросе, но скорее всего, она из item'а делает строку item.name + ' ' + item.lastName

    Далее, этот массив фильтруется – остаются только те имена, для которых их индекс в массиве равен индексу первого найденного такого же имени.

    Например
    массив ['Вася', 'Оля', 'Вася']
    Поиск имени "Вася" вернёт 0 - в нулевой позиции он нашёлся. Для первого Васи это ок, он останется. Зато для третьего Васи индекс будет 2, а поиск вернёт всё тот же 0. Так как 2 !== 0, дубликат-Вася вылетает и не попадает в результат.
    Ответ написан
    3 комментария
  • Как обратиться к свойству объекта?

    @n1ksON
    мидл
    Потому что вы передаете в функцию строку 'user'
    А нужно передать переменную user, в которой хранится объект
    test(user)
    Ответ написан
    Комментировать
  • Можно ли как то через админку wordpress узнать внешний адрес к phpmyadmin?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    phpmyadmin и wordpress - это два разных движка для двух совершенно разных задач, никак друг с другом не связанные. Более того, phpmyadmin рекомендуется устанавливать в подкаталог с неочевидным именем и закрывать дополнительно http-авторизацией. Также можно дополнительно с помощью chmod закрывать к нему доступ вообще полностью, когда он не нужен, а ещё лучше его вообще не ставить, ибо зачем создавать себе потенциальную уязвимость на пустом месте? В общем, если владелец сайта не совсем дурак, то phpmyadmin у него мом совсем нет, или его фиг найдёшь, а если и найдёшь - не попадёшь внутрь никогда.
    Ответ написан
    Комментировать
  • Почему не удается установить vue-router?

    Fragster
    @Fragster
    помогло? отметь решением!
    На старый vue надо устанавливать старый роутер, что-то типа
    npm install vue-router@3.5.3
    Ответ написан
    Комментировать
  • Почему не передаются данные через V-model?

    0xD34F
    @0xD34F Куратор тега Vue.js
    V-model="filterPriceFrom"

    V-model="filterPriceTo"

    props:['FilterPriceFrom', 'FilterPriceTo', "FilterCategoryId"],

    Во-первых - серьёзно? Не видите разницы между большими и маленькими буквами? Это как? О том, что буквы бывают большие и маленькие, и что это не одно и то же, рассказывают в первом классе. Вам сколько лет, шесть? Пять?

    Во-вторых, если бы вы составили себе труд открыть документацию, и прочесть, что там написано, то знали бы, что использовать v-model совместно с входными параметрами особого смысла нет. Потому что

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

    Вот вам и ответ на ваш вопрос: данные не передаются потому, что не могут передаваться избранным вами способом, так уж устроен vue.

    Теперь, что делать.

    Внутри компонента заменяете все v-model="параметр" на

    :value="параметр" @input="$emit('update:параметр', $event.target.value)"

    Снаружи - привязываете значения с использованием модификатора sync, если используете вторую версию vue.
    Или, через v-model с указанием имени параметра, в случае vue 3.
    Ответ написан
    Комментировать
  • Как обновлять данные без перезагрузки страницы?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Мои глаза слезятся от такого кода.
    Не делайте так!
    Просто подключите vue js https://vuejs.org/guide/introduction.html (25-40 kb)
    И работайте на высоком уровне абстракции.
    Я набросал код который вам поможет, данный подход имеет следующие плюсы:
    * Не тянет много лишнего
    * минимален
    * с сервера забирается только необходимое
    * нет лапши верстки
    * меньше загрузка сети
    * не перестраивается дом, точнее перестраивается минимально
    Ответ написан
    5 комментариев