0

我是学习 MVC 的新手。

我想知道是否有启发式(非编程方式)来划分和决定前端而不是后端的逻辑,特别是在使用像backbone.js这样的前端库时。

也就是说,backbone.js 之类的库将数据与 DOM 元素分开,这对于创建复杂的客户端逻辑很有用,而这些逻辑可能曾经在服务器端执行。

提前感谢乔伊

4

3 回答 3

2

执行模型 - 视图 - 控制器的“经典”方式是将所有三个都放在服务器上。HTML 和一些 JS 的 View 层输出然后由浏览器渲染。

Rails 就是一个很好的例子。

“新酷”的方式是将浏览器作为主计算引擎,后端服务器services通过 API 提供。

在这种情况下,模型、视图和控制器软件都在客户端上运行(作为 Javascript 或咖啡脚本)。Backbone 通常是浏览器端解决方案的一部分,但它也有替代方案,例如 spin、angularJS 等。

在后端服务器上,您运行 dbms 和良好的 API 系统。在 Ruby/Rack 上构建了一些很好的框架。请参阅 Daniel Doubrovkine 在code.dblock.org上的帖子您在这里有很多选择。

MVC 在客户端的优势

  • 为用户提供响应式用户界面
  • 酷炫的 Ajaxy 单页效果
  • 单页 webapp 可以为用户提供比常规网站更快的 UI
  • 良好的架构,专门构建 iPhone/Android 应用程序的推动者
  • 根据应用程序,可用于创建无需网络连接即可工作的独立 Web 应用程序。
  • 这就是现在许多酷孩子正在做的事情

缺点

  • 需要决定旧浏览器、IE 等的方法
  • 使内容可用于搜索引擎可能很棘手。可能需要仅用于搜索引擎的影子网站
  • 测试可能是一个挑战。但是请参阅包含可测试性重点的新库,例如 AngularJS
  • 这种方法涉及更多的软件:编写和测试需要更长的时间。

选择

由你决定。决定取决于您的时间框架、资源、经验、需求等。没有必要使用骨干或类似的东西。这样做是一种权衡(见上文)。不使用它总是会更快/更容易,但没有它(或类似的)可能无法实现您的目标。

您可以仅使用 Rails 或带有附加库或其他 MVC 解决方案的 PHP 构建出色的 MVC 应用程序。

于 2012-05-07T21:50:47.707 回答
1

我认为您在非编程意义上使用启发式这个词对吗?即你用它来表示“经验法则”的意思?

根据经验:

  • 您希望服务器出于 UX 和 SEO 的原因呈现初始页面加载。
  • 出于同样的原因,您还可以让服务器呈现后续的 AJAX 部分页面加载。配置文件以查看哪个更快:让服务器通过网络渲染和传输额外数据(标记)与发送更简洁的有效负载(使用 JSON)并让客户端渲染它。需要权衡取舍,特别是如果您考虑到移动设备可能在客户端上的渲染速度会更慢,但是再次有移动设备的互联网连接速度较慢......
  • 像任何客户端-服务器架构一样:您希望客户端执行需要客户端快速响应的操作,然后将一些异步操作发送到执行相同任务的服务器。

结论是模糊的,但真实的:这都是关于权衡的,你必须决定你的产品需要什么。

于 2012-05-07T21:34:37.060 回答
0

我首先想到的两件事是安全和搜索..

  • 您将始终希望限制服务器上的读/写访问。
  • 在大多数情况下,您会希望搜索功能尽可能接近数据。
于 2012-05-08T10:00:34.560 回答