Javascript 设计AJAX应用程序的推荐方法
这是一个相当普遍的问题,但我在Flex工作了几年,对纯web开发没有太多经验 我的问题是:如果您需要构建AJAX应用程序,您会选择以下两种方法中的哪一种:Javascript 设计AJAX应用程序的推荐方法,javascript,ajax,model-view-controller,backbone.js,Javascript,Ajax,Model View Controller,Backbone.js,这是一个相当普遍的问题,但我在Flex工作了几年,对纯web开发没有太多经验 我的问题是:如果您需要构建AJAX应用程序,您会选择以下两种方法中的哪一种: 经典的服务器端MVC,其中控制器返回与模型数据一起提供的视图。视图可以是完整视图,也可以是部分视图。基本上,只有少量的完整视图可以作为容器使用,javascript将帮助以异步方式使用部分HTML视图填补空白。这种方法是传统web开发的一步,因为javascript只用于维护总体控制和用户交互 一个成熟的js应用程序,如使用Cappuccin
<script type='text/html' id='foo-template'></script>
在我的服务器端模板中,我将把这些脚本标记作为片段拉入它们自己的文件中,因此我仍然得到文件分离(rails语法)
'templates/foo.html.erb'>
我更喜欢使用jammit,并将客户端模板放在以.jst结尾的单独文件中,但第二种方法可以在任何地方使用,并且您仍然可以获得大部分相同的好处。我是一个移动Web应用程序的架构师,该应用程序拥有100000个用户,其中20000个用户同时在线 对于这种应用(例如有限的带宽),我认为2是唯一的选择 所以服务器端只是一组数据服务,而客户端使用纯AJAX RPC。 在本例中,我们使用包含所有内容的单个静态index.htm文件。此外,我们使用HTML5清单减少启动时脚本/样式/图像到服务器的往返。此外,还使用localStorage进行应用程序状态持久化和缓存 从MVC开始:你可以使用任何对你来说最方便的东西。模板本身非常紧凑,因为它们不包含任何数据,所以(在我们的例子中)可以全部包含它们 是的,这样一个应用程序的体系结构需要事先经过深思熟虑#1选项不太重要-入门级较低
我不知道您的目标平台是什么,但正如我所说的,2可能是移动设备的唯一选择。我推荐第二种方法。您已经熟悉的第二种方法(厚客户端瘦服务器方法)是越来越多的现代开发人员的首选方法,因为小部件的呈现和管理是在客户端完成的,这节省了服务器上的计算和带宽开销。另外,如果您有一个复杂的小部件管理案例,那么为小部件使用服务器端代码可能会变得越来越复杂和难以管理。 你指出的缺点是: 视图模板必须在开始时加载,初始 应用程序是自举的,因此javascript可以布局标记 根据数据 这是不对的。您可以根据需要通过ajax动态加载静态模板,然后使用javascript将其呈现到完整的小部件中。 例如,如果您有一个带有图像编辑器组件的imagegallery,则在用户实际选择编辑图像之前,您可能不会加载图像编辑器所需的文件(包括图像、模板和小部件渲染代码) 使用ScriptLoader(例如requirejs、labjs),您最初只能加载一个中小型引导脚本,然后根据需要动态加载其余脚本 此外,功能强大且成熟的服务器端小部件库仅适用于java后端(如vaadin)。如果您使用的是php、python或ruby后端,那么编写自己的服务器端ui框架可能是一项严重的过度工作。使用客户端服务器端的javascript ui框架(如dojo、qooxdoo等)更方便 您似乎倾向于客户端mvc框架。这是一种很好的方法,但双mvc体系结构(在服务器和客户机上)通常会导致代码重复
var template = $('#foo-template').html();
<%= render :partial => 'templates/foo.html.erb' %>