2

在使用 MVVM 进行 Web 开发时,我一直在尝试寻找一些关于如何处理应用程序范围元素的良好资源。我正在使用淘汰赛。

应用程序范围内的元素是指站点导航等元素。也许每个页面都有一个登录框、搜索框、页脚等。

这些应该进入单独的视图模型吗?还是应该从包含这些的基本视图模型中派生每个页面的视图模型?还是应该将这些属性一起排除在视图模型之外?

提前致谢。

4

1 回答 1

1

考虑像对待业务组件一样对待所有支持组件(菜单、页脚等)。此外,我建议每个 UI 组件都有单独的视图模型,无论 UI 组件的类型如何。这使您的组件高度松散耦合。

例如,菜单可能有自己的视图模型(不属于任何全局视图模型)。现在您可以使用 PubSub 库来实现发布者/订阅通知,以便在不同的 UI 组件(视图模型)之间进行松散耦合的通信,您的业务组件可以根据事件请求显示/隐藏自己。

但特别是为了实现一个菜单组件,我建议使用一个可以响应 URL 变化的路由器库(URL 的标签部分)。然后,当用户在主菜单(简单的锚标记)上导航时,您可以简单地更改 URL,您的组件将被路由器库激活/停用。这将使您可以添加书签并使用浏览器历史记录按钮。

查看http://boilerplatejs.org,它是大规模 JavaScript 开发的参考架构。它已经在它的示例应用程序上实现了上述所有功能。它使用 UrlController 根据 URL 更改激活/停用组件,而 DomController 用于将组件静态放置在 DOM 本身上(例如,用于菜单、页脚、标题)。它对大多数示例 UI 组件使用了 knockoutjs。

免责声明:我是 BoilerplateJS 的创始人

于 2012-09-10T12:52:29.377 回答