首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javaScript客户端代码的替代“架构”方法?

javaScript客户端代码的替代“架构”方法?
EN

Stack Overflow用户
提问于 2008-08-28 15:13:58
回答 6查看 1.4K关注 0票数 19

您的javaScript代码是如何组织的?它是否遵循像MVC这样的模式,或者其他什么?

我从事一个副业已经有一段时间了,我做得越深入,我的网页就越能变成一个功能齐全的应用程序。现在,我坚持使用jQuery,然而,页面上的逻辑正在增长到需要某种组织,或者说我敢说,“架构”的程度。我的第一种方法是"MVC-ish":

’是一个JSON树,它通过helper进行了扩展

  • 视图是DOM加上调整它的类
  • 控制器是连接事件处理和启动视图或模型操作的对象

然而,我非常感兴趣的是,其他人是如何构建更丰富的javaScript应用程序的。我对GWT或其他面向服务器的方法不感兴趣……就在接近"javaScript +“的时候

注意:前面我说过javaScript“不是真正的OO,不是真正的功能性”。我认为这分散了所有人的注意力。这么说吧,因为javaScript在很多方面都是独一无二的,而且我来自一个强类型背景,所以我不想强制使用我所知道的用非常不同的语言开发的范式。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-08-28 15:29:52

..but Javascript有许多面向对象的方面。

请考虑以下内容:

var Vehicle = jQuery.Class.create({ 
   init: function(name) { this.name = name; } 
});

var Car = Vehicle.extend({ 
   fillGas: function(){ 
      this.gas = 100; 
   } 
});

我使用这种技术来创建具有自己状态的页面级javascript类,这有助于保持它的可控性(我经常确定可以重用的区域并将其放入其他类中)。

当您有自己的脚本要执行的组件/服务器控件时,但在同一页上可能有多个实例时,这也特别有用。这保持了状态的分离。

票数 7
EN

Stack Overflow用户

发布于 2009-08-22 20:37:05

对于组织和开发大型JS应用程序,JavaScriptMVC是一个很好的选择。

架构设计考虑得很周到。你可以用JavaScript做4件事:

  1. response to a event
  2. Request Data / Manipulate ( ajax )
  3. 将特定于域的信息添加到ajax响应中。
  4. 更新DOM

JMVC将它们划分为模型、视图、控制器模式。

首先,也可能是最重要的优势,是控制器。控制器使用事件委托,因此您只需为页面创建规则,而不是附加事件。它们还使用控制器的名称来限制控制器工作的范围。这使得你的代码是确定性的,这意味着如果你在一个'# todos‘元素中看到一个事件发生,你就知道必须有一个todos控制器。

$.Controller.extend('TodosController',{
   'click' : function(el, ev){ ... },
   '.delete mouseover': function(el, ev){ ...}
   '.drag draginit' : function(el, ev, drag){ ...}
})

接下来是模型。JMVC提供了一个强大的类和基本模型,使您可以快速组织Ajax功能(#2),并使用特定于域的功能包装数据(#3)。完成后,您可以使用控制器中的模型,如下所示:

Todo.findAll({after: new Date()},myCallbackFunction);

最后,一旦你的待办事项回来了,你必须展示它们(#4)。这就是您使用JMVC视图的地方。

'.show click' : function(el, ev){ 
   Todo.findAll({after: new Date()}, this.callback('list'));
},
list : function(todos){
   $('#todos').html( this.view(todos));
}

在'views/todos/list.ejs‘中

<% for(var i =0; i < this.length; i++){ %>
   <label><%= this[i].description %></label>
<%}%>

JMVC提供的不仅仅是架构。在开发周期的任何部分,它都可以帮助您:

  • Code generators
  • Integrated Browser、Selenium和Rhino Testing
  • Documentation
  • Script compression
  • Error reporting
票数 4
EN

Stack Overflow用户

发布于 2008-08-29 19:58:56

MochiKit非常棒--可以说,就js库而言,它是我的最爱。但我发现,虽然MochiKit有非常丰富的语法,但我对它的感觉远不如Prototype/MochiKit或jQuery让我觉得舒服。

我认为如果你知道或者喜欢python,那么MochiKit对你来说是一个很好的工具。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档