Questions tagged «backbone.js»

Backbone.js是一个具有RESTful JSON接口的JavaScript框架,它基于模型-视图-呈现器(MVP)应用程序设计范例


15
bone.js的目的是什么?
我试图从它的站点http://documentcloud.github.com/backbone理解belish.js的实用程序,但是我仍然不太清楚。 有人可以通过解释它的工作原理以及对编写更好的JavaScript有什么帮助来帮助我吗?

21
JavaScript console.log导致错误:“不赞成在主线程上使用同步XMLHttpRequest…”
我一直在向控制台添加日志,以在不使用Firefox调试器的情况下检查不同变量的状态。 但是,在许多我console.log在main.js文件中添加的地方,我收到以下错误,而不是给我自己一些可爱的手写消息: 不赞成在主线程上使用同步XMLHttpRequest,因为它会对最终用户的体验产生不利影响。有关更多帮助,请访问http://xhr.spec.whatwg.org/ console.log我可以在代码使用中添加哪些替代品或包装,而不会导致此错误? 我“做错了”吗?

18
单独的REST JSON API服务器和客户端?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我将要从头开始创建一堆Web应用程序。(有关概述,请参见http://50pop.com/code。)我希望它们能够从许多不同的客户端进行访问:前端网站,智能手机应用程序,后端Web服务等。因此,我真的想要一个每个JSON REST API。 另外,我更喜欢在后端上工作,所以我做白日梦,我只专注于API,并雇用其他人制作前端UI,无论是网站,iPhone,Android还是其他应用程序。 请帮助我决定我应该采用哪种方法: 齐心协力 制作一个非常标准的Rails网络应用程序。在控制器中,执行response_with开关,以提供JSON或HTML。JSON响应就是我的API。 优点:很多先例。高标准和以这种方式做事的许多例子。 缺点:不一定希望API与Web应用程序相同。不喜欢if / then response_with切换方法。混合两种截然不同的东西(UI + API)。 REST SERVER + JAVASCRIPT-HEAVY CLIENT 制作仅JSON的REST API服务器。将Backbone或Ember.js用于客户端JavaScript可直接访问API,并在浏览器中显示模板。 优点:我喜欢API和客户端的分离。聪明的人说这是要走的路。理论上很棒。似乎最前沿和令人兴奋。 缺点:没有多少先例。这样做的例子并不多。公开示例(twitter.com)感觉呆滞,甚至正在放弃这种方法。 REST SERVER +服务器端HTML客户端 制作仅JSON的REST API服务器。制作一个基本的HTML网站客户端,该客户端仅访问REST API。更少的客户端JavaScript。 优点:我喜欢API和客户端的分离。但是提供纯HTML5十分简单,而且不会占用大量客户端。 缺点:没有多少先例。这样做的例子并不多。框架也不支持这一点。不确定如何处理。 特别是从经验中寻求建议,而不仅仅是从理论上。

1
Meteor,Ember.js和Backbone.js之间的主要区别是什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 学习Ember.js / Backbone.js已经有一段时间了。既然Meteor已经问世,我想知道是否有任何拥有Meteor,Ember.js和Backbone.js经验的人可以总结这三个JavaScript框架对于一个没有任何经验的人的优缺点。 具体来说,我想知道每个框架更适合哪些任务,以及为什么其他框架不适合。 编辑:现在,我阅读了更多有关Meteor的内容,似乎与Knockout.js而不是Backbone.js更加相似。因此,也欢迎与Knockout.js进行任何比较。

8
如何在underscore.js模板中使用if语句?
我正在使用underscore.js模板功能,并且已经完成了如下模板: <script type="text/template" id="gridItem"> <div class="griditem <%= gridType %> <%= gridSize %>"> <img src="<%= image %>" /> <div class="content"> <span class="subheading"><%= categoryName %></span> <% if (date) { %><span class="date"><%= date %></span><% } %> <h2><%= title %></h2> </div> </div> </script> 如您所见,我在那里有一个if语句,因为我所有的模型都没有date参数。但是,这种方式给我一个错误date is not defined。那么,如果模板中的语句该怎么办?

7
如何处理Backbone.js中的初始化和渲染子视图?
我有三种不同的方法来初始化和呈现视图及其子视图,并且每种方法都有不同的问题。我很好奇,是否有更好的方法可以解决所有问题: 方案一: 在父级的初始化函数中初始化子级。这样,并非所有内容都卡在渲染中,从而减少了渲染的阻塞。 initialize : function () { //parent init stuff this.child = new Child(); }, render : function () { this.$el.html(this.template()); this.child.render().appendTo(this.$('.container-placeholder'); } 问题: 最大的问题是第二次在父级上调用render将删除所有childs事件绑定。(这是因为jQuery的$.html()工作原理。)这可以通过调用this.child.delegateEvents().render().appendTo(this.$el);来缓解,但是在第一个(也是最常见的情况)下,您不必要地进行了更多工作。 通过添加子代,可以强制渲染函数了解父代DOM结构,以便获得所需的顺序。这意味着更改模板可能需要更新视图的渲染功能。 方案二: 在父级的initialize()静态对象中初始化子级,但无需附加,而是用于将setElement().delegateEvents()子级设置为父级模板中的元素。 initialize : function () { //parent init stuff this.child = new Child(); }, render : function () { this.$el.html(this.template()); this.child.setElement(this.$('.placeholder-element')).delegateEvents().render(); } …

5
基于骨干.js的许多框架在现实世界中的优缺点是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 改善这个问题 希望有人可以与他们分享一些最新的新兴的ribs.js变体的经验。我在多个项目中的主干/下划线/需求方面都具有良好的经验,我想朝着针对复杂应用程序结构的更高级解决方案迈出下一步。 我知道可以使用以下框架: 木偶 Geppetto(基于木偶) 卓别林,卓别林-卓别林样板 椎骨 布局管理器 胸部 光环 路卡 单耳 后栈 骨干用户界面 绿巨人 BTW-大型项目的绝佳起点 可能我错过了一些。 这里有关于这些差异的简短介绍: Speakerdeck谈话链接 但这很笼统 我想知道是否有人可以使用这些框架在现实生活中分享他们的经验。 选择一个而不是另一个的好处是什么?何时,木偶戏是比卓别林更好的解决方案,或者为什么椎骨在某些应用中会更好? 当然,显而易见的答案是“ 使用最适合您的需求 ”,但是我缺乏这些框架的经验,无法了解其优势/目的/优势或首选方案。 谢谢! 编辑1: 找到了这篇文章: Backbone.Marionette vs Backbone-Boilerplate 编辑2: Mathias schafer(Chaplin)通过邮件回答: 简而言之,当前结构已经在生产中使用,因此它接近1.0版。我们不打算在1.0之前添加新的重大功能或对API进行更改。 木偶肯定是那里最全面,最稳定的图书馆。它解决了使用Backbone开发JS应用程序的几个方面。例如,它具有强大的视线层,主干网本身就完全留下了空白。当然,您会发现某些方面无法满足您的需求,并且您可能会觉得有必要在Marionette周围建立结构。 相比之下,卓别林专注于Backbone应用程序的一个相当小但非常重要的方面,即整个应用程序的结构和模块的生命周期。在这方面,卓别林非常善于表达,更像是框架而不是库(例如,“您的代码称为库,框架称为您的代码”)。卓别林提供了一些中心类,它们位于各个应用程序模块之上,并控制整个应用程序状态。例如,这为您的应用程序提供了像Ruby on Rails这样的常规结构。 在卓别林中,您声明了一些映射到控制器的路由,一旦路由匹配,卓别林便启动控制器。它还负责处理旧的控制器,以及显示和隐藏应该由控制器创建的主视图。这是基本思想,但卓别林会处理一些丑陋的细节,以使此过程顺利进行。 此结构附带两个原则:-模块化,解耦和沙箱处理-使用“发布/订阅”和“中介”的跨模块通信 当然,这些模式在软件开发领域并不是什么新事物,并且卓别林不是唯一将它们应用于Backbone.js应用程序的库。 卓别林还为View层提供了增强功能,例如高度复杂的CollectionView,但总体上不及Marionette及其Regions和Layouts。但是使用卓别林视图提供的方法来编写此类元类相对容易。


6
使用RequireJS加载主干和下划线
我正在尝试使用RequireJS加载Backbone和Underscore(以及jQuery)。使用最新版本的Backbone和Underscore,似乎有些棘手。例如,Underscore自动将自身注册为模块,但是Backbone假定Underscore在全球范围内可用。我还要注意,Backbone似乎并没有将自己注册为模块,这使其与其他库有些不一致。这是我能想到的最好的main.js: require( { paths: { 'backbone': 'libs/backbone/backbone-require', 'templates': '../templates' } }, [ // jQuery registers itself as a module. 'http://cdnjs.cloudflare.com/ajax/libs/jquery/1.7/jquery.min.js', // Underscore registers itself as a module. 'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.2.1/underscore-min.js' ], function() { // These nested require() calls are just due to how Backbone is built. Underscore basically says if require() // …

8
使用Chrome查找JavaScript内存泄漏
我创建了一个非常简单的测试用例,该用例创建了Backbone视图,将处理程序附加到事件,并实例化了用户定义的类。我相信,通过单击此示例中的“删除”按钮,将清除所有内容,并且不会出现内存泄漏。 该代码的jsfiddle在这里:http : //jsfiddle.net/4QhR2/ // scope everything to a function function main() { function MyWrapper() { this.element = null; } MyWrapper.prototype.set = function(elem) { this.element = elem; } MyWrapper.prototype.get = function() { return this.element; } var MyView = Backbone.View.extend({ tagName : "div", id : "view", events : { "click #button" …


4
Backbone.js使用参数获取
根据文档,我做了: var collection = new Backbone.Collection.extend({ model: ItemModel, url: '/Items' }) collection.fetch({ data: { page: 1} }); 该网址原来是: http://localhost:1273/Items?[object%20Object] 我期待着类似的东西 http://localhost:1273/Items?page=1 那么如何在fetch方法中传递参数呢?

1
Angular.js vs Knockout.js vs Backbone.js [关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 改善这个问题 我正在考虑将Knockout或Angular或Backbone用于我的个人项目。我需要构建一些更大的,运行时间更长的客户端交互,以配合服务器端的工作。 我想要一种简单有效的方法来管理数据驱动的用户界面。 您将基于可行性和性能方面选择哪种框架来解决上述问题?

3
如何覆盖Backbone.sync?
我正在尝试Backbone.js,而我正在尝试的事情之一就是调用远程API,因此,据我了解的文档资料,我需要能够覆盖Backbone.sync 。 在文档本身中没有如何执行此操作的示例,并且似乎没有用于Backbone的google组...有人可以指出执行此操作的示例吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.