MVP模式与Javascript框架?
有人能够用javascript框架实现MVP模型吗?我很难弄清楚如何让presenter->view从服务器代码转换为javascript。我有一些想法,但有点粗俗,我想看看其他人在做什么。查看。它们还有JavaScript的端口。另一个,对于jQuery用户:MVP模式与Javascript框架?,javascript,mvp,Javascript,Mvp,有人能够用javascript框架实现MVP模型吗?我很难弄清楚如何让presenter->view从服务器代码转换为javascript。我有一些想法,但有点粗俗,我想看看其他人在做什么。查看。它们还有JavaScript的端口。另一个,对于jQuery用户: 需要注意的是,ExtJS自4.0版以来也支持MV(x)模式,我将以ExtPerson的身份提到它。与大多数框架一样,他们也将其称为“MVC”(正如JS世界中的大多数人所看到的,与TodoMVP相反)。然而,从实用的角度来看,Ext中有工
需要注意的是,ExtJS自4.0版以来也支持MV(x)模式,我将以ExtPerson的身份提到它。与大多数框架一样,他们也将其称为“MVC”(正如JS世界中的大多数人所看到的,与TodoMVP相反)。然而,从实用的角度来看,Ext中有工具来实现模式的C/P部分,使其最适合您的需要。模式是有用的,但和大多数东西一样,如果以教条的方式对待,它会限制你的思维。谷歌GWT似乎在使用MVP:
请访问查看angular project,并随时向邮件组询问任何问题 它的设计目的是与jQuery配合使用。
对于编写可测试的MVC JS应用程序非常有用。看看哪一个是用于网页的MVVM框架。它提供了一个非常漂亮且易于扩展的框架,用于以松散耦合的方式链接模型和视图。MVP的主要目标是解耦代码中的不同方面。通常,在JavaScript中,有三个主要方面:
var model = new Model();
var view = new View();
var presenter = new Presenter(model, view);
请记住,Presenter是事件处理程序,因此总线应该了解它并将事件路由到它进行处理:
bus.registerHandler(presenter);
第一个事件是“init”,这意味着页面已加载且MVP对象已全部设置:
bus.init(); // call this yourself
这将触发演示者中的某些内容,如函数。我更喜欢。。。命名约定,在此示例中为presenter.onInit()。这样就有机会安装UI侦听器:
// in the Presenter
onInit: function() {
view.addSubmitListener();
view.addWhateverListener();
...
}
// in the View (using jQuery)
addSubmitListener: function() {
$("#submitButton").click(function() {
var formData = ...
bus.submit(formData); // publish an event to the bus
});
}
单击Submit按钮时,将调用bus.Submit(formData),并将其路由到处理程序--presenter.onSubmit(formData):
等等。。。整个技巧是将总线绑定到演示者,然后您就进入了循环
HTH我知道这个问题很古老,但我认为它值得在这里提及。我的票投给Backbone.js。即使docs说它是MVC,我也会说它是MVP
- 视图=html模板(jQuery.template)
- 模型=主干。模型
- PRESENTER=Backbone.View(视图tempate和如何将数据绑定到它之间的层,以及您可以做的更多事情),以及在呈现方法耦合视图(html模板)中可以使用的最佳方法或切换使用的方法
- 控制器=主干。控制器
最后一个音符。MVC或MVP中的V都可以从模板中构建,而无需对其进行编码。做一个好的HTML模板解析器,你就可以开始了:)相信我,约定是你的朋友。我们这里谈论的是MVP!不是MVC!我认为这个行业还没有为MVP做好准备。每个人都在努力掌握MVC。看看-一个全新的独立1kB(!)MVP微库,它拥有构建可扩展、模块化JavaScript应用程序所需的一切。还有一个完整的演示。正在搜索一些MVP框架的示例,并偶然发现了此链接,该链接可能对确定要使用的框架非常有用:
尽管MVC对客户端应用程序没有用处。我建议改为使用PAC模式。@Yanick:MVC和MVP非常相似,在这种情况下可以比较。为什么?我不是老学校“JS是魔鬼的工作人员”,但即使你有大量的客户端应用程序,我也看不到好处,但只是开销。“Boldewyn,如果你不是老学校,那么认为HTML5和JavaScript相互配合。如果你认为JS是“魔鬼的作品”,那么我认为你从未学过这种语言。诚然,Javascript可能会很快变得非常混乱,但一旦结构化,它就会非常强大和通用。另外,TraceMonkey(Firefox)和V8(Chrome)都非常高效,将来还会发布更快的引擎。我并没有提到越来越多的应用程序上线,并且更容易在服务器端执行客户端。如果你不是一个老派,你应该知道所有这些…@Yanick Rochon:事实上,JavaScript是我所知道的最可爱的语言。我的意思是,除了设计良好的服务器端MVP框架之外,我看不到JS MVP框架的好处。为什么要在浏览器中加载所有的东西,而你也可以在服务器端这样做?@Boldewyn,为什么是JS MVP?因为如果您将MVP放在服务器端,那么您就错过了MVP的概念:)有了MVP,您的模型严格地放在客户机上,而服务器仅用作“存储”促进者。通常,MVP在客户机上,而MVC在服务器上。实际上,您可以将它们结合使用,以便在客户端和服务器端都具有结构化代码
// in the Presenter
onSubmit: function(formData) {
model.postForm(formData, function(data) {
// handle the response
view.updateSomething(data);
});
}