Tag: backbone.js

骨干localStorage不使用良好的同步方法

我疯了,我的问题! 我有一个模型,我想使用localStorage,但是当我在我的视图中调用model.fetch,我得到错误“错误:一个”url“属性或函数必须指定”。 这个错误是“正常的”,如果我不使用localStorage,因为我没有定义的url属性。 这里的fetch调用应该使用Backbone.sync(也就是localStorage模块的Backbone.localSync覆盖吧?)。 但它永远不会进入localStoragefunction! 就好像模块从未加载过一样。 但我添加了一些console.log无处不在和backbone.localstorage加载并正确初始化。 这就像骨干重新加载的地方,我松散覆盖Backbone.sync指向localStorage.localSync … 错误发生在modules / config.js,render函数中。 这是我的代码: models / configuration.js': var Backbone = require('Backbone'); Backbone.LocalStorage = require('Backbone.LocalStorage'); // Exports the module module.exports = Backbone.Model.extend({ defaults:{ id: 1 agencyName : 'xxx', agencyId : 'xxx', serviceUrl : 'xxx' }, localStorage: new Backbone.LocalStorage('Configuration') }); data / configuration.js: 'use strict'; // Get class […]

如何在构build时自动更改脚本标记url

我正在使用index.html的以下代码运行Backbone节点 <script src="js/api/require.js"></script> <script>require(['js/require-cfg'],function(){require(['main'])});</script> main.js看起来像这样: require(['app'], function(App){ App.initialize(); } ); 在生产中,我使用r.js将文件编译到main-build.js ,并将index.html文件中的链接从mainredirect到main-build : <script>require(['js/require-cfg'],function(){require(['main-build'])});</script> 目前,如果我想将我的代码部署到生产环境中,则必须手工将index.html main-build修改为main-build ,或者将链接保持为main-build但将main-build.js的内容更改为相同作为main.js当我运行本地或testing环境,然后切换回部署到生产。 有没有更好的(自动)方式让代码在生产时使用编译的main-build.js ,以及在本地或testing环境中使用main.js的内容? 例如:使用节点环境variables来更改index.html的链接(不知道如何更改html!)或更改main-build.js的内容,但是每次运行r.js以编译生产

单页面应用的版本和路由?

背景 我正在研究一个教育性的JavaScript应用程序/网站(SPA),最终将有1000个dynamicurl,我想抓取。 我正在研究如何实现版本控制,路由和seo(和i18n) 。 我的一般想法是使用hashbangs和像这样的资源: example.com/#!/v1?page=story1&country=denmark&year=1950 这里的“页面”参数决定了哪些控制器/视图需要加载,后续的参数可以指示控制器加载相应的内容。 然后可以通过replaceurl的“v1”部分来处理参数的版本控制 ,并为每个版本都有一个特定的路由处理程序映射不推荐使用的参数。 通过让node.js或其他后端提供内容的“转义片段”版本, SEO可以得到改进。 i18n应该也可以由node.js来处理? 这样,传递给爬虫的内容已经被翻译了? 这是一个可行的方法来使单页面应用程序版本化和可抓取? 我现在使用Backbone.js,你会添加什么,以帮助上述?

backbone.js中的嵌套模板呈现

