Reactjs 使用react-loadable导入组件css区块客户端

Reactjs 使用react-loadable导入组件css区块客户端,reactjs,react-loadable,Reactjs,React Loadable,如何在客户端使用react可加载库动态加载CSS文件 我在服务器端和客户端渲染中都包含了react可加载库,从服务器端渲染到客户端,一切都很好,但是客户端,CSS将如何动态加载 webpack.config.prod.js:客户端/服务器- “严格使用”; const autoprefixer=require('autoprefixer'); const path=require('path'); const webpack=require('webpack'); const HtmlWebp

如何在客户端使用react可加载库动态加载CSS文件

我在服务器端和客户端渲染中都包含了react可加载库,从服务器端渲染到客户端,一切都很好,但是客户端,CSS将如何动态加载

webpack.config.prod.js
:客户端/服务器-

“严格使用”;
const autoprefixer=require('autoprefixer');
const path=require('path');
const webpack=require('webpack');
const HtmlWebpackPlugin=require('html-webpack-plugin');
const ExtractCssChunks=require('extract-css-chunks-webpack-plugin');
const ManifestPlugin=require('webpack-manifest-plugin');
const InterpolateHtmlPlugin=require('react-dev-utils/InterpolateHtmlPlugin');
const swprecacheebpackplugin=require('sw-precache-webpack-plugin');
const eslintFormatter=require('react-dev-utils/eslintFormatter');
const ModuleScopePlugin=require('react-dev-utils/ModuleScopePlugin');
常量路径=需要('./路径');
const getClientEnvironment=require('./env');
const{ReactLoadablePlugin}=require('react-loadable/webpack');
const publicPath=path.servedPath;
常量应为UserRelativeAssetPath=publicPath==='。/';
const shouldUseSourceMap=process.env.GENERATE\u SOURCEMAP!='假';
const publicUrl=publicPath.slice(0,-1);
const env=getClientEnvironment(publicUrl);
if(env.stringized['process.env'].NODE_env!=='production'){
抛出新错误('生产生成必须具有节点_ENV=Production');
}
const cssFilename='static/css/[name].[contenthash:8].css';
常量客户端={
保释金:是的,
devtool:shouldUseSourceMap?“源映射”:false,
条目:[require.resolve('./polyfills'),path.appIndexJs],
输出:{
//生成文件夹。
路径:path.appBuild,
文件名:“static/js/[name].[chunkhash:8].js',
chunkFilename:'static/js/[name].[chunkhash:8].chunk.js',
公共路径,
devtoolModuleFilenameTemplate:info=>
路径
.relative(path.appSrc,info.absoluteResourcePath)
.替换(/\\/g,“/”),
},
决心:{
模块:['node_modules',path.appNodeModules].concat(
process.env.NODE_PATH.split(PATH.delimiter.filter(布尔)),
扩展名:['.web.js'、'.mjs'、'.js'、'.json'、'.web.jsx'、'.jsx'],
别名:{
“反应本机”:“反应本机web”,
},
插件:[
新的ModuleScopePlugin(path.appSrc[path.appPackageJson]),
],
},
模块:{
StrightExportPresence:没错,
规则:[
{
测试:/\(js | jsx | mjs)$/,
强制执行:“预”,
使用:[
{
选项:{
格式化程序:eslintFormatter,
eslintPath:require.resolve('eslint'),
},
loader:require.resolve('eslint-loader'),
},
],
包括:path.appSrc,
},
{
其中一项:[
{
测试:[/\.bmp$/,/\.gif$/,/\.jpe?g$/,/\.png$/],
加载器:require.resolve('url-loader'),
选项:{
限额:10000,
名称:'static/media/[name].[hash:8].[ext]',
},
},
//用巴贝尔处理JS。
{
测试:/\(js | jsx | mjs)$/,
包括:path.appSrc,
loader:require.resolve('babel-loader'),
选项:{
是的,
插件:['react-loadable/babel'],
},
},
{
测试:/\(?:css |以下)$/,
用法:extractcsshunks.extract({
使用:[
{
加载程序:“css加载程序?模块”,
选项:{
对,,
sourceMap:shouldUseSourceMap,
进口装载机:对,
localIdentName:'[name].'[local].'[hash:base64:7]',
},
},
{
加载器:“更少的加载器”,
选项:{
对,,
sourceMap:shouldUseSourceMap,
进口装载机:对,
},
},
{
加载器:require.resolve('postss-loader'),
选项:{
标识:'邮政编码',
插件:()=>[
需要('PostSS-flexbugs-fixes'),
自动刷新器({
浏览器:[
'>1%',
“最后4个版本”,
“Firefox ESR”,
“不是ie<9”,
],
flexbox:‘no-2009’,
}),
],
},
},
],
回退:“样式加载器”,
}),
排除:/\(eot | woff | woff2 | ttf | otf | svg)(\?[\s\s]+)?$/,
},
{
加载器:require.resolve('file-loader'),
排除:[/\.(js | jsx | mjs)$/,/\.html$/,/\.json$/],
选项:{
名称:'static/media/[name].[hash:8].[ext]',
},
},
],
},
],
},
插件:[
新的EhtmlPlugin(环境原始),
新HtmlWebpackPlugin({
是的,
模板:path.appHtml,
缩小:{
removeComments:对,
拼贴空白:对,
删除和声明:是的,
useShortDoctype:true,
RemovemptyAttributes:没错,
removeStyleLinkTypeAttributes:true,
keepClosingSlash:是的,
minifyJS:false,
没错,
minifyURLs:是的,
},
}),
新网页包。定义插件(环境字符串化),
新建webpack.optimize.UglifyJsPlugin({
压缩:{
警告:错误,
比较:错,
},
裂口:{
萨法里10:是的,
},
输出:{
评论:错,
仅ascii_:正确,
},