在GWT-land中,“链接器”和DFN代码拆分之间的关系是什么?为什么链接器需要支持codesplitting,为什么有些链接器不支持它呢?您如何选择应用程序应使用哪个链接器以及决定哪些因素?
答案 0 :(得分:12)
主要链接器(还有辅助链接器,但它们不参与此处)负责创建托管已编译JS代码的* .js或* .html文件,当然还有如何引导/加载它们进入浏览器。
一旦你知道这一点,很明显他们必须明确支持代码分割。
例如,xs
(跨站点)链接器将整个脚本包装在匿名函数中,因此它不会“污染全局范围”(技术也称为模块模式)。然后它不能动态地将一些其他脚本注入到可以访问其内部的页面中。 sso
(单脚本)链接器具有相同的限制。
std
(iframe)链接器将您的应用加载到动态创建的iframe中,该iframe用作沙箱:iframe的全局范围不是主机页面的全局范围。然后,它可以在iframe中动态注入一个脚本,该脚本可以访问已存在的所有内容(iframe的全局范围)。
但实际上,你不必选择你的应用应该使用哪个链接器:坚持使用xsiframe
(你必须明确激活它,但暂时是)。它结合了xs
链接器的跨站点友好性和std
链接器的iframe沙箱。
您可以期待在将来的GWT版本中弃用所有其他链接器(可能除了sso
之外),并最终完全删除;并且std
链接器将被xsiframe
链接器替换为默认链接器。