angular - Angular 8 中的差异加载如何管理两个单独包的大小?
问题描述
差异加载是一种策略,其中 CLI 构建两个单独的包作为已部署应用程序的一部分。
Angular CLI 8 及更高版本默认支持差异加载。对于工作区中的每个应用程序项目,您可以根据应用程序项目中的 browserslist 和 tsconfig.json 文件配置生成构建的方式。
如果我们有两个具有不同加载特性的独立包,会导致构建大小问题和应用程序性能问题吗?
请分享您的建议,以便我可以在当前项目中选择此功能。
解决方案
差异加载是浏览器根据自己的能力在现代或传统 JavaScript 之间进行选择的过程。现在,我们默认通过执行应用程序的现代构建 (es2015) 和旧版构建 (es5) 来利用这一点。当用户加载您的应用程序时,他们会自动获得所需的捆绑包。
简而言之,它将使较新的浏览器获得具有较新功能的捆绑包,而较旧的浏览器将获得转换后的版本。所以是的,它会增加您在服务器上的应用程序的大小,但不会增加将要下载的捆绑包(您不会同时下载两个捆绑包等)。
例如,如果您查看生成的 index.html:
<script src="runtime-es2015.33c6d44d6f111520cede.js" type="module"></script>
<script src="runtime-es5.33c6d44d6f111520cede.js" nomodule defer></script>
较新的浏览器将下载<script>
with 标记,它们将忽略with属性:type="module
<script>
nomodule
nomodule 属性是一个布尔属性,可防止脚本在支持模块脚本的用户代理中执行。
推荐阅读
- r - 为什么 R 中有两个赋值运算符,`<-` 和 `->`?
- r - if() 中的 sparseIndexTracking 0.1.0 失败:需要 TRUE/FALSE 的缺失值
- asp.net-mvc - MVC Core 2.1:找到多个相同类型的自定义属性
- c++ - 在 imageStore() 之后为 3D 纹理生成 MipMap 级别
- django - Django 形成两个具有相同值的字段,一个是唯一的,具有默认值,另一个是隐藏字段
- mongodb - 无法启动 mongodb 服务器
- java - 当我们发送 BAD Request 状态作为输出时,Resful APi 输出正在从 JSON 更改为 XML
- php - 从 Joomla 中的静态方法设置和访问私有 var
- javascript - 将一个类导入反应
- jquery - 如何将数据从 Json 转换为 java