Home >Web Front-end >HTML Tutorial >解決 Universal 架構的 CSS Modules 問題_html/css_WEB-ITnose

解決 Universal 架構的 CSS Modules 問題_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-21 08:59:411072browse

最近在使用 React 和 Redux 建構一個 Isomorphic JavaScript(Universal)應用。

但是在實作 CSS Modules 的時候,會碰上兩個問題:

  • Server-side 的 Node.js 無法 import *.css。

  • 如果改成使用 process.env.IS_BROWSER 來判斷只在 Client-dide import,那又會碰到 Server-side 與 Client-side render 出來的 DOM 結果不一致的問題。

  • 解決方式:

    安裝 css-modules-require-hook 這個套件:

    npm install css-modules-require-hook --save-dev

    修改 webpack config 的 css-loader 設定:

    // webpack.config.js{  // ...  module: {    loaders: [{      test: /\.css$/,      loader: 'style-loader!css-loader?modules&localIdentName=[name]__[local]___[hash:base64:5]!!postcss-loader'    }]  }  // ...}

    在 Node.js 的 main file 加入 css-modules-require-hook:

    // server.jsrequire('css-modules-require-hook')({  generateScopedName: '[name]__[local]___[hash:base64:5]'});// ...

    注意 generateScopedName 的命名格式,必須與 css-loader 的 localIdentName 保持一致。

    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn