如何使用Node.js的Prototype.js?
我想为服务器端的JavaScript使用一些function。 我认为原型是检查浏览器types,但当然node.js不是浏览器。 我得到以下错误:
$ node > require('./prototype') ; ReferenceError: navigator is not defined at /home/guest/projects/javascript/prototype.js:14:5 at Object.<anonymous> (/home/guest/projects/javascript/prototype.js:23:4) at Module._compile (node.js:462:23) at Module._loadScriptSync (node.js:469:10) at Module.loadSync (node.js:338:12) at loadModule (node.js:283:14) at require (node.js:411:14) at cwdRequire (repl:29:10) at [object Context]:1:1 at Interface.<anonymous> (repl:96:19)
prototype.js是1.7版本,node.js是0.2.6版本
原型被写成模块化的。 这意味着你可以只使用扩展Array和Class和Function的有用部分(我喜欢这些比特!),而忽略了处理浏览器和DOM的部分(IE中速度慢,节点中不存在的部分)。
首先转到https://github.com/sstephenson/prototype,然后从src/prototype/
和src/prototype/lang/
选取所需的部分。
祝你在这样一个迷人的挑战运气。
迟到的答案,但我相信它仍然可以有用的一些人:
https://github.com/Rixius/prototype.node.js
几天前,我自己做了这样的事情,并意识到它已经完成了…即使使用Githubsearch,这个回购很难find。
如果你看看Prototype.js的源代码,它就紧紧地绑定到浏览器环境,而不是由节点提供(因为它不是一个Web浏览器)。
jsdom试图模拟浏览器环境,并已经被用来在服务器端成功运行JQuery。 你的旅费可能会改变。
特别是node.js有underscore.js ,它实现了大多数Prototypes心爱的函数:
Underscore is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js.
它的原型本身更快,因为它不扩展任何内置的JavaScript对象。
由于这个原因,语法略有不同:
// prototype.js: anArray.each(function(){ ... }); // underscore.js: _ = require('underscore'); _.each(anArray, function(){ ... });
如果你正在寻找像trim
原型String
函数,看看underscore.string