Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React服务器端呈现CSS模块_Reactjs_Webpack_Webpack Style Loader - Fatal编程技术网

Reactjs React服务器端呈现CSS模块

Reactjs React服务器端呈现CSS模块,reactjs,webpack,webpack-style-loader,Reactjs,Webpack,Webpack Style Loader,当前使用React组件的CSS实践似乎是使用webpack的样式加载器将其加载到中的页面中 import React,{Component}来自'React'; 从“/style.css”导入样式; 类MyComponent扩展组件{ render(){ 返回( 你好,世界! ); } } 通过这样做,样式加载器将向DOM中注入一个元素。但是,将不在虚拟DOM中,因此如果执行服务器端渲染,将忽略。这将导致该页具有 是否有其他方法可以在服务器端和客户端上同时工作?您可以使用。这将创建一个可独立再

当前使用React组件的CSS实践似乎是使用webpack的样式加载器将其加载到中的页面中

import React,{Component}来自'React';
从“/style.css”导入样式;
类MyComponent扩展组件{
render(){
返回(
你好,世界!
);
}
}
通过这样做,样式加载器将向DOM中注入一个
元素。但是,
将不在虚拟DOM中,因此如果执行服务器端渲染,将忽略
。这将导致该页具有


是否有其他方法可以在服务器端和客户端上同时工作?

您可以使用。这将创建一个可独立再发行的样式表,您可以从文档中引用。

您可以查看。加载器是专门为解决此类问题而创建的

但是,要使用此方法,必须使用加载程序提供的
\u insertCss()
方法。文档详细介绍了如何使用它


希望能有所帮助。

对于我来说,我正在使用Webpack loader在同构应用程序中实现CSS模块

在服务器端,网页包配置如下:

  module: {
    rules: [
      {
        test: /\.(css)$/,
        include: [
          path.resolve(__dirname, '../src'),
        ],
        use: [
          {
            // Interprets `@import` and `url()` like `import/require()` and will resolve them
            loader: 'css-loader/locals',
            options: {
              modules: true,
              localIdentName: '[name]__[local]--[hash:base64:5]'
            }
          },
        ],
      },
    ]
  }
在客户端,webpack配置如下所示

          {
            // Interprets `@import` and `url()` like `import/require()` and will resolve them
            loader: 'css-loader',
            options: {
              modules: true,
              localIdentName: '[name]__[local]--[hash:base64:5]'
            }
          },

当然,如果您正在使用SASS,您需要使用
SASS-loader
将scss编译为css,
postsss-loader
可以帮助添加
autoprefixer

您可以尝试此postsss插件:。我发现样式加载器仅限于网页包,因此使用此插件,您可以将css类名提取为js对象文件。然后您可以需要这个
style.js
并使用相同的代码。因为这是一个
.js
文件,所以它当然可以支持服务器端渲染。您可以查看repo以了解更多信息:)我希望解决的问题是让webpack将CSS注入虚拟DOM,这样服务器端渲染也会打包CSS。我不认为其中一个与此任务有任何关系?你的意思是你不想创建另一个css文件,只想让网页包帮助你注入它?当提到sass、sass加载器、AutoRefixer等时-我是否还需要设置网页包来处理服务器端的这些文件?是的,您还需要为服务器端设置这些配置。有没有一种方法可以只使用一组配置来实现这一点?例如,创建一个用于服务器端或客户端渲染的库?(构建时未知)这对css模块和服务器端呈现的组合没有帮助