Reactjs React服务器端呈现CSS模块
当前使用React组件的CSS实践似乎是使用webpack的样式加载器将其加载到中的页面中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中,因此如果执行服务器端渲染,将忽略。这将导致该页具有 是否有其他方法可以在服务器端和客户端上同时工作?您可以使用。这将创建一个可独立再
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模块和服务器端呈现的组合没有帮助