CSS 个模块的服务器端渲染

Server-side rendering of CSS modules

我将使用 CSS 模块 导入样式,并使其与服务器端渲染一起使用。我尝试了以下方法,但每种方法都有自己的警告。 require('.style.scss') 如果有任何副作用,最好的方法是什么?

  1. 使用css-modules-require-hook:

    优点:易于配置。您只需要在服务器代码的开头调用钩子。您不需要修改组件。

    警告:它修改了 require.extensions 全局对象,已弃用

  2. 使用isomorphic-style-loader:

    优势:不再挂钩 require.extensions

    警告:使用 React Context 的 HOC 包装组件,这是一个 实验性 API并且可能会在 React 的未来版本中中断。

  3. 使用webpack-isomorphic-tools:

    优势:不依赖于require.extensionsContext(AFAIK)。

    警告:在 webpack-isomorphic-tools 实例中包装服务器。我们能否摆脱 webpack-assets.json?

  4. 使用 Webpack 捆绑服务器:

    优点:不再需要挂钩或注入。

    警告:在开发中,每当代码更改时将所有内容捆绑在一起非常麻烦,甚至会使调试变得更难大型捆绑 .js 文件。不确定 - 您可能需要将捆绑的 .js 传递给测试运行器。

免责声明

最终,我决定在开发中hook require.extensions。可能这不是最好的方法,在控制台上显示警告消息,例如校验和不匹配,但在开发模式下,我可以忽略它。