2011-01-11 10 views
22

node.js形式に適合しない外部jsファイルをロードするにはどうすればよいですか。私はjsonシリアル化ライブラリをインポートしようとしています。これどうやってするの?non-node.jsファイルをどのようにインポートしますか?

+0

jsonの組み込みサポート(例: JSON.stringify(obj))、すでにサポートされている機能セット以外のものをお探しですか? – davin

+0

@davidちょうど今と将来の参照のため。私はすべてのnode.jsバージョンを見つける必要はありません。 – Will03uk

+0

2番目のJSONライブラリをインポートしないでください(私はあなたがjson2.jsを見ていると仮定していますか?)。 JSON.parse()とJSON.stringify()はどちらも最初からノードに組み込まれています。 –

答えて

33

2の答え... )あなただけのJSON.parse()とJSON.stringify()を呼び出すことができるようにJSONオブジェクトは、ビルトインのNode.jsにある、インポートする必要はありませんこの特定のケースの外部コード。外部コードをインポートする

2)、Node.jsのCommonJSモジュールの仕様に従い、あなたが使用することができますが(必要)

ので、あなたの残りの部分と同じディレクトリにあるexternal.jsというファイルを(持っている場合コード):

this.hi = function(x){ console.log("hi " + x); } 

とあなたが行うノードから:

var foo = require("./external"); 
foo.hi("there"); 

あなたが出力hi there

が表示されます
+1

+1 this.hi = function(x){console.log( "hi" + x); } – iwill

3

ラッパーを書き込むか、コードを変更してください。

自動的に動作させるにはどうすればよいですか?どの関数がどの関数をエクスポートするべきかを知るはずです。

Common JS標準と一致するようにコードを調整するだけですが、それを行う前にNode.js WikiのAPI DocsModules Pagesをチェックして、誰かがあなたの仕事をしているかどうかを確認してください:あなた自身のコードを記述する場合)

はそれがブラウザで動作するはずですし、Node.jsのは、次のようなラッパーを使用することができます:あなたは、コードを信頼する場合、私は、本当に信頼を意味する(

(function(node) { 
    // Your Awesome code here 
    if (node) { 
     exports.foo = ... 

    } else { 
     window.foo = ... 
    } 

})((function(){return ('' + this).slice(8, -1) !== 'DOMWindow';})()); 
9

をコード)を次にevalそれができる:

eval(require('fs').readFileSync('somefile.js', 'utf8')); 

リモートコードでこれを行うことはお勧めできませんが(あなたの知識なしに変更する可能性があるため)、ローカルコピーをお持ちの場合は問題ありません。

+4

これは恐ろしい答えです。そして、私はそれが大好きです。 –

+0

JSONを読んでいるよりも、受け入れられた答えの方が簡単です。 JSONが設定ファイルでwebpack、backpackなどを使用して.jsファイルに挿入したい場合にも便利です。 – Ozil

関連する問題