css 样式隔离方式

  • css modules - webpack配置
  • shadow dom - 原生语法,浏览器兼容问题
  • minicss - webpack插件
  • css-in-js

    css modules

  • 设置webpack配置

    1. module: {
    2. rules: [
    3. {
    4. test: /\.(cs|scs)s$/,
    5. use: [MiniCssExtractPlugin.loader, {
    6. loader: 'css-loader',
    7. options: {
    8. module: true, // 开启css modules
    9. }
    10. }, 'sass-loader']
    11. },
    12. ]
    13. },

    shadow dom

    image.png

    minicss

  • 使用mini-css-extract-plugin可以将css样式单独打包,以link方式引入

    1. module: {
    2. rules: [
    3. {
    4. test: /\.(cs|scs)s$/,
    5. use: [MiniCssExtractPlugin.loader, {
    6. loader: 'css-loader',
    7. options: {
    8. module: true,
    9. }
    10. }, 'sass-loader']
    11. }
    12. ]
    13. },
    14. plugins: [
    15. new MiniCssExtractPlugin({
    16. filename: '[name].css'
    17. })
    18. ],
  • 当我们切换子应用时,子应用的样式也会销毁

image.png

css-in-js

css样式打包到js中,当子应用切换时,样式也会销毁