如官网描述: https://reactjs.org/docs/code...
import React, { Suspense } from 'react';
const LuckyWheel = lazy(() => import('@lucky-canvas/react').then(({ LuckyWheel }) => {
return { default: LuckyWheel};
}));
function MyComponent() {
return (
<div>
<Suspense fallback={<div>Loading...</div>}>
<section>
<LuckyWheel />
</section>
</Suspense>
</div>
);
}
结果:
正常运行。但是LuckyWheel 没有被单独打包。
首先,使用 import(),webapck 不需要任何额外的配置就可以单独打包的。
其次如果没有单独打包,那肯定是配置上有问题。
没有任何配置时候的打包输出看这里:chunkFilename。chunkFilename 用来设置不在entry 中引入的文件,通常是指动态加载的文件。
chunkFilename 将会是你动态加载的模块打包输出的文件。比如:
为什么没有单独打包呢?很有可能是受到了 splitChunks 的影响。
webpack.config.js:
如果你在拆包优化(把 node_modules 里的第三方包都打入 vendor)的时候配置了上面内容,则不会单独打包动引入的模块。出现这个问题的原因是设置了:
webpack 官网解释: https://webpack.docschina.org...
几个值介绍:
再回顾一下上面的设置,我们设置了chunks: 'all',表示将处理同步和异步引入,全部打入到vendor,所以不会出现拆分单独的包。
解决方法(任选其一):
单独添加 chuns:'async' 的处理,并且把 priority 设置的比其他可能匹配到的要大。【推荐】
这样就会有 async.[chunkhash].js