• Ошибка с библиотекой Route. В чем ошибка?

    Ca1doz, Скорее всего из-за того что на верхнем уровне отсутствует компонент
    <BrowserRouter />
    или его аналог
  • Как это сделано, смена текстур на фото в конструкторе кухни?

    Антон Р., Дело в том, что они предзагружают все картинки через css.
    Получается что на момент когда юзер переключает "текстуру" показывается уже предзагруженая картинка и из-за этого отсутствует видимая загрузка.

    6153180ec2fe9023885400.png
    61531822e1544574956243.png

    Откройте вкладку Network в DevTools, там это все можно найти. На самом деле метод очень топорный, лучше попробывать поискать другие способы реализации.
    Ниже вон писали про вполне рабочий вариант. Добавить туда нормальные прелоады ресурсов, чтобы картинки заранее предзагружались и будет ок)
  • Нужны ли какие-то специфические знания для составления чек-листов/гайдов/планировщиков на заказ?

    Ем... А какое отношение дизайнер имеет к продажам и составлению каких-то чек-листов под них?

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

    Аналогично, делали бота для одного мед. центра еще в 17 году. Все еще работает, без каких либо перезапусков уже 4й год ¯\_( ツ)_/¯
  • Как динамически добавлять значение для id?

    Фёдор, Если из массива будут удалятся элементы, то тот ответ который был отмечен решением приведет к тому, что будет происходить дублирование ид.
    Например:
    const data = [
    { id: 1, title: "123"}, 
    { id: 2, title: "456"}
    ]

    При удалении елемента 1, длина массива будет равна 2 и соответствено новый елемент так же будет иметь id 2
  • Как изменить по дефолту react script ${path}?

    evgenin, Мне кажется, тут идет недопонимание с вашей стороны как устроен вебпак и как работает CRA.
    В момент когда запускается react-scripts start происходит ничто иное, как запуск обычного webpack-dev-server.

    Для того, чтобы сделать примерно то, что вы хотите, необходимо настроить:
    а) Точки входа
    б) Работу с чанками
    в) HtmlWebPackPlugin для генерации необходимых статичных HTML файлов которые будут получается в результате работы пунктов а и б.

    В результате должен получиться примерно вот такой код вебпака:
    module.exports = {
      entry: {
        first: ['./src/first.js'],
        second: ['./src/second.js'],
      },
      output: {
        filename: '[name].js'
      },
    ...
    // Для каждой точки входа вызывается свой HtmlWebpackPlugin
      plugins: [
        new HtmlWebPackPlugin({
          template: "./src/first.html",
          filename: "./first.html",
          chunks: ["first"]
        }),
        new HtmlWebPackPlugin({
          template: "./src/second.html",
          filename: "./second.html",
          chunks: ["second"]
        })
      ],
     }


    Сборка webpack-ом включает в себя не только обработку js файлов, но и генерацию статики с подключенными модулями, а так же запуск дев сервера.
    Если к примеру нужно запустить дев-сервер не одной командой, а разными, то эту всю штуку можно разбить на нужное количество файлов конфига:
    project_one.webpack.config.js
    project_two.webpack.config.js

    Ну и дальше уже запускать через команду
    webpack ./project_one.webpack.config.js 
    webpack-dev-server ./project_two.webpack.config.js


    Но повторюсь, что из коробки CRA этого не поддерживает. Придется делать npm run eject и разбиратся с фабрикой конфига которая лежит за командами react-scripts или написать что-то свое (или найти готовое уже в интернете).

    p.s А если эти две версии приложения нету надобности запускать одновременно, то мне кажется самым простым решением будет просто разбить этот код на разные ветки в гите ¯\_( ツ)_/¯
  • Как создать Post Schema в mongoose?

    Alexander, Забывать и забивать не стоит. Просто для каждой задачи есть инструмент который с ней справляется лучше чем другие.
    MongoDB - отличный инструмент знание которого точно не будет минусом.

    А такую задачу, как у вас - можно решить большинством популярных БД, просто какие-то будут более эффективны, какие-то менее. Те же агрегации, про которые написал WapSter, задачу решат.
  • Как организовать структуру базы данных MongoDB?

    decvdence, Честно, сложновато дать что-то конкретное, что могло бы дать максимально полный набор стартовый информации.
    Я в свое время начинал с курса на udemy, сейчас в топе висит 2 с хорошими отзывами:
    https://www.udemy.com/course/mongodb-the-complete-...
    https://www.udemy.com/course/the-complete-develope...
    Есть еще бесплатный официальный курс от самой mongodb:
    https://university.mongodb.com/

    Ну и само собой практика, чем больше и разнообразней - тем лучше.
    Вся информация которая нужна для работы - есть в документации, что самой MongoDB, что mongoose
  • Как организовать структуру базы данных MongoDB?

    Василий Банников, Для такой задачи реляционная БД действительно подходит значительно лучше. Но вопрос был в том, как подобную штуку реализовать в монге.

    Если разбираться глубже, то в монге есть
    Aggregation Pipeline , который предоставляет разные методы для работы с многоуровневыми запросами.

    Если говорить за аналог JOIN в монге, это метод $lookup
    Штука весьма специфическая в плане нагрузки, но работает достаточно неплохо, если разобраться.
    Если дополнительно использовать ORM типа mongooose, то она предоставляет очень удобное api .populate для работы с подобными запросами.

    Вытяжка данных, например, пользователь с записями сведется к тому что из ноды мы делаем примерно вот так:
    Users.find({ query }).populate('notes');
    
    => 
    
    {
        _id: ObjectId('...'),
        notes: [
            {
                _id: ObjectId('Note1...'),
                ...,
                labels: [
                    ObjectId('Label 1'), 
                    ObjectId('Label 2'),
                ]
            },
            {
                _id: ObjectId('Note2...'),
                ...,
                labels: [
                    ObjectId('Label 1'), 
                    ObjectId('Label 2'),
                ]
            },
            {
                _id: ObjectId('Note3...'),
                ...,
                labels: [
                    ObjectId('Label 1'), 
                    ObjectId('Label 2'),
                ]
            }
        ]
    }


    При этом под капотом у нас выполняется основной запрос на вытяжку юзеров и сабквери на вытяжку всех записей пользователей которых мы до этого получили
  • Откуда ошибка рендеринга в react-router?

    DMITRY Chernenkiy, для решения такой задачи или нужно сделать в основном компоненте запрос, который будет все эти данные получать до перехода по роуту или разбивать все на компоненты, каждый их которых будет иметь свою зону ответственности.
    Отправлять запросы из компонентов - это нормальная практика в реакте, вся экосистема библиотеки рассчитана как раз на это. Я не вижу чего либо, что мешает у вас сделать подобным образом
  • Как получить куки со стороннего сайта?

    SANTA2112, На момент написания ответа в тегах стоял просто javascript, что обычно подразумевает работу с клиентским js, а не через node.js
    Я на ноду не подписан, будь тут только она в тегах, я бы этот вопрос даже не увидел)
  • Как дождаться загрузки всех картинок в React?

    uRoot, Так спрайты изначально для анимации были и придуманы. Пару лет назад вообще была очень популярная штука, в спрайты упаковывали весь UI сайтов и приложений и этим заменяли сотни мелких запросов одним большим.
    А потом они осталось как очень нишевый инструмент.
    Тем не менее есть большое количество реализаций начиная от простых на чистом css, заканчивая более сложными с обертками в виде JS библиотек. Это легко гуглиться.

    Пример спрайта и его использование:

  • Как лучше всего реализовать мультиязычность в рамках большого проекта?

    Если речь идет за стандартные переводы, которые реализованы в Ларе "из коробки" то, они прекрастно работают.
    У нас несколько проектов на которых поддерживается от 4 до 10 локалей и для статичных переводов, оно прекрастно справляется со своей задачей.
    То, что в приделах одного блейда какое-то кол-во раз вызывается функция перевода, не вижу ничего плохого.
  • Какие есть сервисы для онлайн-тестирования функций сайтов?

    Владимир, BrowserStack, это проект для мануального или автоматического тестирования клиентской стороны проекта на разных системах и браузерах.
    Если нужно проверить отправку почты, используйте https://mailtrap.io/ это беслатный SMTP перехватчик почты. Все письма которые уходят с вашего сервиса будуть попадать туда.
    Настраивается как обычный SMTP-mail
  • CSS-in-JS. Используется ли в продакшене?

    profesor08,
    Нету такой проблемы. У тебя либо два файла, один с js и один с css, либо один, где и js, и css. Потом css вставляется в тег style, все. На лету ничего не генерируется, все уже сгенерировано, за исключением моментов, когда свойства стилей зависят от пропсов, но это ничем не отличается, что ты сам будешь что-то делать с элементом.

    Когда стили выносятся в отдельный файл, действительно так и есть. Но при хранении в одном js (а в большинстве случаев оно так и храниться), происходит двойной парсинг и чтобы достать CSS стили, браузеру вначале нужно выполнить весь JS код, вставить стили и затем только применить их.
    При том что, да браузеру не составит труда это сделать в обычных условиях, нужно учитывать, что это дополнительная нагрузка. На эту тему есть хорошая статья.

    Как бы создатели что JSS, что styled-components не пытались оптимизировать критический рендеринг, при равных условиях они все равно будут проигрывать в производительности нативным технологиям.
    На сайте JSS есть хорошие синтетические тесты которые это демонстрируют и наглядно показывают в каких ситуациях эта технология действительно оправдана.

    У Title всегда будет конкретный стиль, он будет уникальным и ни с чем не будет пересекаться, можно смело забыть и туче разных концепций для наведения порядка в стилях и просто расслабиться, выбросив это из головы.


    В таких компонентах это действительно выглядит неплохо, но если там будет не 3 строчки стилей, а под сотню, а сам компонент состоит чуть больше чем из 3 строк кода, выглядеть это все будет совсем иначе.
    А разницы, если просто перенести эти стили собственно в css/scss/less как таковой не будет, кроме того, что мы убираем лишний слой абстракции над стилями.

    Касательно уникальности, тут соглашусь - для кого-то это действительно важный фактор. У нас в проектах все настолько привыкли к БЭМ-у, что эта штука даже не воспринимается как проблема.

    Повторюсь с выводом, я ни в коем случае не говорю что это плохая технология. Нет, наоборот - есть задачи которые кроме как через использование css-in-js решить и не получиться. И эту технологию стоит разобрать, хотя бы для того чтобы эти задачи "знать в лицо".

    Но не стоит возводить любую технологию в абсолют и пихать ее во все проекты без разбора, нужна она там или нет.
  • React + Express как правильо развернуть билд на проде?

    Так, а зачем вам одновременно и express и serve? Если нужно просто отдать реактовский билд одного из них вполне будет достаточно.

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

    pm2 start config.json

    {
        "apps" : [
          {
            "name": "App name",
            "script": "npx",
            "interpreter":"none",
            "args": "serve -l 3000 -s build"
          }
        ]
      }
  • Гарантии выполнения и отмены отложенных операций?

    BenderIsGreat34, Почитайте за Event Loop и Call Stack. Получите ответы на большинство вопросов по этой теме.
    Есть вот такой, доклад:
    https://youtu.be/8aGhZQkoFbQ

    Тут парень, как раз хорошо объясняет, как устроенна их работа, как раз с примерами на таймаутах. Он не самый новый, но все еще актуальный.