微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

web组件化 - 微前端的改进:子应用Webpack排除React依赖包

第一篇介绍了如何将React组件转换为Web Component
第二篇介绍了子应用(Web Component)中的路由可以正常作用与Shell App
第三篇介绍了Sub App与Shell App通过属性自定义事件交互
第四篇介绍Web Component + React实现微前端的POC

本文(及后续)在先前的基础上,思考如何做性能改进,及其他与微前端相关的话题。
一个问题,如果所有sub app都用react,那么是否可以把相关依赖从sub app提升到shell app? 因为如果每个sub app都独立打包,并且把react依赖都打包进去,会导致bundle文件过大。
原先代码的基础上,修改过程如下:
打开sub-app-01 -> webpack.config.js -> 添加

  externals: {
    'react': 'React',
    'react-dom': 'ReactDOM'
  }

上述配置告诉webpack打包的时候跳过react、react-dom,具体语法参考WebPack官网

打开public/index.html, 添加react、react-dom的js引用。 这是为了单独测试sub-app-01用的,运行
npm run build
node ./src/server.js
可以查看效果

    <script crossorigin src="https://unpkg.com/react@17/umd/react.production.min.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>

参考React官网

最后,打开shell app -> public/index.html,同样加上上述script的引用

可以看到对比完全打包的bundle,这种方式小了很多,从158KB下降到了32KB。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