【发布时间】:2012-09-07 10:20:26
【问题描述】:
在 GWT-land 中,“链接器”和 DFN 代码拆分之间有什么关系?为什么链接器需要支持分码,为什么有些链接器不支持?您如何选择您的应用应使用哪个链接器以及做出该决定的因素有哪些?
【问题讨论】:
在 GWT-land 中,“链接器”和 DFN 代码拆分之间有什么关系?为什么链接器需要支持分码,为什么有些链接器不支持?您如何选择您的应用应使用哪个链接器以及做出该决定的因素有哪些?
【问题讨论】:
主链接器(也有辅助链接器,但这里不涉及)负责创建托管已编译 JS 代码的 *.js 或 *.html 文件,当然还有如何引导/加载它们进入浏览器。
一旦您知道这一点,很明显他们必须明确支持代码拆分。
例如,xs(跨站点)链接器将整个脚本包装在一个匿名函数中,因此它不会“污染全局范围”(该技术也称为 模块模式 )。然后它不能动态地将一些其他脚本注入到可以访问其内部的页面中。 sso(单脚本)链接器也有同样的限制。
std (iframe) 链接器将您的应用加载到动态创建的 iframe 中,该 iframe 充当沙箱:iframe 的全局范围不是主机页面的全局范围。然后它可以在 iframe 中动态注入一个脚本,该脚本可以访问已经存在的所有内容(iframe 的全局范围)。
但实际上,您不必选择您的应用应使用哪个链接器:坚持使用xsiframe(但您必须明确激活它,暂时是这样)。它结合了xs 链接器的跨站点友好性和std 链接器的iframe 沙盒。
您可以预期所有其他链接器(可能除了 sso 之一)将在未来的 GWT 版本中被弃用,并最终被完全删除;而std 链接器将被xsiframe 链接器替换为默认链接器。
【讨论】:
xsiframe 链接器(请参阅我回答的最后两段),它支持代码拆分。