• Как исправить ошибку "You are using the runtime-only build of Vue where the template compiler is not available"?

    coderisimo
    @coderisimo
    Вам пишут, что вы используете билд , где компилятор шаблонов недоступен. Либо пре-компилируйте в рендер ф-ции , либо используйте сборку с компилятором.
    По умолчанию runtimeCompiler установлен в false . Попробуйте включить его в конфиге (vue.config.js).
    module.exports = {
      runtimeCompiler: true
    }


    https://cli.vuejs.org/config/#runtimecompiler
    Ответ написан
    3 комментария
  • Какие есть примеры архитектуры бд в которых у каждого пользователя отдельная база данных?

    Melkij
    @Melkij
    PostgreSQL DBA
    Нужно чтобы у каждого пользователя была как бы отдельная база данных.

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

    Между предложениями нет никакой связи, уж тем более причинно-следственной.

    Для начала ответьте, по каким соображениям вы решили отбросить обычную нормальную форму (это технический термин) с добавлением к сущностям поля со ссылкой на владельца.
    Ответ написан
    Комментировать
  • Как добавить класс только к элементу, на который навели мышку?

    0xD34F
    @0xD34F Куратор тега Vue.js
    <div
      v-for="item in items"
      class="col-md-3 services-item"
      :class="{ hoverClass: item.hover }"
    >
      <img :src="item.scr" alt="">
      <h3 class="my_services_title">Тест</h3>
      <button
        class="btn-price"
        @mouseenter="item.hover = true"
        @mouseleave="item.hover = false"
      >Нажать</button>
    </div>

    data: {
      items: [
        {
          src: 'img/laptop.png',
          hover: false,
        },
        {
          src: 'img/laptop.png',
          hover: false,
        },
      ],
    },


    UPD. Конечно, я затупил - как подсказывает в комментариях delphinpro, отдельные свойства hover не нужны, достаточно хранить индекс активного элемента.
    Ответ написан
    1 комментарий
  • Wi-fi ПУШКА Работает? Кто нибудь пробовал сделать по схеме с канала Kreosan на You-tube?

    Jump
    @Jump
    Системный администратор со стажем.
    умный провинциал из Украины придумал антенну
    Это сколько же лет этому провинциалу?
    Учитывая тот факт, что антенна была изобретена в 1926году ему сейчас явно более ста лет, а он все на ютубе постит? Да еще и на Украину из Японии перебрался?
    Мощный чувак.
    Такие антенны в советское время делал каждый уважающий себя школьник для просмотра ТВ.
    На данный момент это пожалуй самая распространенная в быту антенна.
    Ее кстати зачастую называю по фамилии одного из создателей - антенна Яги.

    Правда ли он атак работает как говорит автор?
    Работает очень хорошо, если конечно изготовлена аккуратно и грамотно. Ну и про согласование не надо забывать.

    Схема не совсем понятна
    На просторах интернета есть сотни сайтов посвященных изготовлению этой антенны, в библиотеках есть куча книг.
    Ответ написан
    1 комментарий
  • Как динамически создавать экземпляры компонента?

    Аналогичный пример из документации

    https://ru.vuejs.org/v2/guide/list.html#%D0%9A%D0%...
    Ответ написан
    Комментировать
  • А как разместить vue переменную внутри кавычек?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    <img :src="news.image">
    Ответ написан
  • Оценка своего уровня. Как улучшить код?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Используйте const вместо let для определения переменных которые не переопределяются в коде. Это помогает снизить когнитивную нагрузку с человека читающего код и негласный стандарт в React разработке.

    2. Такие вещи как globalStyles и конфигурацию store лучше вынести в отдельные файлы. Они могут со временем хорошо разрастись.
    По поводу globalStyles, вы вообще можете вынести их в отдельный css файл.

    3. Вместо:
    {
      isModal
      ? <Route path="/auth" component={AuthPopup} />
      : null
    }

    лучше:
    {isModal && <Route path="/auth" component={AuthPopup} />}


    4. Вместо:
    function mapDispatchToProps(dispatch) {
        return {
            autoLogin: () => dispatch(autoLogin()),
            getBrowser: () => dispatch(getBrowser()),
            getMedia: () => dispatch(getMedia())
        }
    }


    лучше:
    const mapDispatchToProps = {
      autoLogin,
      getBrowser,
      getMedia,
    };


    5. Точки с запятыми в конце то есть, то нет. Определитесь и приведите код к одному виду.

    6.
    & label {}
    & input {}
    & span {}

    Это не очень хороший подход. Во-первых ваши стили не изолированные, что может приводить к неожиданным результатам. Во-вторых у вас очень много дублирования стилей. Определите Input и Label как базовые компоненты и используйте в разных местах, то же с остальным если есть.

    7. Почему папка со страницами называется Containers? Дань бойлерплейтам?

    8. Использование trailing comma является хорошей практикой.

    9.
    import {combineReducers} from 'redux';
    import photoReducer from './photoReducer';
    import authReducer from './authReducer';
    import globalReducer from './globalReducer';
    
    export default combineReducers({
        photoReducer, authReducer, globalReducer
    })


    Все таки приятней работать с хранилищем в котором ключи не имеют в названии слова reducer:
    import {combineReducers} from 'redux';
    import photo from './photoReducer';
    import auth from './authReducer';
    import global from './globalReducer';
    
    export default combineReducers({
      photo, 
      auth,
      global,
    });


    10. Забудьте вообще, что в языке есть возможность использовать вложенный тернарный оператор:
    return e === 'invalid-email' ? 'Неверно указан e-mail'
        : e === 'user-not-found' ? 'Указанный e-mail на найден'
        : e === 'wrong-password' ? 'Неверный пароль'
        : e === 'email-already-in-use' ? 'Указанный e-mail уже используется'
        : e === 'network-request-failed' ? 'Нет подключения к интернету'
        : e === 'operation-not-allowed' ? 'Произошла ошибка, попробуйте снова'
        : e === 'popup-closed-by-user' ? 'Окно авторизации закрыто пользователем'
        : e === 'account-exists-with-different-credential' ? 'Аккаунт уже существует с другими данными, используйте другой способ авторизации'
        : e

    Это одна из самых худших практик в JavaScript разработке. Тут лучше подойдет конструкция switch case

    11. Константы actionTypes лучше вынести в папку constants и разложить по разным файлам, иначе со временем у вас там будет свалка.

    12. Вместо:
    import {SET_ACTIVE, CHANGE_VALUE, SET_DEFAULT, UPLOAD, UPDATE_IMAGE, SET_IMAGE_ERROR, SET_LIKE, SET_COMMENT, ADD_ARTICLE_SUCCESS, FETCH_ARTICLES_START, FETCH_ARTICLES_SUCCESS, FETCH_ARTICLES_ERROR} from '../actions/actionTypes';

    Лучше:
    import {
      SET_ACTIVE,
      CHANGE_VALUE,
      SET_DEFAULT, UPLOAD,  
      UPDATE_IMAGE,
      SET_IMAGE_ERROR,
      SET_LIKE,
      SET_COMMENT,
      ADD_ARTICLE_SUCCESS,
      FETCH_ARTICLES_START,
      FETCH_ARTICLES_SUCCESS,
      FETCH_ARTICLES_ERROR,
    } from '../actions/actionTypes';


    13. Попробуйте внедрить библиотеку reselect. И для получения значения из store вместо записи вида:
    function mapStateToProps(state) {
        return {
            browser: state.globalReducer.browser
        }
    }


    использовать селектор:
    const mapStateToProps = state => ({
      browser: browserSelector(state),
    });
    Ответ написан
    12 комментариев
  • Как написать большое приложение на Vue.js и не умереть?

    @Buzzzzer
    Возможно что то не так в конфигах webpack ?

    У меня сейчас в проекте порядка 600+ vue компонентов.
    Пересборка в dev с hot reload занимает 2-5 сек.
    (win, ram 16gb, ssd, какой то старенький i3)
    Ответ написан
    4 комментария
  • Как в однофайловых компонентах Vue передать props?

    0xD34F
    @0xD34F Куратор тега Vue.js
    export default {
      data () {
        props: ['a'],
        return {
          qwe: "Привет 2"
        }
      }
    }

    Это шизофрения какая-то. Наверное, имелось в виду

    export default {
      props: ['a'],
      data() {
        return {
          qwe: "Привет 2"
        }
      }
    }
    Ответ написан
    Комментировать
  • С каких ресурсов начать для изучения Django?

    sim3x
    @sim3x
    Ответ написан
    Комментировать
  • Где дешево держать .com домены?

    @OlegPyatakov
    pyatakov.com
    Базовая цена за домен .com - $7,85 в год. Это та сумма, которую чарджит Verisign, администратор зоны .com.
    Все что ниже этой стоимости, можно считать, спонсируется регистратором. Зачем регистраторам это делать? - либо привлекать новых клиентов (и тогда надо смотреть на цены продления доменов), либо субсидировать за счет сопутствующих услуг (тут уже сложно что-то рекомендовать без понимания, что еще вы готовы заказывать)
    Ответ написан
    3 комментария
  • Max возвращает неверное значение, почему?

    BuriK666
    @BuriK666
    Компьютерный псих
    в массиве у вас строки, а не числа.
    Ответ написан
    1 комментарий
  • В чем отличие описание деплой в docker-compose command и ENTRYPOINT?

    @qq1
    ENTRYPOINT определяет команду которая будет выполнятся при старте контейнера.
    CMD определяет аргументы которые будут переданы в ENTRYPOINT.
    Докер по-умолчанию имеет ENTRYPOINT равный /bin/sh -c
    В свою очередь, command параметр в docker-compose.yml переопределяет CMD из докерфайла.
    Вот и все различия.
    По поводу лаконичности, то что имеет отношение к самому контейнеру и то что не зависит от окружения в котором запускается контейнер логичнее убрать в Dockerfile/entrypoint.sh дабы избежать дублирования в случае нескольких docker-compose.yml
    Ответ написан
    Комментировать
  • Как получить аттрибут ссылки во vue?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Пробовал указать и a.href и a.getAttribute('href') и т.д.

    Лучше бы попробовали документацию почитать.

    @click.prevent="toPage"

    toPage(e) {
      console.log(e.target.href)
    }
    Ответ написан
    Комментировать
  • Как быстро и эффективно прокачать скилы в верстке?

    @mletov
    Вы знаете, у нас в команде похожая ситуация. Нас 3 программиста, пишем в основном бэк, а к морде требования обычно минимальные, поэтому везде бутстрап. Из нас троих опыт работы верстальщиком в веб-студии есть только у меня, остальные как вы: вроде тоже не первый год работают, по верстке что-то правят, подгугливают, но как что-то чуть посложнее - спрашивают у меня.

    Курсы, книги, менторы и т д - это, конечно, хорошо.
    Но самая реальная польза - сверстайте из psd 3-5-10 макетов pixel perfect. И без всяких бутстрапов. После энного макета постигните дзен и все поймете. И чем макеты будут разнообразнее, чем больше в них адаптивности и хитрых элементов - тем лучше. По непонятным моментам спрашивайте на тостере. А так, судя по опыту коллег, иметь "некоторые представления о css" и подгугливать можно до бесконечности.
    Ответ написан
    1 комментарий
  • Vue lodash.shuffle для списка?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Использовать индекс в качестве key не надо никогда. Чтоб вот такого, как у вас сейчас, не было.

    Делаем нормальный key - всё окей.
    Ответ написан
    Комментировать
  • Чем опытнее разработчик, тем меньше соблюдается принцип KISS?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Принцип KISS не означает что надо использовать самые примитивные инструменты.
    Он означает, что не надо переусложнять систему без нужды.
    Если так рассуждать, так и высшее образование не нужно: "Дед отличные бани строил, хотя вовсе был неграмотный. Я и без сопромата небоскреб построю!"
    Если вы пока ещё не понимаете назначение всех этих "лееров, провайдеров и репозиториев", это не значит, что они вообще никому не нужны.

    Для того, чтобы упростить управление системой, её надо усложнить.
    Этот принцип относится к любой области человеческой деятельности, от постройки ракет до управления государствами.
    Чем сложнее система, тем больше накладные расходы на ее управление. Хоумпейдж с котиками можно и нужно делать примитивными средствами. В большом проекте надо сразу закладываться на будущую расширяемость. То есть, заранее делить ответственность между "леерами".

    И кстати. Код, в котором "всё друг на друге завязано" - это очень плохой код. Собственно, предназначение всех этих "лееров, провайдеров и репозиториев" как раз в том, чтобы компоненты были как можно более независимы друг от друга.
    Ответ написан
    1 комментарий
  • Chart with Axios?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Как можно с помощью axios подставить данные в массив chart?

    Это в принципе невозможно, axios - для выполнения запросов, а не работы с массивами.

    Разумеется, вы имели в виду кое-что другое, и даже понятно, что именно. Но учитывая фантастически ублюдочную формулировку вопроса, иного ответа вы не заслуживаете. Под ублюдочной формулировкой я имею в виду не только непонимание, о чём вы сами же и спрашиваете, но также и почти полное отсутствие какой-либо конкретики. А именно:

    Не сказано ни слова о графике, что он отображает.

    Получение данных для графика осуществляется будто бы с помощью axios - но единственный показанный запрос про другое, там идёт получение данных для выпадающего списка. То есть, должен быть ещё какой-то запрос. Какой? - url, параметры, структура ответа - ничего не известно.

    Далее, "подставить данные" вы планируете в "массив chart" - но как следует из показанного огрызка кода, такого массива нет. Есть chartData. Это он? Или какой-то другой массив? Не знаю что и думать. Что до собственно "подставить" - у массивов есть метод push, неужели вы про него не слышали? Если не слышали - разговаривать тут не о чем, идите учить язык. А где-нибудь через полгодика, не раньше, можно будет и в сторону vue попробовать посмотреть. Если слышали - очевидно, сам по себе push проблемой быть не может, придётся констатировать, что о сути своих затруднений вы решили попросту умолчать.

    Компонент line-chart, который, надо полагать, ответственен за построение графика - что это такое? Едва ли вы его написали сами - это или сторонний компонент, или обёртка над сторонним компонентом. Почему нет ссылки на документацию/github/...? - насколько я понял, график успешно строится, но надо динамически докидывать в него данные, так что сведения о компоненте графика пришлись бы очень кстати. Отслеживает ли он изменения своих параметров? Или может у него есть метод, позволяющий принудительно обновить свой внешний вид? Но нет - и тут никакой информации.

    Вот так.

    UPD. Вынесено из комментариев:

    График строится библиотекой chartkick.js

    есть запрос <...> необходимо подставить значения получаемых менеджеров в имена chartData. То есть в chartData:[{name:[сюда]}]

    Понятно.

    Не надо ничего "подставлять". Делаем отдельные свойства name и data, а chartData будет вычисляемым, причём собирать массив надо только в том случае, когда и name и data будут получены:

    computed: {
      chartData() {
        const { names, data } = this;
        return names && data && data.map((n, i) => ({
          name: names[i],
          data: n,
        }));
      },
    },

    Соответственно, график создаётся только в том случае, если удалось собрать chartData:

    <line-chart v-if="chartData" :data="chartData"></line-chart>

    https://jsfiddle.net/t5dovxL4/
    Ответ написан
    1 комментарий
  • Как свернуть уравнение (x + 1)(x^2 + 1)...(x^n + 1)?

    longclaps
    @longclaps
    Домнож и подели (в смысле - запиши как дробь) на х-1
    Ответ написан
    2 комментария
  • Как отрефакторить такой код?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Общую часть похожих кусков кода превращаем в функцию, а то, чем они различаются, будем передавать в эту функцию в качестве параметров:

    [
      { del: 'region_id', search: 'regionName' },
      { del: 'district_id', search: 'districtName' },
      { del: 'area_id', search: 'areaName' },
      { del: 'city_id', search: 'cityName' },
      { del: 'place_id', search: 'cityName' },
      { del: 'name', search: 'streetName' },
    ].forEach(n => {
      if (this.tableParam[n.del]) {
        delete this.tableParam[n.del];
        this.searchForm.get(n.search).patchValue(null);
      }
    });
    Ответ написан
    5 комментариев