我有一个模板 script type: "text/template", id: "list-template", ''' <div class="display"> <div id="list-name"><%= name %></div> <span class="list-destroy"></span> </div> <div> <ul id="ul-cards"> </ul> </div> <div class="edit"> <input class="list-input" type="text" value="<%= name %>" /> <input id="btnEdit" type="button" value="Save" class="primary wide js-add-list" /> <input id="hdnListId" type="hidden" value="<%= listId%>" /> </div> <form class="add-list-card js-add-list-card clearfix"> <textarea placeholder="Add card" class="new-card"></textarea> <input type="button" […]

通过Socket.io发送Backbone.js模型

基本问题 我想通过socket.emit()发送一个对象,但是对象没有被完全发送。 我可能只是误解如何做到这一点,但这里是例子: console.log(object) 结果是 { length: 8, models: [ { attributes: [Object], _escapedAttributes: {}, cid: 'c1', changed: {}, _silent: {}, _pending: {}, _previousAttributes: [Object], lots: [Object], _changing: false, collection: [Circular], _callbacks: [Object] }, … ETC 而 socket.emit(e,object); 结果是 : {"name":"read:AllAuctions","args": [[{"auctionId":"298"},{"auctionId":"381"},{"auctionId":"385"}, {"auctionId":"393"},{"auctionId":"394"},{"auctionId":"395"}, {"auctionId":"402"},{"auctionId":"800"}]]} 它以后一种格式到达前端。 更多细节 我创build了一个尝试使用socket.io更新客户端骨干模型的服务器。 其中一些正在使用这里指定的想法: http://developer.teradata.com/blog/jasonstrimpel/2011/11/backbone-js-and-socket-io 不同之处在于我在后端创build了骨干模型。 我的逻辑是共享基本的模型文件,并在后端处理与持久层的通信并保持“真实”的数据源优化,然后响应请求来获取这些模型/集合以及自动推送更新。 一切似乎都在工作,但是我应该把模型转移到前端。 我是否需要扩展/覆盖到JSON或其他方法实际上转换为运输? 如果是这样,我该怎么做? 任何帮助,你可以给我将不胜感激!

从服务器端代码获取会话信息到客户端代码

在我正在开发的一个网站上,使用Node,Express和Backbone,我使用常规的HTML表单进行用户login,当成功login时,会创build一个用户会话。 访问这个会话信息在服务器端很容易,让我访问用户名,用户名等,但我不知道如何在Backbone中访问这些信息。 我想要获取UserID,以便我可以像这样创build一个Collection的URL: url: '/api/users/'+ this.userID +'/movies'; 但我不知道如何最好的去获取基于服务器端的会话数据的用户ID。 这是否需要创build另一个模型 – 比如说,一个“用户”模型,通过特定的url / get请求从服务器获取会话数据? 谢谢!

如何初始化backbone.js中的页面,以最大限度地减lessHTTP请求和延迟

我正在学习骨干,从这些例子和教程中我得到了这样的印象: 最初的GET /返回骨干页面和视图模板。 Backbone使用REST API通过GET需要的数据并将其添加到DOM中充实页面。 这样做很有效,但是对于额外的HTTP请求,以及从最终用户的angular度来看,这似乎是浪费(在页面可见之前至less两次往返,实际上是三次,因为API必须首先询问哪些小部件可用的,然后获取任何可用的小部件的细节….)。 有没有一个确定的,标准的方法来解决这个问题? 我目前的候选人是: 忽略问题。 将初始化数据通过embedded式JavaScript直接embedded到原始页面中。 像骨干不存在一样渲染页面。 当中枢完成初始化时,它将(希望)与用户看到的页面同步。 它可以纠正任何需要的东西,如果事情在几秒钟内改变了,但至less用户不会被挂起。 我还没有想到的另一个解决scheme? 有没有一个确定的方法来做到这一点? 这是特定情况吗? 我正在使用Node / JS / Express。

在第三方rest服务的节点上使用骨干网

我试图从叽叽喳喳等一个宁静的服务拉数据。 我之前在客户端成功完成了这个任务。 现在我试图在服务器上做,我似乎无法得到正确加载骨干网。 当我需要(“主干”)和文件加载时,“this”是模块,但从backbone.js的第15行的注释中,它的期望也是“全局的”有没有一种特殊的方式来加载这个文件全球参考“这个” 这里是来自backbone.js文件的评论(13-15行) // Save a reference to the global object (`window` in the browser, `global` // on the server). var root = this; 但就像我之前所说的那样,它不是“全球化”,它只是一个空洞的对象。 所以,我看到至less有两种可能性。 以一种将“this”设置为全局的方式加载backbone.js文件。 这可能吗? 将backbone.js文件更改为“var root = global” #1可能吗? 我错过了一些可能性? thx,丹

Backbone.js客户端模型保存服务器端错误的问题

想知道有没有人可以帮助我。 我在运行backbone.js的客户端上有一个页面 服务器正在运行socket.io。 我已经用backbone.iobind同步replace骨干默认同步来支持socket.io。 我有一个骨干模型,保存从服务器(这是计划)得到一个错误响应,并触发保存的错误function, 但我的模型在客户端仍然更新到新值 。 我已经包括等待:从我理解的等待更新之前,从服务器的成功响应的真实,但是这不会发生在我身上。 服务器端socket.io代码 io.sockets.on('connection', function (socket) { socket.on('test:create', function (data, callback) { //err – used to fake an error for testing purposes var err = true; if (err) { // error callback('serv error'); } else { // success // The callback accepts two parameters: error and model. If no […]

通过socket.io使用backbone.js

我试图进入node.js世界,并想build立一个简单但完整的testing应用程序来连接node.js与socket.io和backbone.js使用redis作为商店。 我发现了一些教程和一些例子。 不知何故,我只是对我必须使用的整个架构感到困惑。 通常你会用express来定义你的server.js中的所有路由。 所以你可以完全控制服务器端的路由。 现在连接骨干,你必须重新定义路线? 这似乎是一个模范的方面,但对我来说,这似乎是我不知何故不喜欢的双重工作。 所以我只是感到困惑,事情完全不同? 也许有人链接到一个很好的教程或例子,它更清晰。