CRA SSR的大块资产加载

伊戈尔·施穆克勒(Igor Shmukler)

我正在尝试对我的资产进行分块,然后使用进行延迟加载react-loadable

我使用了以下renderToString:

renderToString(
  <Loadable.Capture report={m => modules.push(m)}>
    <Provider store={store}>
      <StaticRouter location={req.url} context={context}>
        <Frontload isServer={true}>
          <App />
        </Frontload>
      </StaticRouter>
    </Provider>
  </Loadable.Capture>
)

然后我尝试提取块,如下所示:

const extractAssets = (assets, chunks) =>
  Object.keys(assets)
    .filter(
      asset => chunks.indexOf(asset.replace('.js', '')) > -1
    )
  .map(k => assets[k]);
// Let's format those assets into pretty <script> tags
const extraChunks = extractAssets(manifest, modules).map(
  c =>
    `<script type="text/javascript" src="/${c.replace(
      /^\//,''
    )}"></script>`
  );

它基于https://github.com/mnsht/cra-ssr中的代码

提取资产对我来说不起作用。Object.keys()资产清单的收益filesentrypoints

以下是实际资产清单:

{
  files: {
    'main.css': '/static/css/main.f975a44f.chunk.css',
    'main.js': '/static/js/main.a2b23f82.chunk.js',
    'runtime-main.js': '/static/js/runtime-main.904d5b6d.js',
    'static/js/2.729d59f7.chunk.js': '/static/js/2.729d59f7.chunk.js',
    'static/js/3.12786515.chunk.js': '/static/js/3.12786515.chunk.js',
    'static/css/4.54cc97ef.chunk.css': '/static/css/4.54cc97ef.chunk.css',
    'static/js/4.3864c0a5.chunk.js': '/static/js/4.3864c0a5.chunk.js',
    'static/css/5.414892ae.chunk.css': '/static/css/5.414892ae.chunk.css',
    'static/js/5.19ce5aa6.chunk.js': '/static/js/5.19ce5aa6.chunk.js',
    'static/css/6.0b084d33.chunk.css': '/static/css/6.0b084d33.chunk.css',
    'static/js/6.a557fa17.chunk.js': '/static/js/6.a557fa17.chunk.js',
    'static/css/7.419cd89c.chunk.css': '/static/css/7.419cd89c.chunk.css',
    'static/js/7.42da3d59.chunk.js': '/static/js/7.42da3d59.chunk.js',
    'static/js/8.0fe13e82.chunk.js': '/static/js/8.0fe13e82.chunk.js',
    'index.html': '/index.html',
    'precache-manifest.abc91afd89c3af36afab7f06346ceb0d.js': '/precache-manifest.abc91afd89c3af36afab7f06346ceb0d.js',
    'service-worker.js': '/service-worker.js',
    'static/js/2.729d59f7.chunk.js.LICENSE.txt': '/static/js/2.729d59f7.chunk.js.LICENSE.txt',
    'static/js/3.12786515.chunk.js.LICENSE.txt': '/static/js/3.12786515.chunk.js.LICENSE.txt',
    'static/media/index.module.scss': '/static/media/sm_logo_62.ccbdb246.svg',
    'static/media/default.png': '/static/media/default.0866d697.png'
  },
  entrypoints: [
    'static/js/runtime-main.904d5b6d.js',
    'static/js/3.12786515.chunk.js',
    'static/css/main.f975a44f.chunk.css',
    'static/js/main.a2b23f82.chunk.js'
  ]
}

我的块是我尝试加载的模块的路径。例如,在我的应用程序中,有:

const LoadableCategories = Loadable({
  loader: () => import('../categories'),
  loading: <Loading />
});

<Route path='/categories' component={LoadableCategories} />

我的模块将在../categories内部。由于某种原因,实际上我的模块路径是的两倍[ '../categories', '../categories' ]

extractAssets现在的样子写,仍然extraChunks是永远[]因此,我缺少块,异步加载不起作用。

请指教。

伊戈尔·施穆克勒(Igor Shmukler)

我的可加载组件定义不正确。工作版本如下。

const LoadableCategory = Loadable({
  loader: () => import('../category'),
  loading() {
    return <div>Loading...</div>;
  }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用CRA的npm构建以SSR模式生成的静态媒体资产?

来自分类Dev

动态导入不适用于组合的 CRA 和 SSR

来自分类Dev

如何在React App(CRA)中从jQuery加载$函数?

来自分类Dev

CRA Webpack 依赖优化

来自分类Dev

cra强荣誉rel = nofollow

来自分类Dev

崎cra的旅行路径

来自分类Dev

崎cra的异步项目管道

来自分类Dev

cra LinkExtractor中的意外符号

来自分类Dev

cra草不刮https?

来自分类Dev

崎cra的旅行路径

来自分类Dev

cra LinkExtractor中的意外符号

来自分类Dev

cra草不输入解析方法

来自分类Dev

npm开始无法在CRA中“正常运行”

来自分类Dev

使用BeautifulSoup尝试嵌套的刮cra

来自分类Dev

如何获得正确的同名xpath?cra草

来自分类Dev

如何使用TS配置CRA以支持nullish-coalescing-operator

来自分类Dev

与CRA相比,Next.js如何提高SEO?

来自分类Dev

是否存在在CRA中URL末尾添加斜杠的设置?

来自分类Dev

如何在CRA中禁用打开的浏览器?

来自分类Dev

有没有办法迁移到CRA?

来自分类Dev

使用npm start启动CRA时出现问题

来自分类Dev

过滤状态数据无法正常工作-React(CRA)

来自分类Dev

CRA应用程序在生产构建后无法运行?

来自分类Dev

用CSP反应CRA:拒绝执行内联脚本

来自分类Dev

cra草提取带有“ <”符号的元素文本?

来自分类Dev

cra草不退还应该的所有物品

来自分类Dev

如何为 CRA 包制作可配置的 json 文件

来自分类Dev

无法加载资产

来自分类Dev

在iOS中加载资产