javascript - 为什么以及在哪里需要 bundle.js?
问题描述
Node.js/Angular/React 应用程序对 bundle.js 的需求是什么?如果在构建和部署应用程序时不使用它怎么办?
解决方案
捆绑从何而来?
由于性能原因,我们开始捆绑我们的资产。
- HTTP1 支持单个连接上的有限请求。为每个资产创建连接正在扼杀性能。
- 我们开始逐页捆绑事物,以通过更有效的缓存来提高性能。
- 我们能够将指纹添加到其中并将其上传到 CDN。(主页.231434.js)。所以我们能够通过 dockerizing 来部署我们的应用程序。
- 捆绑还帮助我们进一步减少页面大小,因为捆绑器了解整个系统。这意味着它可以删除未使用的内容并更轻松地缩小内容。如果没有捆绑器,您将无法轻松做到这一点。
- 此外,捆绑器正在使用转译器。浏览器并不总是能够运行我们编写的代码,例如 Typescript、CoffeeScript。捆绑器可以轻松地将这些代码转换成捆绑包。
我们还需要它吗?
如今,事情发生了很大变化,就像我们捆绑资产一样。
- 首先,现在几乎所有浏览器都支持 HTTP/2。所以我们可以在同一个连接上请求多个文件。因此不再需要捆绑。此外,我们还有 http/2 服务器推送。
- 像 React、Angular、Vue 这样的库在规模上要有效得多。它们可以很容易地从 gzip 支持源下载到页面。
这些是我们不再需要捆绑的原因。
但根据您的项目,我们可能仍需要捆绑。这是真正的真相。
我仍然会选择捆绑。
在我的公司,我们使用容器编排系统来控制我们的 dockerized 应用程序。我们可能同时运行多个版本。在打包上传到 CDN 的同时为文件创建指纹对我们来说仍然更有效。而且我们也在尝试使用prefetching和preloading。CDN 帮助我们减少其他国家访问者的加载时间。此外,我们还从服务人员那里获得支持,以便在我们需要时逐页更改资产。
所以实际上现在它只是基于你的项目。没有太多的性能原因了。
推荐阅读
- python - 使用 python eve 将文件上传到 Amazon S3
- python - 使用条件 groupby 计算分类列的百分比并在 Python 中计数
- python - Python禁用键盘的某些键
- java - Kafka POM 依赖版本问题
- enterprise-architect - Enterprise Architect Schema Composer 根类基数
- php - Laravel Eloquent concat 和 groupBy() 并返回每个组的一个标题
- python - 如何使用 json.dumps 将带有花括号的 dict 值转储到 JSON?
- java - 下载后如何通过意图打开文件?
- time-complexity - 嵌套循环和 Dijkstra 算法的大 O 表示法
- javascript - 将 URL 保存到 cookie 并适应按钮