backbone.js和node.js与jQuery完全不同吗?

Raj*_*ena 2 django jquery node.js backbone.js

这是一个noob问题,但我真的想要问出来.我知道node.js可以处理服务器端脚本并backbone.js为Web应用程序"提供结构"但是当我已经知道jQuery并处理所有服务器时,我为什么要首先学习它们使用端逻辑Django.Will我得到了处理速度什么的任何增加,如果我使用backbone.jsnode.js

jmk*_*142 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"}
Run Code Online (Sandbox Code Playgroud)

使用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"
});
Run Code Online (Sandbox Code Playgroud)

想将其保存到您的服务器?

userModel.save();
Run Code Online (Sandbox Code Playgroud)

自动为您拨打POST电话.没有长的ajax代码 - 已在后台为您完成.不喜欢我给你的用户名?让我们改变它.

userModel.save({"username":"coolguy"});
Run Code Online (Sandbox Code Playgroud)

使用相同的save()方法,Backbone更改了用户名属性并为您发出了PUT请求而不是POST,因为它知道您已经保存了用户.(保存的模型有你的Django服务器提供的id)Backbone说你的欢迎.

也许您希望在更改名称时更改DOM:

<div id="nameDiv">coolguy</div>
Run Code Online (Sandbox Code Playgroud)

Backbone View对象负责这类东西.事实上,他们很好地玩模型.在你的视图中你可以做这样的事情.

// Create a listener for changes on your user model
this.userModel.on('change', this.updateNameDiv, this);
Run Code Online (Sandbox Code Playgroud)

对.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");
Run Code Online (Sandbox Code Playgroud)

而已.你的DOM现在看起来像这样.

<div id="nameDiv">superman</div>
Run Code Online (Sandbox Code Playgroud)

在遍历和操作DOM时,Backbone使用所有jQueries产品.您还可以使用所有其他javascript技能大量自定义Backbone.它是一种框架,为您提供了很多自由来做出自己的选择并扩展它.最重要的是,如果您已经了解jQuery,Backbone将不会受到限制.作为另一个抽象层,Backbone使许多繁琐的事情变得更加简单.它是一个不断发展的社区,一旦你使用它,你可能不希望没有它回到编码.我声称的好处并不仅限于Backbone.肯定还有其他一些聪明的框架.但我希望,你能理解为什么我认为你应该尝试一下.如果这个冗长的解释/故事加上例子没有说服你那么只是假装你被我对这个框架的热情所迷惑并且给它一个机会.

有一个初学者TodoList教程,让每个人都开始.一种新的编程方式可能是一种转变,有时难以绕开,但如果你后悔,我会感到惊讶.

  • 来快速回答.留了小讲座. (5认同)