gpt4 book ai didi

knockout.js - 使用 Durandal 在一个页面中多个独立 SPA

转载 作者:行者123 更新时间:2023-12-03 07:45:05 27 4
gpt4 key购买 nike

我想在一个 HTML 页面(我们的旧应用程序)中托管两个或多个单页应用程序。这些应用程序应该位于页面完全不同的位置 - 因此我不能使用 durandal 组合作为顶部根“shell”并使用 ko compose 绑定(bind)进行合成。这些应用程序应该能够在它们之间进行通信(路由器/事件聚合器)。

是否可以使用 Durandal 及其路由器插件来完成这样的事情?最好的方法是什么?

我尝试使用多个 applicationHost 元素并使用不同的 vm/element 组合调用 app.setRoot(vm,transition, element),但没有成功。看来最后一个电话获胜了......

我还创建了关于 Durandal 谷歌群组的讨论:https://groups.google.com/forum/?fromgroups=#!topic/durandaljs/e6GclW0bEo0

最佳答案

不幸的是,确保应用程序完全独立的唯一方法是使用不同的文档 - iframe 或普通框架甚至不同的窗口。这是因为存在大量共享状态,并且虽然 Durandal 具有高度可配置性,但它具有许多单例点:

  • 大多数 durandal/* 组件都希望以单例方式工作;应用程序中的配置是共享的。应用程序上的订阅/事件是共享的。同样,默认模块查找规则也是共享的,因此需要使用特殊的“选择器”(即模块 ID 上的应用前缀)。
  • RequireJS 是单例;要求查找规则将被共享。
  • Knockout 是单例;添加绑定(bind)处理程序将在所有应用程序中共享。

因此,虽然可以创建一堆“协作”应用程序(想想“插件”),但每个应用程序都需要了解主机并小心避免冲突。还需要与模块路径(即每个应用程序名称的前缀)配合以提供相关的查找解析。

关于knockout.js - 使用 Durandal 在一个页面中多个独立 SPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15736038/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com