2011-02-10 17 views
6

サーバーサイドのJavaScript用にいくつかの機能を使いたいです。プロトタイプはブラウザのタイプをチェックしていると思うが、もちろんnode.jsはブラウザではない。私は次のエラーを取得する:Prototype.jsを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あなたはprototype.jsののソースを見てみると、それはしっかりにバインドされているバージョン0.2.6

+0

を見てために? –

答えて

6

プロトタイプはモジュラー化されています。これは、配列とクラスと関数を拡張する便利な部分(私はそれらのビットが大好きです!)を使うことができ、ブラウザとDOM(IEでは遅く、ノードには存在しないビット)を扱う部分は除外します。

まず、https://github.com/sstephenson/prototypeに行き、src/prototype/src/prototype/lang/から希望の部分を選びます。

私はあなたにこのような魅力的な挑戦を祈ります。

+0

ありがとう! src/prototype/lang.jsはSprocketファイルで、必要な言語のビットのみを含めるようです。 – projectshave

2

です(ウェブブラウザではないので)ノードによって提供されていないブラウザ環境。

jsdomブラウザ環境を模擬しようとしており、サーバ側でsuccessfullyがJQueryを実行するのに使用されています。あなたのマイレージは異なる場合があります。

+0

実際、jsdomのマイレージはjsdomのすべてのバージョンによって異なる場合があります。前回google.comで使用しようとしたときに、単に爆発しました。これは、ブラウザ環境が本当に壊れているかを大幅に拡大しています。 –

4

後期の答えは、私はそれがまだいくつかの人々に役立つことができ確信している:

https://github.com/Rixius/prototype.node.js

数日前、私は自分自身そのような何かをした、そしてそれはすでに行われていたが実現しました。.. github検索でもこのレポを見つけるのは難しいです。それは内蔵のいずれかをを拡張していないため、より高速なプロトタイプ自体として

Underscore is a utility-belt library for JavaScript that provides a lot of 
the functional programming support that you would expect in Prototype.js. 

その:

+0

私はこのレポの名前をprototype.node.jsに固定しました...正直なところ、私はそれが可能であることを自分自身に証明するために作ったのです。新しいリンクはhttps://github.com/Rixius/prototype.node.js – Rixius

+0

私はこれに触れていませんが、ノードの最近のビルドで動作させるようにしています。それは正しく機能する。 – Rixius

+0

Thx、私はリンクを編集しました。 – Robin

0

プロトタイプの最も愛さ機能を実装する、Node.jsのためunderscore.js特にありJavaScriptオブジェクトでこのため
、構文が若干異なります。

// prototype.js: 
anArray.each(function(){ ... }); 
// underscore.js: 
_ = require('underscore'); 
_.each(anArray, function(){ ... }); 

あなたはプロトタイプtrimようString機能を探している場合は、正確にあなたがそれを使用したくない何underscore.string

関連する問題