javascript - jQuery 小部件开发 - 我可以使用 MVC 模式吗?

标签 javascript model-view-controller jquery-ui

我一直在使用 knockoutjs 和 backbone 创建单页 JavaScript 应用程序。我使用 backbone 模型和 knockout View 模型,但我也有很多 UI 控件,我使用 jQuery UI 小部件工厂创建了这些控件。

我的问题是如何更好地构建我的 jQuery 小部件中的代码。像 knockout/backbone/ember 这样的框架可以很容易地在主应用程序中实现 MVC 类型模式,但是当涉及到小部件开发时,我最终会有一大堆输出和操作 DOM 元素的代码。我仍然可以测试它,因为 jquery 使查询 DOM 变得容易,但代码非常难看。理想情况下,我希望在我的小部件中也有一个 MVC 模式。

是否有任何旨在帮助解决此问题的库或框架?

最佳答案

简而言之:

  • 尽可能将小部件保留为 MVC 的 View 部分。尽可能将数据委托(delegate)出去。
  • 在编写您的小部件时,不要倾向于将它放在您的应用程序中。将小部件视为一个岛屿。
  • 使用事件处理从小部件传出的数据。不要查询它。
  • 使用"Tell, Don't ask"小部件中的模式以保持 Controller 清洁

理想情况下,JQuery 是整个应用程序的 MVC 模式的 V 部分。如果您需要在用户与小部件交互时保留和返回数据,那么事件处理就是您的最佳选择。使用 "Tell, don't ask"小部件中的开发模式,这样您就不必查询小部件的状态来做某事。这应该可以解决很多问题。

关于javascript - jQuery 小部件开发 - 我可以使用 MVC 模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10192941/

相关文章:

c# - 通过 MVC 将数据写入数据库的最佳方法是什么?

php - Laravel - 如何在没有实例化对象的情况下调用静态函数

javascript - jQuery UI 可对整个 div 进行排序

javascript - 使用 deepWithDataAndEvents = true 克隆的可拖动无法再次拖动

javascript - IONIC 1 XMLHttpRequest 无法加载预检响应具有无效的 HTTP 状态代码 405

javascript - 使用 event.target.id 从 bind(this) 获取 id 时意外使用 'event' no-restricted-globals

php - jQuery AJAX 在我的 PHP MVC 上运行不佳

jquery - 如何导入 .js 文件

javascript - 多个覆盖 'keyup' 事件

javascript - Jquery 工具提示不适用于文本/模板