Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单页JavaScript web应用程序的体系结构?_Javascript_Design Patterns_Web Applications_Architecture_Singlepage - Fatal编程技术网

单页JavaScript web应用程序的体系结构?

单页JavaScript web应用程序的体系结构?,javascript,design-patterns,web-applications,architecture,singlepage,Javascript,Design Patterns,Web Applications,Architecture,Singlepage,一个复杂的单页JS web应用程序应该如何在客户端构建?具体地说,我很好奇如何根据模型对象、UI组件、任何控制器和处理服务器持久性的对象清晰地构造应用程序 MVC一开始似乎很适合。但是,对于嵌套在不同深度的UI组件(每个组件都有自己对模型数据的作用/反应方式,每个组件都生成自己可能直接处理或不直接处理的事件),MVC似乎无法干净地应用。(如果不是这样,请纠正我。) -- (提出了两个使用ajax的建议,这显然是除了最简单的单页应用程序之外的任何应用程序所需要的。)我会选择看看Ben非常犀利,如果

一个复杂的单页JS web应用程序应该如何在客户端构建?具体地说,我很好奇如何根据模型对象、UI组件、任何控制器和处理服务器持久性的对象清晰地构造应用程序

MVC一开始似乎很适合。但是,对于嵌套在不同深度的UI组件(每个组件都有自己对模型数据的作用/反应方式,每个组件都生成自己可能直接处理或不直接处理的事件),MVC似乎无法干净地应用。(如果不是这样,请纠正我。)

--


(提出了两个使用ajax的建议,这显然是除了最简单的单页应用程序之外的任何应用程序所需要的。)

我会选择看看Ben非常犀利,如果你在他的博客上翻找,他有一些关于CorMVC是如何组合起来的以及为什么要组合起来的好帖子。

你可以使用javascript MVC框架来构建应用程序:

  • ExtJS框架,单页应用程序,每个组件定义在单独的JS文件中,按需加载
  • 每个组件都会联系自己的专用web服务(有时不止一个),将数据提取到ExtJS存储或专用数据结构中
  • 渲染使用标准的ExtJS组件,因此我可以将存储绑定到网格,从记录加载表单
只需选择一个javascript框架,并遵循其最佳实践。我最喜欢的是ExtJS和GWT,但不是YMMV

不要为此推出自己的解决方案。复制现代javascript框架所需的工作量太大了。适应现有的东西总是比从头开始构建要快。

的MVC架构是最优雅的IMO。我从中学到了很多。我还发现NicholasZakas在研究客户端架构选项方面很有帮助

另外两个小贴士

  • 我发现在单页web应用程序中,视图、焦点和输入管理是需要特别注意的领域
  • 我还发现,将JS库抽象出来是很有帮助的,让您可以改变对所用内容的看法,或者在需要时进行混合和匹配

  • 我目前正在开发的web应用程序使用JQuery,我不建议将其用于任何大型单页web应用程序。大多数框架,如Dojo、yahoo、google和其他框架在其库中使用名称空间,但JQuery不使用名称空间,这是一个显著的缺点

    如果你的网站是小的,那么JQuery就可以了,但是如果你想建立一个大的网站,那么我建议你看看所有可用的Javascript框架,然后决定哪一个最符合你的需要

    我建议将MVC模式应用于javascript/html,javascript的大部分对象模型可能都可以作为json来完成,您可以通过ajax从服务器返回json,javascirpt使用json来呈现html


    我建议您阅读《Ajax在行动》一书,因为它涵盖了您需要了解的大部分内容。

    备选方案:查看


    在JavaScript中思考,但在服务器中使用相同的DOM API在Java中编写相同的代码,由于用户界面和数据在一起,在服务器上管理应用程序更容易,无需定制客户端/桥接器。

    或者看看我在几个单页应用程序中使用的情况,取得了巨大成功。

    Nicholas Zakas的演示文稿由Dean分享,这是一个非常好的开始。有一段时间我也在努力回答同样的问题。在做了两个大规模Javascript产品之后,考虑将学到的知识作为参考体系结构共享,以防有人需要它。看看:

    它解决了常见的Javascript开发问题,例如:

    • 解决方案结构
    • 创建复杂的模块层次结构
    • 自包含的UI组件
    • 基于事件的模块间通信
    • 路由、历史记录、书签
    • 单元测试
    • 本地化
    • 文档生成

    等等。

    最好看看其他框架的示例用法:

    展示了许多SPA框架。

    允许您创建单页应用程序。还允许您将HTML、CSS(SASS)、JavaScript写入单独的文件,并最终将它们捆绑到一个输出文件中

    Question - What makes an application complex ? 
    
    答案-在问题本身中使用“复杂”一词。因此,一个共同的趋势是从一开始就寻找一个复杂的解决方案

    Question - What does the word complex means ?
    
    回答-任何未知或部分理解的内容。即使在今天,引力理论对我来说仍然很复杂,但对1655年发现它的艾萨克·牛顿爵士来说却不复杂

    Question - What tools can I use to deal with complexity ?
    
    答案-理解和简单

    Question - But I understand my application . Its still complex ?
    
    答案——三思而后行,因为理解和复杂性并不共存。如果您了解一个巨大的应用程序,我相信您会同意,它只是小型和简单单元的集成

    Question - Why all of the above philosophical discussion for a question on 
               Single Page Application (SAP)?
    
    答案——因为

    ->SPA不是一种新发明的核心技术,我们需要为应用程序开发中的许多事情重新发明轮子

    ->这是一个由web应用程序更好的性能、可用性、可扩展性和可维护性需求驱动的概念

    ->这是一种全新的设计模式,因此将SPA理解为一种设计模式对于做出有关SPA架构的明智决策有很大帮助

    ->在根级别上,没有SPA是复杂的,因为在理解了应用程序和SPA模式的需求之后,您将意识到您仍然在创建应用程序,这与您以前创建应用程序的方式基本相同,只是在开发方法中进行了一些修改和重新安排

    Question - What about the use of Frameworks ?
    
    答案-框架是一些常见的识别和通用模式的锅炉板代码/解决方案,因此它们可以基于
    Question - Can you suggest one of the many approaches to SPA architecture ?