这是一个noob问题,但我真的想问出来。我知道node.js
可以处理服务器端脚本,backbone.js
“给网络应用程序提供结构”,但为什么我要学习它们首先,当我已经知道jQuery
并使用Django
处理所有服务器端逻辑时。如果我使用backbone.js
或{{1},我是否可以提高处理速度}
答案 0 :(得分:12)
简单的概述回答是Backbone提供了前端的javascript代码结构。当我说结构我的意思是你的代码将以一种系统的,标准的,一致的方式在你的应用程序中实现最常见的操作,并且更加有条理,以便你和其他人可以清楚地理解复杂代码的不同部分。它适用于以RESTful方式从服务器发回的任何JSON数据,因此您的Django技能将得到充分利用。
没有理由不能为你的项目使用jQuery(仅限)(Backbone实际上使用jQuery进行DOM操作以及AJAX调用)但是如果你曾经看到代码如何蠕变并与其他代码交织在一起代码的一部分,混合与数据相关的视图/表示的部分...如果您一直在努力调试此类代码,或者扩展此类代码,或者必须从头开始重建,所有应用程序都需要基本功能...或者如果你发现自己做事情不一致,你就会开始意识到一点点帮助就好了。 ; - )
骨干。
我可能错了,但我只是想抓住你可能不熟悉MVC框架之类的东西。如果您知道MVC框架是什么(更重要的是,它对开发有何益处)那么Backbone的优势将是显而易见的。 Backbone是一种MVC。
特别是对于较大的项目,分离数据>来自演示>来自控制逻辑在代码维护方面变得至关重要。也就是说,Model,View,Control = MVC。您可以将Backbone视为客户端javascript的MVC框架。它实际上是MVC的变体(更像MV *),如果你获得技术但要点是相同的。随着Javascript性能的提高和应用程序变得越来越复杂,大型,这样的框架对于许多开发人员来说变得越来越必要。虽然你有其他类似的选择(Knockout.js等),但Backbone在人群中是一个非常甜蜜的选择。
回答其他一些子问题:
Backbone可以很好地与您的Django服务器设置配合使用。 Backbone使用JSON来回传递所有数据。例如,使用Backbone - 您的基本数据对象就是所谓的模型。使用JSON哈希创建模型。例如,User模型可能采用JSON:
{"user":"Rajat", "username":"backboneLearner"}
使用Backbone模型而不仅仅是将它作为常规JS对象的优点是模型已经内置了许多便利和细节。让我们使用一个例子:
// Define a Model
var User = Backbone.Model.extend({
defaults: {
"user":undefined,
"username":undefined
},
urlRoot: 'user'
});
// Instantiate a Model
var userModel = new User({
"user":"Rajat",
"username":"backboneLearner"
});
想要将其保存到您的服务器?
userModel.save();
自动为您拨打POST电话。没有长的ajax代码 - 已在后台为您完成。不喜欢我给你的用户名?让我们改变它。
userModel.save({"username":"coolguy"});
使用相同的save()
方法,Backbone更改了用户名属性并为您发出了PUT请求,而不是POST,因为它知道您已经保存了用户。 (保存的模型有你的Django服务器提供的id)Backbone说你的欢迎。
也许您希望在更改名称时更改DOM:
<div id="nameDiv">coolguy</div>
Backbone View对象负责此类内容。事实上,他们很好地玩模型。在你的视图中你可以做这样的事情。
// Create a listener for changes on your user model
this.userModel.on('change', this.updateNameDiv, this);
烨。 Backbone提供了各种各样的特殊事件,模型,集合和视图可以制作和收听。你不仅限于这些。你也可以自定义。
// This is the event handler declared in the view
updateNameDiv: function(model) {
this.$("#nameDiv").html(model.get('username'));
}
// Change userModel
userModel.set("username","superman");
就是这样。你的DOM现在看起来像这样。
<div id="nameDiv">superman</div>
Backbone在遍历和操作DOM时使用了所有jQueries产品。您还可以使用所有其他javascript技能大量自定义Backbone。它是一种框架,为您提供了很多自由来做出自己的选择并扩展它。最重要的是,如果您已经了解jQuery,Backbone将不会受到限制。作为另一个抽象层,Backbone使许多繁琐的事情变得更加简单。它是一个不断发展的社区,一旦你使用它,你可能不希望没有它回到编码。我声称的好处并不仅限于Backbone。肯定还有其他一些聪明的框架。但我希望,你能理解为什么我认为你应该尝试一下。如果这个冗长的解释/故事加上例子没有说服你,那么只是假装你被我对这个框架的热情所迷惑并给它一个机会。
有一个初学者TodoList教程,让大家都开始了。一种新的编程方式可能是一种转变,有时很难将其包裹起来,但如果你后悔,我会感到惊讶。
答案 1 :(得分:1)
他们都是不同的东西。如果您已经知道如何使用Django和jQuery,则不需要将它们用于速度。但它们是新的很酷的东西,所以你最好至少和它们一起玩。