016. Рендеринг на стороне сервера (на примере React) - Евгений Шпилевский

Поделиться
HTML-код
  • Опубликовано: 13 янв 2025

Комментарии • 19

  • @ambraxia
    @ambraxia 6 лет назад +6

    Не слышно вопросы из зала. За видео спасибо!

  • @nodkz
    @nodkz 6 лет назад +3

    34:58 при использовании null-loader: в сгенерированном html на сервере у html-элементов не будут прописаны css классы. Будет битая верстка, если гидрация не пройдет. Или я не прав?

  • @dmitrysvetlov6001
    @dmitrysvetlov6001 6 лет назад +4

    где послушать лекцию по вебпаку?

  • @nodkz
    @nodkz 6 лет назад

    36:41 А почему не юзать вебпак в multi-compiller mode?
    js```
    const bundler = webpack([clientConfig, serverConfig]);
    await run(frontendServer, bundler.compilers[0]);
    await run(backendServer, bundler.compilers[1]);
    ```
    Все же пилим isomorphic app. И если frontendServer сгенерит файлик с ассетами и положит рядом с server.js. То серверная сбока, которая стартует следом, безболезнено подцепит нужные ассеты для SSR.
    Ассеты можно вот таким самопальным плагином для вебпака генерить:
    {
    apply(compiler) {
    compiler.hooks.afterEmit.tapAsync('CustomAssetsWriter', (compilation, callback) => {
    const stats = compilation.getStats().toJson({
    hash: true,
    publicPath: true,
    assets: true,
    chunks: false,
    modules: false,
    source: false,
    errorDetails: false,
    timings: false,
    children: false,
    });
    fs.writeFileSync(
    path.join(__dirname, '../build', process.env.NODE_ENV, 'stats.client.json'),
    JSON.stringify(stats, null, 2)
    );
    fs.writeFileSync(
    path.join(__dirname, '../build', process.env.NODE_ENV, 'revision.txt'),
    REVISION
    );
    callback();
    });
    },
    },

  • @TheZionjke
    @TheZionjke 3 года назад

    а можно ссылку на доклад по Вебпаку? :)

  • @newlife8699
    @newlife8699 5 лет назад

    Ребята а если сервер не на node, например на другом платформе это код будет работать?

  • @Скумбрія-ц5ы
    @Скумбрія-ц5ы 4 года назад +2

    почему так сложно

  • @MaxNaruto1000
    @MaxNaruto1000 6 лет назад +1

    quantum-router'a больше нет(

  • @nodkz
    @nodkz 6 лет назад

    46:55 Запятую? Без висячих запятых!

  • @i_am_5_percent
    @i_am_5_percent 5 лет назад +4

    next.js?

    • @Mike37373
      @Mike37373 4 года назад +1

      nuxt ?

    • @pro100skm
      @pro100skm 3 года назад

      ​@@Mike37373 universal ?

  • @nodkz
    @nodkz 6 лет назад

    Очень мощный доклад! Сколько жениных слез, боли и потерянного времени под капотом...
    Могу добавить нового челленджа на месяц:
    - дожать Code Splitting с помощью react-loadable и будет огонь!

  • @ЕвгенийВанюшин-д9ф
    @ЕвгенийВанюшин-д9ф 4 года назад

    Очень круто!

  • @nodkz
    @nodkz 6 лет назад

    1:13:10 Дырка XSS.
    Юзайте github.com/yahoo/serialize-javascript для сериализации data.
    Простая проверка: вставьте '' куда-нибуть в тексте в переменную data, и скрипт в браузере упадет.

    • @nodkz
      @nodkz 6 лет назад

      Упс, не досмотрел. Там есть replace(/

    • @nodkz
      @nodkz 6 лет назад

      Гы и опять не досмотрел. На клиенте обратно декодят < в

  • @ch-co
    @ch-co 6 лет назад +1

    Доклад супер. Помог переписать существующий проект на работе под ssr

  • @ВикторСергеевич-р7р
    @ВикторСергеевич-р7р 4 года назад +1

    КТО!!! Кто хранит в редаксе функции?)))