像Backbone.js这样的JavaScript MVC框架是用于为前端添加结构的。
这在构建[越来越流行的]单页JavaScript应用程序(SPJA)时最有用。如果您大量使用不侵入式JavaScript,则可能会进行相当数量的ajax以获取动态内容,以避免在用户上刷新页面。 SPJA将其提升到更高层次,使用户可以访问应用程序的所有区域而无需刷新页面。没有MVC框架提供的结构,客户端代码很快就会失去控制。
你有没有穿着西装去面试?同样的道理。
如果雇主认为前端开发者整天都在编写这样的代码,那么他们不会愿意支付 $95K/年的薪水:
form1.user_name.value = 'John Doe';
form1.user_name.onclick = function() { form1.user_name.value = ''; }
但是,如果你开始谈论MVC、node、Angular、backbone、AJAX、RESTful或JSON等技术,他们认为你是计算机科学的前沿人物。
PHP框架也是如此。任何一位年薪4万美元的CRUD应用程序编写者都可以整天写这些:
$user_name = trim(strtolower($user_name));
echo 'Your name: ' . $user_name . '<br/>';
但是,如果你开始提到MVC、Yii、Laravel、Symfony或Zend……就像穿上带补丁的斜纹布外套,手持“年度教授”咖啡杯。
我认为这个框架更适用于构建复杂的JS应用程序。使用ajax来更新/保存数据。例如,MVC框架可以更轻松地构建一个JS计算器应用程序。以上仅为个人见解。
有些应用架构师只想在服务器中拥有数据层功能,而在客户端中使用轻量级的Web服务接口。在这种情况下,在客户端中使用MVC架构是很有用的。
最终取决于你想把控制器和视图功能放在哪里。如果你想将它们全部放在服务器上,可以使用Rails,而不需要任何AJAX。在服务器上拥有模型层能让你在服务器中编码复杂的关系、视图和验证。它能让你的控制器响应不同的数据格式(例如xml、html、json)。并且它允许你使用ERB或HAML来控制视图。
然而,在许多情况下,你可能想要将处理卸载到客户端上。在这种情况下,你可能想要将视图处理移动到客户端(例如使用AJAX)。或者你可能想让客户端确定是否呈现HTML、XHTML、HTML5或其他内容。或者你可能想要在客户端使用一些本地存储来缓存数据。或者你可能想要在浏览器中进行数据验证和视图组合。
有些应用架构师只想在服务器中拥有数据层功能,并使用轻量级的Web服务接口。在这种情况下,使用MVC架构在客户端是明智的,因为你最终需要处理模型层问题,如验证、复杂视图、数据过滤,控制器层问题,例如视图格式决策,以及视图层问题,如布局、渲染和样式。
我们使用Backbone.is来构建单页应用程序(SPA),有点像Gmail。