JavaScriptMVC-独立逻辑
我目前在Javascript中使用我自己的MVC框架设置,但我对应该将HTML事件处理程序放在哪里感到有点困惑 像click/mouse/focus事件之类的,可以将此事件逻辑附加到控制器中 现在,我有这样的想法:JavaScriptMVC-独立逻辑,javascript,model-view-controller,Javascript,Model View Controller,我目前在Javascript中使用我自己的MVC框架设置,但我对应该将HTML事件处理程序放在哪里感到有点困惑 像click/mouse/focus事件之类的,可以将此事件逻辑附加到控制器中 现在,我有这样的想法: Some-module.model.js Some-module.view.js(我在其中附加我的用户事件,如鼠标事件、焦点等) Some-module.view.tpl(这是HTML放在脚本标记和迷你模板引擎之间的地方) Some-module.controller.js 那么
- Some-module.model.js
- Some-module.view.js(我在其中附加我的用户事件,如鼠标事件、焦点等)
- Some-module.view.tpl(这是HTML放在脚本标记和迷你模板引擎之间的地方)
- Some-module.controller.js
那么,将视图的单击处理程序附加到控制器中是否明智?还是这种做法不好?将javascript和所有DOM操作保存在
js
文件中
顺便说一句:
Controller
在MVC中有点像关键字
,您可能需要将js文件名更改为一个没有控制器的名称。将事件处理程序放在控制器类中并不是一个坏做法。事实上,JavaScriptMVC库使用一个控制器类来组织所有事件处理程序(尽管这不是控制器类的唯一用途)
将事件处理程序放在视图类中也是一种不错的做法,因为Backbone.js使用它来组织与特定DOM元素关联的所有事件处理程序 有很多前端MVC设计模式,并且没有一个样板可以完全适合每种情况 好的,谢谢大家 我要做的是: /控制器/ ->some-module.js /模型/ ->some-module.js (保存数据、跟踪状态、检索数据) /观点/ ->some-module.js (附加DOM事件、DOM操作将检索模板TPL文件并使用它) /模板/ ->some-module.tpl (脚本标记中的实际视图类似于Mustach或Jquery模板,允许我在模板中使用变量标记) 这将保持我的应用程序的组织和模块化
我可以考虑在控制器内部处理DOM事件,但我也需要一个位置来执行DOM操作(更改类名,改变内层HTML值等),并且我认为控制器不是正确的方法。
我认为这正是视图控制器类所适用的,是的。但是控制器是一个JS文件。。。控制器不关心如何控制与视图的交互?我将“控制器”保留在文件名中,很高兴看到我在开发时编辑的是什么类型的文件。部署站点时,所有JS文件将自动合并。但是“将所有DOM操作保存在JS文件中”是什么意思呢?@barry。比如$('.foo').addClass('bar').val('a value')代码>或$('#foo')。更改()
或$('#foo').hide()
etc'@gdoron:DOM操作进入视图部分,对吗?和附加单击事件,也在视图内?在这种情况下,我有两个视图,一个模板,一个用于附加用户事件和DOM操作?@barry。一两个文件并不重要。我建议将它放在视图中的js
文件中。不是直接在视图中。