19

まず第一に、私はnodejsが初めてで、次に以下が私の質問です。htmlにロードされているjsにnodejsネットモジュールを含める方法は??

私のjsファイルは次のようになります。

net = require('net');
var client = net.createConnection(8000, '192.168.15.59');
client.on('connect',function(){
console.log('Connected To Server');
});
client.on('data',function(data){
console.log('Incoming data:; ' + data);
});

そして、私のhtmlファイルは以下です

<html>
<head>
<script type="text/javascript" src="sample.js"></script>
<script type="text/javascript">
function displaymessage(message)
{
alert(message);
client.write(message, encoding='utf8')
}
</script>
</head>

<body>
<form>
<input type="text" id="msg"></input>
<input type="button" value="Click me!" onclick="displaymessage(document.getElementById('msg').value)" />
</form>
</body>
</html>

ブラウザでHTMLファイルを実行すると、以下のエラーが発生します

Uncaught ReferenceError: require が定義されていません

コマンドラインを使用して(この「node sample.js」のように)nodejsでjsファイルを直接実行すると、正常に動作します。

前もって感謝します。

4

3 に答える 3

18

NodeJS はサーバー上で実行されます。HTML ファイル内のスクリプトはクライアントで実行されます。クライアントにサーバー コードを含めません。代わりに、クライアントからサーバー コードにメッセージを送信し、結果を解釈します。したがって、これを行う標準的な方法は、生成したいコンテンツまたはデータを生成するサーバー上でリソースを定義し、通常のページ読み込みまたは「ajax」を使用してクライアントからそのコンテンツまたはデータを取得することです (最近では、ほとんどの人は「ajax」で「x」[XML]を使用せず[まだ使用している人もいます]、JSON、テキスト、またはHTMLを使用します)。

于 2012-04-15T21:46:19.830 に答える
5

コメントで@TJCrowderが言ったことを明確にするために:あなたがやろうとしていることは不可能です。

NodeJS はサーバー側のフレームワークです。NodeJS で記述した Javascript はサーバー上で実行されます。HTML ページ用に作成した Javascript は、クライアント上で実行されます。クライアントとサーバーは、互いのメソッドを直接呼び出すことはできません。これは、AJAX およびその他の非同期クライアント サーバー通信技術が使用されるものです。

于 2012-04-15T21:44:27.033 に答える
1

「requireが定義されていない」理由は、「require」がnode.jsのキーワードであるが、ブラウザのキーワードではないためです。

Node.jsはjavascriptの仮想マシン(または実行中のコンテキスト)であり、ブラウザーはjavascriptの仮想マシンでもあります。しかし、それらは大きく異なります。WindowsとLinuxの両方でC/C ++を使用できるのと同じように、ある仮想マシンでサポートされているキーワードを別の仮想マシンで使用することはできませんが、LinuxのみまたはWindowsのみのライブラリが多数あります。

于 2012-04-24T04:17:11.847 に答える