jquery - Backbone .js和node.js与jQuery完全不同吗?

标签 jquery django node.js backbone.js

我知道node.js可以处理服务器端脚本,而且backbone.js“提供了结构”给web应用程序,但为什么我想在已经知道jQuery并使用Django处理所有服务器端逻辑的情况下首先学习它们呢?如果我使用backbone.jsnode.js

最佳答案

简单概述的答案是backbone给出了前端javascript代码结构。当我说structure时,我的意思是您的代码将以系统的、标准的、一致的方式在您的应用程序中实现最常见的操作,并且更加有组织,以便您和其他人能够清楚地理解复杂代码的不同部分。它可以很好地处理从服务器以restful方式发送回来的任何json数据,因此您的django技能将得到很好的利用。
没有理由不能(仅)在项目中使用jquery(backbone实际上使用jquery进行dom操作和ajax调用),但是如果您见过代码如何与代码的其他部分爬行和交织,混合与数据相关的视图/表示部分……如果你曾经在调试这些代码,或者扩展这些代码,或者从头开始重建这些应用程序所需要的基本功能时遇到过困难…或者,如果你发现自己做的事情前后不一致,你就会开始意识到,一点帮助是有点好的。;-)
骨干。
我可能是错的,但我只是想给你一个机会,你可能不熟悉mvc框架这样的东西。如果您知道mvc框架是什么(更重要的是,它如何有利于开发),那么主干网的优势将是显而易见的。主干网是一种mvc。
尤其是在大型项目中,将数据>从表示>从控制逻辑中分离出来对于代码维护至关重要。也就是说,model,view,control=mvc。您可以将backbone看作客户端javascript的mvc框架。这实际上是mvc的一个变体(更像mv*),如果你得到了技术,但要点是一样的。随着javascript性能的提高和应用程序变得越来越复杂、庞大,这样的框架对于许多开发人员来说变得越来越必要。当你有其他类似的选择(knockout.js等)时,在人群中,脊梁骨是一个相当不错的选择。
要回答其他子问题:
骨干网将很好地与您的django服务器设置。backbone使用json来回处理所有数据。例如,对于主干网,基本数据对象就是所谓的模型。使用json散列创建模型。例如,用户模型可能采用json:

{"user":"Rajat", "username":"backboneLearner"}

使用主干模型而不只是将其作为常规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();

自动为您打电话。没有长的ajax代码-已经在后台为您完成了。不喜欢我给你的用户名?让我们改变一下。
userModel.save({"username":"coolguy"});

使用相同的save()方法,backbone更改了username属性,并为您发出put请求,而不是post,因为它知道您已经保存了用户。(保存的模型有django服务器提供的id)backbone表示欢迎。
也许您希望在更改名称时更改dom:
<div id="nameDiv">coolguy</div>

主干视图对象负责这类事情。事实上,他们和模特玩得很好。在你看来,你可以做这样的事情。
// Create a listener for changes on your user model
this.userModel.on('change', this.updateNameDiv, this);

是的。主干网提供了模型、集合和视图可以制作和侦听的各种特殊事件。你不局限于这些。你也可以做定制的。
// 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时使用所有jquery产品。您还可以使用所有其他javascript技能大量定制主干。它是一种框架,可以让你自由地做出自己的选择,也可以扩展自己的选择。底线是,如果您已经知道jquery,主干不会感到受到限制。作为另一个抽象层,backbone使许多乏味的事情变得简单得多。它是一个不断发展的社区,一旦你使用它,你可能不想回到没有它的编码。我所说的好处并不是只有骨气。肯定还有其他一些聪明的框架。但我希望,你能理解为什么我认为你应该尝试一下。如果这个冗长的解释/故事加上一些例子还不能让你信服,那就假装你被我对这个框架的热情所愚弄,然后试一试。
有一个初级的todolist教程,让每个人都开始。一种新的编程方法可能是一种转变,有时很难让人理解,但如果你后悔的话,我会很惊讶。

关于jquery - Backbone .js和node.js与jQuery完全不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222723/

相关文章:

javascript - 适配textarea max word插件

python - django和python的manage.py runserver执行错误

javascript - 散列电子邮件(或用户名)以存储在 Redis 散列桶中

javascript - Heroku 上的 Discord 机器人抛出错误 : agent ? ?= new https.Agent

javascript - D3 可折叠力布局混淆了 child 和 parent

javascript - 使用 jQuery 的 $.load() 函数在请求正文中发送对象

javascript - 不确定 .on() 方法

python - 带时区的时间戳,使用 django ORM 未知

django - 自定义 Tastypie 的 URL Conf

node.js - serverless-offline 可选路径参数