reactjs - 使用 Webpack 2 和 React Router 进行 CSS 代码分割

标签 reactjs webpack webpack-2 css-modules extract-text-plugin

我正在使用 React Router 和 Webpack 2 来分割我的 JavaScript 文件,如下所示:

export default {
  path: '/',
  component: Container,
  indexRoute: {
    getComponent(location, cb) {
      if (isAuthenticated()) {
        redirect();
      } else {
        System.import('../landing-page/LandingPage')
          .then(loadRoute(cb))
          .catch(errorLoading);
       }
    },
  },
  childRoutes: [
    {
      path: 'login',
      getComponent(location, cb) {
        System.import('../login/Login')
          .then(loadRoute(cb))
          .catch(errorLoading);
      },
    },
    { /* etc */ 
    }
};

此 bundle 的结果:

public/
  vendor.bundle.js
  bundle.js
  0.bundle.js
  1.bundle.js
  2.bundle.js

这意味着最终用户只能根据他/她所在的路线获得他/她需要的 JavaScript。

问题是:对于 css 部分,我没有找到任何资源来做同样的事情,即根据用户的需求拆分 CSS。

有没有办法使用 Webpack 2 和 React Router 来做到这一点?

最佳答案

是的,这是可以做到的。除了 ExtractTextPlugin 之外,您还需要 CommonsChunkPlugin。另外,定义多个入口点

entry: {
    A: "./a",
    B: "./b",
    C: "./c",
},

并配置 ExtractTextPlugin 以使用入口点名称作为 CSS 文件名

new ExtractTextPlugin({
    filename: "[name].css"
}),

在此处查看完整示例:

https://github.com/webpack/webpack/tree/master/examples/multiple-entry-points-commons-chunk-css-bundle

关于reactjs - 使用 Webpack 2 和 React Router 进行 CSS 代码分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42456917/

相关文章:

javascript - ReactJs状态变化和值不是我想要的

javascript - Webpack 2 背景图像相对路径不起作用

javascript - Webpack 5 (Webpack Encore) : How to run multiple webpack instances on the same page and avoid any conflicts?

css - 有没有办法用webpack动态加载css文件

javascript - 如何避免使用es6在react中使用绑定(bind)?

javascript - react : Child Components Without JSX

javascript - 使用 React Nextjs 的粘性导航栏

javascript - 将 jquery-mobile 与 Webpack 结合使用

node.js - Express.static() 不起作用

webpack - Vue 不是构造函数