这是一个noob问题,但我真的很想问它。我知道node.js
可以处理服务器端脚本和backbone.js
“给结构”的Web应用程序,但为什么我想先了解他们,当我已经知道jQuery
并处理所有的服务器端逻辑使用Django
。如果我使用backbone.js
或node.js
backbone.js和node.js与jQuery完全不同吗?
回答
对此的简单回顾答案是Backbone提供了您的前端JavaScript代码结构。当我说结构时,我的意思是说你的代码将以一种系统,标准,一致的方式在你的应用程序中执行最常见的操作,并且更加有组织,以便你和其他人可以清楚地理解复杂代码的不同部分。它可以很好地处理任何以RESTful方式从服务器返回的JSON数据,因此您的Django技能将得到很好的使用。
没有理由不能为您的项目使用jQuery(仅限于)(Backbone实际上使用jQuery进行DOM操作以及AJAX调用),但是如果您曾经见过代码可以如何蠕变和交织代码的其他部分,混合与数据相关的视图/表示的部分......如果您曾经为了调试这些代码而苦苦挣扎,或者需要扩展这些代码,或者必须从头开始重建,那么您的所有应用程序的基本功能需要有...或者如果你发现自己做的事情不一致,你会发现有一点帮助是很好的。 ;-)
骨干。
我可能是错的,但我只是想借此机会,你可能不熟悉MVC框架之类的东西。如果您知道MVC框架是什么(更重要的是,它对开发有什么好处),那么Backbone的优势将显而易见。骨干是一种MVC。
特别是对于较大的项目,从代码维护角度来说,从控制逻辑中分离数据>从演示文稿中变得至关重要。即Model,View,Control = MVC。您可以将Backbone视为客户端JavaScript的MVC框架。它实际上是一个MVC的变体(更像MV *),如果你获得了技术,但其要点是相同的。随着Javascript性能的不断提高以及应用程序变得越来越复杂,对于许多开发人员来说,这样的框架变得越来越重要。当你有其他选择(Knockout.js等)做类似的事情时,Backbone在人群中是一个非常好的选择。
要回答你的一些其他的小问题:
骨干将与你的Django服务器设置很好地工作。 Backbone使用JSON来处理所有数据。例如,使用Backbone - 您的基本数据对象就是所谓的模型。模型是使用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();
自动为您进行POST调用。没有很长的ajax代码 - 已经在后台为您完成了。不喜欢我给你的用户名?让我们改变它。
userModel.save({"username":"coolguy"});
用同样的方法save()
,骨干改变用户名属性,为你做POST的PUT请求,而不是因为它知道你已经救了你的用户。 (保存的模型有一个由您的Django服务器提供的ID)Backbone表示欢迎。
也许你想在名称更改您的DOM改变:
<div id="nameDiv">coolguy</div>
骨干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时,主干使用所有的jQueries产品。您还可以使用您拥有的所有其他JavaScript技能大量定制Backbone。这是一种框架,可以让你自由地做出自己的选择并扩展它。底线是,如果您已经了解jQuery,Backbone就不会感到受到限制。作为另一层抽象,Backbone使得很多繁琐的事情变得简单得多。这是一个不断发展的社区,一旦你使用它,你可能不想在没有它的情况下返回编码。我声称的好处并非Backbone专有。那里肯定有其他一些聪明的框架。但我希望,你明白我为什么认为你应该试一试。如果这个长篇解释/故事加上例子并没有让你信服,那么只是假装你被这个框架的热情所愚弄,并给它一个镜头。
有一个初学者的TodoList教程,让每个人都开始。一种新的编程方式可能是一种转变,有时很难将头部包裹起来,但如果您后悔,我会很惊讶。
我会得到任何处理速度增加或什么东西它们都是不同的东西。如果你已经知道如何使用Django和jQuery,你不需要使用它们来获得速度。但他们是新的很酷的东西,所以你至少应该好好玩一玩。
是的,我同意。如果有的话,你的Django和jQuery技能将使Backbone更有趣,更有效,更易于学习。这对您的其他技能非常赞赏,特别是如果您有兴趣制作复杂的客户端大量应用程序。在学习Backbone时,您还将学习Backbone依赖的Underscore.js知识。非常非常方便的一组功能。 – jmk2142
- 1. 分页与backbone.js和node.js
- 2. Request.Url.Host与Request.Headers [“host”]完全相同吗?
- 3. 以下完全相同吗?
- 4. 与完全不
- 5. 我的jQuery插件与IE8完全不兼容吗?
- 6. CORS与Node.js和jQuery
- 7. 与ThemeRoller提供的完全不同的jQuery UI主题
- 8. Plug +和BackBone.js不同意
- 9. backbone.js + node.js - express.js
- 10. 从Backbone.js模型完全删除属性
- 11. 与node.js中和jQuery刮
- 12. jquery slideToggle不完全工作
- 13. 的JQuery的setInterval完全不
- 14. 完全不同的主页
- 15. 问题与jQuery和Backbone.js的3
- 16. MySQLi OOP与PDO完全相同吗?还是他们有分歧?
- 17. 命名与匿名功能:完全相同吗?
- 18. “If语句”与Java中的“Switch语句”完全相同吗?
- 19. 你能写一个与BGInfo完全相同的PowerShell脚本吗?
- 20. 应该==运算符与Equals()完全相同吗?
- 21. htmlentities与字符串htmlentities完全相同吗?
- 22. JQuery的自动完成与Node.js的表达和AJAX
- 23. Python C API与C++完全兼容吗?
- 24. SessionScope与ISession完全等价吗?
- 25. Node.js如何与tomcat不同
- 26. Boilerplate.js与Backbone.js有什么不同?
- 27. console.time()在node.js中安全吗?
- 28. '完全相同'的字符串不同
- 29. 与笨和Backbone.js的
- 30. 的Node.js和Backbone.js的资产版本
backbone是一个JS库,它可以很容易地与服务器上的Django类型模型进行通信。如果你想在你的前端代表一个django模型,并动态地处理更新,删除,创建等等,可能有数以千计的JS生成的对象,这对jQuery来说不是一个容易的项目吗? –
你的意思是说我可以将任何“Django(python)”对象传递给主干,我可以在前端使用类似“myObj.someattr”的方式访问“Django(python)”对象的所有属性?目前的做法是对“Django(python)”对象进行json化并将其传递给jQuery。 –
是的。如果您使用Django,Slim将JSON传回给客户端,那么Node.js中的一些RESTful框架 - Backbone将吞噬它并为您提供模型数据对象,这些对象具有许多内置的好东西(功能)。我'我非常偏爱我喜欢这个框架,所以我对我的回答有点疯狂。希望你能得到一些Backbone-y代码的一个小风味。 – jmk2142