Задать вопрос
  • Парсер на javascript?

    Aetae
    @Aetae Куратор тега JavaScript
    Если речь про клиентский js то никак. У клиентского js нет доступа к чужим сайтам. Конец.
  • Как работают SSR компоненты?

    Aetae
    @Aetae
    Не знаю как nextjs - они дохрена намудрили и всё запутали(мне лень разбираться, я вообще реакт не использую), но нормальный SSR работает просто:
    При первом* обращении к странице извне он рендерит страницу также как на клиенте со стейтом по умолчанию.
    Т.е. если у тебя что-то происходит в useEffect(т.е. после первой отрисовки) - оно произойдёт только уже на клиенте. Если просто в useState сразу кладётся то, что уже есть - оно отработает нормально.

    Если нужно наполнить всё данными заранее, то разные SSR-фреймворки предлагают разные способы "подождать данных" перед отдачей, всякие asyncData, fecth, поддержка async-await...

    Но если брать всё это дело в чистом виде и делать руками, то серверный код абстрактно будет выглядеть так:
    server.get('/', async (req, res) => {
      try {
        const baseData = await fetch('/data').then(data => data.json());
        const html = await renderAppToString(<App data={data}></App>);
    
        res.send(html);
      } catch (error) {
        res.status(500).send(error.message);
      }
    });

    Т.е. при запросе / ты руками получаешь стартовые данные, и руками их кладёшь в создаваемое приложение, после рендера которого сервер просто отдаёт результат.

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

    * Всегда стоит помнить, что для обычного пользователя SSR начинается и заканчивается при первом заходе на страницу, дальше приложение работает как обычное SPA. Только боты, которые получают каждую страницу отдельно будут получать SSR версии каждой страницы.
  • Ошибка Failed prop type: Invalid prop `children` supplied to `ForwardRef(Box)`, expected a ReactNode. Что я делаю не так?

    Aetae
    @Aetae
    Суде по всему так умеет next.js для SSR компонентов, которые не используют хуков. Херотень ещё та.:)
    Понятно конечно как оно может работать без хуков, но нахрена они это сделали непонятно - только запутает всё нафиг.
  • Хук useEffect вызывается снова и снова при смене url, без изменения зависимостей. Как исправить?

    Aetae
    @Aetae
    Если хук вызывается, значит:
    а) rolledDices меняется. (массивы проверяются по ссылке, а не по содержимому, если это новый массив но с теми же значениями - хук всё равно будет вызван)
    б) Компонент рисуется как новый. (например по if скрывается на некоторое время).

    Ищи где и почему может происходить первое или второе.
  • Невидимая папка в проводнике?

    Aetae
    @Aetae
    yythanks, пока работает.
    Магии не существует, чувак. Если творится какая-то ересь с техникой, значит она сломалась. Где и как - другой опрос.
  • Невидимая папка в проводнике?

    Aetae
    @Aetae
    Ну не знаю, сделай chkdsk, мб у тебя файловая система поломата или жд умирает.
    Ток скопируй всё важное перед этим от греха подальше на другой диск.:)
  • Почему может не открываться сайт битрикс после перевода пк в домен?

    Aetae
    @Aetae
    Какбэ очевидно, но DNS1 вообще верный адрес отдаёт то?
  • Как скачать весь контент с сайта?

    Aetae
    @Aetae
    Хз, искать лень, но точно должны быть инструменты для этого: не такие уж проблемы сграбить весь сетевой трафик, подменить адрес и сделать чтоб сборка работала на локальном серваке\электроне\ещё как. Запросы редко прям рандомные.

    ...upd
    В принципе даже особо напрягаться не придётся - серьёзную часть работы на себя возьмёт механизм PWA встроенный в браузеры.

    Конечно как обычный html-файл такой скачанный сайт уже не откроешь, но это уже давно не вариант.:)
  • Можно ли сделать рандомное числа в TON blockchain?

    Aetae
    @Aetae Куратор тега TypeScript
    cedFlame, безотносительно: псевдорандом на то и ПСЕВДОрандом, что при одинковом старте всегда выдаст одинаковую цепочку. Потому при инициализации псевдорандома задаются разные стартовые параметры. Например как у вас - от времени. Однако если кто-то точно узнает время использованное вами - он получит идентичную цепочку.
  • Для чего нужен IIFE в JS?

    Aetae
    @Aetae Куратор тега JavaScript
    IIFE несмотря на то, что этому придумали особое название и написали какие-то там уроки, в сути своей исходит из самой логики языка. Это не какой-то отдельный специальный синтаксис. Функция может быть выражением, выражение может быть функцией, можно попытаться вызвать что угодно, если это "что угодно" окажется функцией - оно вызовется. Сочетание этих факторов и породило IIFE, никто специально его для чего-то не выдумывал и не вписывал в язык.
  • Каким образом вывести (интерполировать) данные из переменных в title?

    Aetae
    @Aetae Куратор тега Vue.js
    ReActor Дмитрий Вершанский, если нужно именно из computed, а не руками, то смотри основной ответ.
    Без миксинов - то же самое просто написать в самом компоненте, заменив PAGE_TITLE на название вашего вычисляемого свойства.
  • По какому принципу классы преобразуются в функции при создании экземпляра?

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

    Aetae
    @Aetae
    historydev, что бы не делал твой .sh скрипт - это прекрасно сможет сделать .js скрипт запущенный через node. Если ты хочешь универсальности - пиши на js. Если кто-то скачал твой пакет из npm - у него точно есть node js.:)
    Всё остальное - мутная фигня. У человека может на стоять гита(мало ли), или стоять, но по другому пути.
  • Как запустит последовательно команды?

    Aetae
    @Aetae
    Но зачем?
    Раз пути всё равно руками прописываешь, а не универсально, то просто проассоциируй у себя в винде sh с bash и спокойно себе пиши "script": "./test.sh".
  • Как создать самообновляемый PAC для SS?

    Aetae
    @Aetae
    pac-файл это обыкновенный текстовый(js но не суть) файл.

    Напиши просто трёхсточник (bash?):
    1. Скачивание pac от antizapret (wget?).
    2. Текстовая замена всех вхождений строки сервера antizapret на твой в нём (sed?).
    3. Перекладывание готового куда надо. (git?)

    Можешь скормить этот алгоитм чат-гпт если у самого не получается.:)
  • Почему массив не модифицируется по ссылке?

    Aetae
    @Aetae Куратор тега JavaScript
    MishaXXL, ну что я могу сказать - чувак зафейлился по-жесткому.:)
    Можешь переписать код 1 в 1 с экрана и увидишь результат.:)

    А на гигантских - нужно concat с заменой оригинального массива на новый, он для этого предназначен и более оптимизирован. Или же вообще микрооптимозировать, заранее вычисляя длины и используя массивы массивов под капотом абстрагирующих классов. Всё зависит от задач и нагрузки.
  • Почему массив не модифицируется по ссылке?

    Aetae
    @Aetae Куратор тега JavaScript
    Евгений Мартынов, внутри функции и без возврата это, очевидно, ничего не сделает.

    MishaXXL,
    function changeArray(arr) {
      arr.push(...arr)
    }

    Однако есть (больше, но конечное) ограничение на количество аргументов, там где ожидаются гигантские массивы так делать не рекомендуется.
  • Что означает выражение?

    Aetae
    @Aetae Куратор тега TypeScript
    Рассаматривай по аналогии с обычным кодом:
    function BaseNSI(Index: string = 'VNKOD') {
      return {
        [Index]: 'string'
      }
    }

    // С той разницей, что Index может union'oм ( 'VNKOD'| 'SUBJCOD'), т.е. принимать более одного значения для ключей.