2014-09-02 46 views
0

比如我想使用jQuery的功能扩展如何在node.js中使用jquery npm?

var object = $.extend({}, object1, object2); 

但是:

var $ = require('jquery'); 

控制台: $

function (w) { 
       if (!w.document) { 
        throw new Error("jQuery requires a window with a doc… 

$ .extend不确定

+1

jQuery的什么版本?我引用https://www.npmjs.org/package/jquery:“要在Node,浏览器扩展和其他非浏览器环境中使用jQuery,只能使用2.x版本。1.x不支持这些环境“。 – 2014-09-02 11:29:39

+0

也请清楚写出完整的错误信息,这将有助于我们回答 – 2014-09-02 11:30:58

+0

“版本”:“2.1.1”, – 2014-09-02 11:37:45

回答

2

jquery仅供客户端使用。对于服务器端(node.js0,它用于单元测试脚本与browserify,......因为node.js中没有窗户,文档和DOM层 我建议您使用underscore.js:

npm install underscore 

下划线.js文件有一个extend方法的工作原理是jquery.extend:

var _ = require('underscore'); 
var obj = _.extend({}, object1, object2); 
3

你可以得到这个工作,但你需要叫jsdom另一个模块因为jQuery 需要一个DOM窗口进行操作,它不适合Node.js.安装它:

npm install jsdom --save 

请注意:我使用的是最新的jQuery 2.1.1和1.0.0 jsdom,pre.6通过NPM都安装

然后在您的Node.js文件如app.js

var jsdom = require('jsdom'), 
    window = jsdom.jsdom().parentWindow, 
    $ = require('jquery')(window); 

var object = $.extend({},{'foo':'bar'},{'cat':'dog'}); 
console.log(object); 
在Node.js的

然后你运行它:

node app.js 

而看到输出:

{ foo: 'bar', cat: 'dog' } 

也许是更好的选择是使用类似cheerio这是一个“专为服务器设计的核心jQuery的快速,灵活和精益实施”。您可以使用npm install cheerio进行安装。