范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Webpack5新特性之模块联邦

  大家好,很高兴又见面了,我是"web 前端分享",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发! 1 引言
  Webpack 5
  先说结论:Webpack5 模块联邦让 Webpack 达到了线上 Runtime 的效果,让代码直接在项目间利用 CDN 直接共享,不再需要本地安装 Npm 包、构建再发布了!
  我们知道 Webpack 可以通过 DLL 或者 Externals 做代码共享时 Common Chunk,但 不同应用和项目间 这个任务就变得困难了,我们几乎无法在项目之间做到按需热插拔。
  模块联邦是 Webpack5 新内置的一个重要功能,可以让跨应用间真正做到模块共享,所以 这篇文章将带你了解什么是 "模块联邦" 功能。 2 概述 & 精读NPM 方式共享模块
  想象一下正常的共享模块方式,对,就是 NPM。
  如下图所示,正常的代码共享需要将依赖作为 Lib 安装到项目,进行 Webpack 打包构建再上线,如下图:
  对于项目 Home 与 Search,需要共享一个模块时,最常见的办法就是将其抽成通用依赖并分别安装在各自项目中。
  虽然 Monorepo 可以一定程度解决重复安装和修改困难的问题,但依然需要走本地编译。 UMD 方式共享模块
  真正 Runtime 的方式可能是 UMD 方式共享代码模块,即将模块用 Webpack UMD 模式打包,并输出到其他项目中。这是非常普遍的模块共享方式:
  对于项目 Home 与 Search,直接利用 UMD 包复用一个模块。但这种技术方案问题也很明显,就是包体积无法达到本地编译时的优化效果,且库之间容易冲突。 微前端方式共享模块
  微前端:micro-frontends (MFE) 也是最近比较火的模块共享管理方式,微前端就是要解决多项目并存问题,多项目并存的最大问题就是模块共享,不能有冲突。
  由于微前端还要考虑样式冲突、生命周期管理,所以本文只聚焦在资源加载方式上。微前端一般有两种打包方式: 子应用独立打包,模块更解耦,但无法抽取公共依赖等。 整体应用一起打包,很好解决上面的问题,但打包速度实在是太慢了,不具备水平扩展能力。 模块联邦方式
  终于提到本文的主角了,作为 Webpack5 内置核心特性之一的 Federated Module:
  从图中可以看到,这个方案是直接将一个应用的包应用于另一个应用,同时具备整体应用一起打包的公共依赖抽取能力。
  让应用具备模块化输出能力,其实开辟了一种新的应用形态,即 "中心应用",这个中心应用用于在线动态分发 Runtime 子模块,并不直接提供给用户使用:
  对微前端而言,这张图就是一个完美的主应用,因为所有子应用都可以利用 Runtime 方式复用主应用的 Npm 包和模块,更好的集成到主应用中。
  模块联邦的使用方式如下: const HtmlWebpackPlugin = require("html-webpack-plugin"); const ModuleFederationPlugin = require("webpack/lib/container/ModuleFederationPlugin");  module.exports = {   // other webpack configs...   plugins: [     new ModuleFederationPlugin({       name: "app_one_remote",       remotes: {         app_two: "app_two_remote",         app_three: "app_three_remote"       },       exposes: {         AppContainer: "./src/App"       },       shared: ["react", "react-dom", "react-router-dom"]     }),     new HtmlWebpackPlugin({       template: "./public/index.html",       chunks: ["main"]     })   ] };
  模块联邦本身是一个普通的 Webpack 插件 ModuleFederationPlugin,插件有几个重要参数: name 当前应用名称,需要全局唯一。 remotes 可以将其他项目的 name 映射到当前项目中。 exposes 表示导出的模块,只有在此申明的模块才可以作为远程依赖被使用。 shared 是非常重要的参数,指定了这个参数,可以让远程加载的模块对应依赖改为使用本地项目的 React 或 ReactDOM。
  比如设置了 remotes: { app_two: "app_two_remote" },在代码中就可以直接利用以下方式直接从对方应用调用模块: import { Search } from "app_two/Search";
  这个 app_two/Search 来自于 app_two 的配置: // app_two 的 webpack 配置 export default {   plugins: [     new ModuleFederationPlugin({       name: "app_two",       library: { type: "var", name: "app_two" },       filename: "remoteEntry.js",       exposes: {         Search: "./src/Search"       },       shared: ["react", "react-dom"]     })   ] };
  正是因为 Search 在 exposes 被导出,我们因此可以使用 [name]/[exposes_name] 这个模块,这个模块对于被引用应用来说是一个本地模块。 3 总结
  模块联邦为更大型的前端应用提供了开箱解决方案,并已经作为 Webpack5 官方模块内置,可以说是继 Externals 后最终的运行时代码复用解决方案。
  另外 Webpack5 还内置了大量编译时缓存功能,可以看到,无论是性能还是多项目组织,Webpack5 都在尝试给出自己的最佳思路,期待 Webpack5 正式发布,前端工程化会迈向一个新的阶段。 参考资料
  原文链接:https://github.com/ascoders/weekly/blob/master/%E5%89%8D%E6%B2%BF%E6%8A%80%E6%9C%AF/144.%E7%B2%BE%E8%AF%BB%E3%80%8AWebpack5%20%E6%96%B0%E7%89%B9%E6%80%A7%20-%20%E6%A8%A1%E5%9D%97%E8%81%94%E9%82%A6%E3%80%8B.md

512GB热销至安卓第一!一加11为何如此受宠,用户口碑给出真相现如今的手机应用和游戏,在经过一段时间的使用之后,对于存储空间的占用动不动就是好几个G,这对于手机的存储空间就提出了更多的要求。因此,越来越多的消费者用户在选购手机的时候都更倾向于又可以薅羊毛了!大量用户称收到饿了么免单通知CNMO新闻近些年来,互联网快速发展的同时,将大众生活节奏无限加快。在这种情况下,打工人已经没有充足的精力自己买菜做饭。以饿了么美团为首的外卖平台顺势而来,并不断扩张成为了大众日常Python中使用OS和Pathlib模块的7个常见文件操作两个模块中最常用的函数集以及示例在我们日常的Python项目中,我们经常最终使用一种或多种方法来执行各种操作,如读取列出命名以及创建文件和目录,这两个内置模块OS和Pathlib可2023年最全A卡N卡INTEL显卡性能天梯图,含PC和移动端200多款型号本次更新天梯图包含了各平台最新的显卡型号,如NV平台的RTX409040804070TI,AMD平台的RX7900XTX7900XT,英特尔平台的独显ArcA770A750核显UH阿里巴巴公司的五个核心的模块阿里巴巴公司的五个核心的模块第一个模块,我们称之为零售体系,也就是最早的电子商务。这个体系以大淘宝作为核心,加上天猫聚划算,以及B2B,零售体系是阿里巴巴所有业务的核心。第二个是支面试必问说一下Java虚拟机的内存布局?我们通常所说的Java虚拟机(JVM)的内存布局,一般是指Java虚拟机的运行时数据区(RuntimeDataArea),也就是当字节码被类加载器加载之后的执行区域划分。当然它通常科大讯飞AI学习机再出新品三大模块提供不同学龄段精准方案科大讯飞发布新品AI学习机T20Pro。红网时刻新闻2月6日讯(记者陈雪骅通讯员许可亮)深度服务学习需求,打破行业天花板,2月6日,科大讯飞发布全面升级的学习机新品AI学习机T20手机内存越来越少,怎么办?教你两招,快速释放20G内存空间手机使用久了,安装的软件越来越多,储存的图片也随之增多,紧接着内存就不够了,手机开始卡顿了。今天,我教大家两招,帮助你们快速释放手机内存空间!清理软件缓存第一个大招就是清理缓存!接打造小钢炮的高性价比之选千元级B760ITX主板实战测试英特尔700系芯片组与第13代酷睿处理器已经上市有一段时间了,市面上的700系主板也逐渐丰富起来。不过对于想要打造Mini小钢炮主机的消费者来说,似乎缺乏高性价比的700系ITX主售价12。98万元起,MGMULAN产品力解析,百公里加速3。8秒说到20万元以内的新能源车型,可以选择的车型还是比较丰富的,每个品牌都有自己的造车理念,小编筛选一款车型MGMULAN,MGMULAN的售价区间为12。9818。68万元,那么MG福原爱近照幸福满面!34岁离婚后颜值气质仍在线,任刘国梁下属近日,不少粉丝关注到中国乒乓球队的最新情况,在各项分站比赛中,年轻球员展现出了不错的实力,接连获得比赛冠军,网友们表示这才是中国乒乓球队正确的做法,积极培养新人,推动球队更新换代,
这是近两年才被人类发现的景观,就在青藏高原!上一篇,小编给大家带来如何高效率观赏南迦巴瓦雪山,希望可以帮助到你!今天,我们走进另一个罕见的高海拔美景,雪山金字塔!(作者刘政)如果你恰好在太阳刚升起时登顶雪山之巅,会看到雪山自20的泡面5元一个茶蛋多少年没到国内旅游了?有色眼镜该摘了刚刚无意中翻到一条友发的文章,看后如鲠在喉,不吐不快!您该是多少年没出去旅游了?本文所有照片均为本人手机实拍)引在国内,不管去哪个城市,四个字千城一面。无外乎,低矮陈旧老城区,高楼建议大家去超市看到这些洗发水,别犹豫!虽然丑但是好用咱就是说,对洗发水没有这么无语过我感觉大多数人都用过在超市买的洗发水吧,尤其是搞活动的时候,是不是都被导购阿姨说的晕晕的,推荐的牌子甚至听都没听过,但是我妈每次必然会买上几大瓶!!国内最新最全的著名温泉名录(244家)收藏备用!(上)和冬日最配的还是泡汤啊,泡个热气腾腾的温泉才是冬天的正确打开方式,解锁冬日的限定美好,和温暖负距离接触,想想都觉得浪漫而美好,这份全国泡汤攻略速来收下!一整个国内的著名温泉全都在这2021年度十大创新热水器品牌榜称霸国内半壁市场,你家里在用哪个2021年度十大创新热水器品牌是平台数据库联合货东家根据平台内热水器技术搜索指数热水器产品外观创新指数热水器产品技术创新指数热水器产品实用性创新指数渠道搜索技术指数售后维修便捷指数国内球员谁比渡边雄太实力强?渡边雄太已经混迹NBA四年之久,现在在猛龙已经进入轮换阵容。面对残阵勇士,渡边雄太替补登场,打了21分钟,9投4中,三分球4中2,得到12分4篮板2抢断1盖帽,并且贡献一记扣篮,替曾在美国捐款95亿,国内却负债322亿,富婆何巧女为何沦落至此?文Dong审核张子扬校正知秋中国的商界,从来不缺白手起家的富豪。当然,也从来不缺少白手起家的女富豪。无论是立讯精密的当家人王来春,还是蓝思科技的创始人周群飞,都让国人们感受到了巾帼国内也有媲美加州一号公路的自驾公路,你知道在哪吗?(附路线)喜欢沙滩日落和海岸线自驾的小伙伴们一定对东南沿海和各种小岛都有憧憬。那么有没有一条能看到很多好风景的海岸线自驾,看海的同时还比较充实呢?随我往下看上图灰色表示可以增加的景点橘色表示为什么国内游戏厂商都喜欢给自家的东西起个日本名字?腾讯天美于今年10月在美国成立了怪兽工作室,并致力于开发幻想题材的4A级多平台多人FPS游戏。除了前段时间大佬出事的事情,让4A游戏变得扎眼之外,怪兽工作室的名字也被玩家们吐槽。好北京国安国内外赛场八大惨案1北京国安0比7川崎前锋2021年亚冠联赛小组赛2北京国安0比6拜仁慕尼黑2012年中德俱乐部友谊赛3北京国安0比5大邱FC2021年亚冠联赛小组赛4北京国安0比5水原三星1998冬奥百问这些精巧的北京冬奥周边,你喜欢吗?第24届冬季奥林匹克运动会将于2022年2月4日在北京启幕。中新网体育部推出系列栏目冬奥百问,旨在普及冬奥知识解答热点问题共话冰雪趣闻,帮助大家在北京冬奥赛时拥有更佳的观赛体验。第