2

私はこのコードを持っています ( https://gist.github.com/2402116 ):

server.get('/', function(request, response) {
 var k = fs.readFileSync('./index.html','utf8');
 response.send( k );
});

このファイルの読み取りを試みます:

https://gist.github.com/2402070

ブラウザはロードを続け、終わりません。

しかし、html ファイルからすべての js インクルードを削除すると、正常に動作します。

私は何を間違っていますか?

4

3 に答える 3

2

現在のサーバー実装は何もしませんがindex.html、ベースURLのリクエストに対応します'/'index.htmlに含まれるjsのリクエスト、つまり'/app.js'、に含まれるさまざまなjsファイルを処理するには、さらにコード/ルートを作成する必要があります'/js/'

現在、要点のルーティング実装は非常に粗雑であり、URLマッチングの多くの側面をサポートしていません。元のコードは、リソースのない単一ページサイトの概念を明確に示しているにすぎません。すべてのリソースリクエストのルートを効果的に作成する必要があるため、コードを機能させるのはすぐに面倒になります。

server.get('/app.js', function(request, response) {
  var k = fs.readFileSync('./app.js','utf8');
  response.send( k );
});

server.get('/js/jquery-1.7.2.js', function(request, response) {
  var k = fs.readFileSync('./js/jquery-1.7.2.js','utf8');
  response.send( k );
});

etc...

すでに存在するnode.jsurlルーティングライブラリ(directorなど)またはルーティング(および静的ファイルサービング)のサポートが組み込まれているexpressなどのWebフレームワークを確認することをお勧めします。

于 2012-04-16T23:12:54.140 に答える
2

response.end()ブラウザへのデータの送信が完了したら、 が必要です。

実際には、すべてのデータを一度に送信しているため、 に置き換えるだけresponse.send(k)で済みresponse.end(k)ます。この方法はお勧めしませんが。ファイルを非同期で読み取り、チャンクごとにクライアントに送信することを強くお勧めします。

参照: http://nodejs.org/api/http.html#http_response_end_data_encoding

于 2012-04-16T22:57:51.520 に答える
1

kを試し.toStringて送信しないでください.end

response.end( k.toString() ); 

奇妙なことが起こり、彼はコードを評価しようとするかもしれません

于 2012-04-16T23:00:25.317 に答える