[英]Configuring $.ajax with backbone on node for testing with vows
(编辑以大大简化)
在节点上,我有以下server.js文件。
var Backbone = require('backbone');
var Tweet = Backbone.Model.extend({});
var Tweets = Backbone.Collection.extend({
model : Tweet,
url: function () {
return 'http://search.twitter.com/search.json?q=backbone'
}
});
var myTweets = new Tweets();
myTweets.fetch();
运行此命令时,出现错误消息。 “无法调用未定义的方法'ajax'”(1359:14)
基本上,这是$未定义的结果。 为什么未定义? 好了,这里有许多中间步骤,但是在加载文件时,期望“ this”在浏览器中是“窗口”,在服务器上是“ global”。 在节点“ this” = {}上执行。
因此,orbone.js文件中的问题“如何将'this'设置为global”?
在Backbone> = 1.x上,您可以简单地分配Backbone.$
而不是使用Backbone.setDomLibrary
。
您需要解决的第一个问题是如何在Node上运行它。 Node.js是服务器端JS环境,但不包含任何用于控制DOM的逻辑。 为此,您需要加载类似JSm的内容。
设置了DOM环境后,您可以将jQuery及其代码加载到其中,并且它应该像浏览器一样工作。
但是,要专门回答您的问题,将jQuery加载到global
是一种难看的方法。 您应该使用Backbone的setDomLibrary
函数将$设置为所需的值。
尝试这样的事情:
if (typeof exports !== 'undefined') {
MyModels = exports;
Backbone.setDomLibrary(require('jquery'));
server = true;
} else {
MyModels = this.MyModels = {};
}
但是,如果尝试执行任何DOM功能,这将失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.