2

Nodejs を使用してサンプル プログラムを作成していますが、これはブラウザーからも呼び出すことができます。Nodejs内からJavaScriptファイルを呼び出す際に、ブラウザのJSセマンティクスと互換性のある方法で問題に直面しています(したがってrequire、Node固有であり、機能しません)。

「A.js」、「B.js」、「C.js」の 3 つの .js ファイルがあるとします。「A.js」はNodeで書かれています。"B.js" と "C.js" は純粋な JavaScript で記述されています (つまり、ブラウザーから呼び出すことができる必要があります)。

「A.js」から「B.js」に存在する関数 b() を呼び出す必要があります。だから私は eval() "B.js" メソッド b() をエクスポートします。これは正常に動作します。この問題は、「B.js」の関数 b() が「C.js」の関数 c() を呼び出すときに発生します。

B.js:

function b()
{
    console.log('In function b');
    c();
}

C.js:

function c()
{
    console.log('In function c');
}

依存関係が解決されたことを確認するにはどうすればよいですか? どんな助けでも大歓迎です。ありがとう!!!

4

2 に答える 2

1

node.js にはrequire、ファイルを要求し、エクスポートされたものを使用できる関数があります。

C.js:

function c() {
    console.log('In function c');
}

// This is the exported object
module.exports = {
    c: c
};

B.js:

function b() {
    var c = require('./c.js');
    // "c" is now the exported object

    console.log('In function b');
    c.c();
}

module.exports = {
    b: b
};

A.js:

var b = require('./b.js');

b.b(); // "In function b" "In function c"

node.js でモジュールを処理する方法については、必ずお読みください: http://nodejs.org/api/modules.html

于 2013-01-22T10:03:48.780 に答える
1

プレーンなバニラ JavaScript ファイルを手動で読み込むことができますeval。あなたの場合、純粋なjavascriptファイルをロードするノードモジュールを作成できます。このような:

bc.js :

var fs = require('fs');

// load and eval b.js and c.js
eval(fs.readFileSync('./b.js','utf8') + fs.readFileSync('./c.js','utf8'));

// put function b and c in exports
module.exports = {
    b : b,
    c : c
};

したがって、bc.js が必要なときはいつでも、関数bc関数の両方を取得し、関数をb使用できますc

詳細については、「バニラ」Javascript ライブラリを Node.js にロードするという質問を参照してください。

于 2013-01-22T10:52:54.507 に答える