2

这是一个菜鸟问题,但我真的很想问出来。我知道node.js可以处理服务器端脚本并为 Web 应用程序“提供结构”,但是当我已经知道并处理所有服务器backbone.js时,为什么还要首先学习它们使用 .jQuery的侧面逻辑Django。如果我使用backbone.jsnode.js

4

2 回答 2

12

对此的简单概述答案是,Backbone 为您提供了前端 javascript 代码结构。当我说结构时,我的意思是您的代码将以系统、标准、一致的方式在您的应用程序中实现最常见的操作,并且更有条理,以便您和可能的其他人可以清楚地理解复杂代码的不同部分。它适用于以 RESTful 方式从服务器发回的任何 JSON 数据,因此您的 Django 技能将得到充分利用。

您没有理由不能(仅)在您的项目中使用 jQuery,(Backbone 实际上使用 jQuery 进行 DOM 操作以及 AJAX 调用)但是如果您曾经看到代码是如何与代码的其他部分蠕动并交织在一起的,混合与数据相关的视图/演示部分......如果您曾经为必须调试此类代码或扩展此类代码或不得不从头开始重建所有应用程序所需的基本功能而苦苦挣扎。 .. 或者,如果你发现自己做事前后不一,你就会开始意识到一点帮助是件好事。;-)

骨干。

我可能是错的,但我只是想冒险一下,您可能不熟悉 MVC 框架之类的东西。如果您知道 MVC 框架是什么(更重要的是,它对开发有什么好处),那么 Backbone 的优势将显而易见。Backbone 是一种 MVC。

特别是对于较大的项目,将数据 > 从表示 > 从控制逻辑分离在代码维护方面变得至关重要。即模型、视图、控制=MVC。您可以将 Backbone 视为客户端 javascript 的 MVC 框架。如果您掌握技术知识,它实际上是 MVC 的一种变体(更像 MV*),但要点是相同的。随着 Javascript 性能的提高和应用程序变得越来越复杂和庞大,这样的框架对于许多开发人员来说变得越来越必要。虽然您有其他选项(Knockout.js 等)可以做类似的事情,但 Backbone 在人群中是一个非常不错的选择。

要回答您的其他一些子问题:

Backbone 将与您的 Django 服务器设置很好地配合使用。Backbone 使用 JSON 来回处理所有数据。例如,使用 Backbone - 您的基本数据对象就是所谓的模型。使用 JSON 哈希创建模型。例如,用户模型可能采用 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>

在遍历和操作 DOM 时,Backbone 使用了所有 jQueries 产品。您还可以使用您拥有的所有其他 javascript 技能大量自定义 Backbone。它是一种框架,可让您自由地做出自己的选择并对其进行扩展。底线是,如果您已经了解 jQuery,Backbone 将不会感到限制。作为另一层抽象,Backbone 使许多繁琐的事情变得简单得多。这是一个不断发展的社区,一旦你使用它,你可能不想在没有它的情况下重新编码。我声称的好处并不是 Backbone 独有的。肯定还有其他一些聪明的框架。但我希望,你明白为什么我认为你应该试一试。如果这个长长的解释/故事加上例子没有'

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

于 2012-09-01T07:09:08.707 回答
1

它们都是不同的东西。如果您已经知道如何使用 Django 和 jQuery,您可能不需要使用它们来提高速度。但它们是新的很酷的东西,所以你至少可以玩弄它们。

于 2012-08-31T23:06:31.597 回答