转换后的 Dart 应用程序是否需要是一个文件?

Does a transformed Dart app need to be one file?

假设我正在制作一个需要定期将更新推送到客户端的应用程序。现在,这些更新中的大部分只会影响我自己的代码,而不会影响构成我的依赖项的库。据我所知,我将在调用 pub build 时使用的转换器将获取我所有的库、依赖项和其他任何内容,并将它们一起编译到一个 web/main.dart.js 文件中。这有点让我想起 static linking,就像 C++ 这样的语言。

出于显而易见的原因,像这样编译是您最终部署应用程序时唯一想做的事情。对于大多数人来说,只使用 dartium 并直接关闭 .dart 层次结构就足够了。但是,如果我在 javascript 浏览器中 测试 ,例如尝试 dart:js 代码会怎么样。我不想重新编译所有 angular 和朋友,因为他们完全没有受到影响。我的具体情况是希望在我的应用程序中对静态文件使用 CDN 服务。

AngularDart,作为我的示例,为我编译的 javascript 贡献了大量 22,000 行,如果我在自己的应用程序中更改一个小东西,我可以亲吻304 NOT MODIFIED 再见,更不用说 CDN 节省了,因为那一大堆未触及的 angular。

综上所述,有没有办法在转换后的 Dart 应用程序中消除依赖关系? 我可以“动态 link”我的 dart 库吗? 此外,我可以假设将我的 dart 库分发为 dart.js , 用于其他转换后的代码?

不,这样不行。如果可部署文件包含整个依赖项,这可能会起作用,但事实并非如此。
pub build 仅包含您的应用程序中实际使用的代码(tree shaking),这通常只是依赖项的一小部分。更改代码中的单个字符可能需要包含来自依赖项的不同代码。我认为 treeshaking 比缓存有更大的影响。