首屏加载优化

在 root 节点中写一些东西

<!-- 不美观 -->
<div class="root">Loading...</div>
<div id="root">
  <!-- 这里画一个 SVG -->
</div>

使用 html-webpack-plugin 自动插入 loading:

var HtmlWebpackPlugin = require('html-webpack-plugin');
var path = require('path');

// 读取写好的 loading 态的 html 和 css
var loading = {
  html: fs.readFileSync(path.join(__dirname, './loading.html')),
  css: '<style>' + fs.readFileSync(path.join(__dirname, './loading.css')) + '</style>',
};

var webpackConfig = {
  entry: 'index.js',
  output: {
    path: path.resolve(__dirname, './dist'),

    filename: 'index_bundle.js',
  },

  plugins: [
    new HtmlWebpackPlugin({
      filename: 'xxxx.html',
      template: 'template.html',
      loading: loading,
    }),
  ],
};
<!-- 在模板中引用 -->
<!DOCTYPE html>

<html lang="en">
  <head>
    <%= htmlWebpackPlugin.options.loading.css %>
  </head>

  <body>
    <div id="root"><%= htmlWebpackPlugin.options.loading.html %></div>
  </body>
</html>

使用 SplitChunksPlugin 自动拆分业务基础库

编译到 ES2015+ 提升代码运行效率

骨架屏、react-placeholder 提前撑开页面布局

避免出现闪屏