4

これが私の問題です。Expressを使用せずにノードで何かを書いたことはないので、基本的なAPIを使用してサーバーを作成するのは難しいと思います。

基本的に私がインターネットで見つけたのはこれです:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

ただし、/index.htmlと/getDataを実装する方法がわかりません。このコードはRaspberryパイで実行されるため、ライブラリを使用しないでください。基本的に私にはあまりスペースがありません。

どうもありがとう、h

4

2 に答える 2

12

リクエスト内のURLを手動で検査し、それぞれのケースを個別に処理する必要があります。

var http = require('http');
http.createServer(function (req, res) {

  if(req.url == "/index.html") {
     fs.readFile("index.html", function(err, text){
       res.setHeader("Content-Type", "text/html");
       res.end(text);
     });
     return;
  }

  if(req.url == "/getData") {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('get data\n');
    return;
  }

  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');

}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
于 2013-01-16T13:58:18.693 に答える
1

コードがPiで実行されているからといって、モジュールを使用できないわけではありません。モジュールは必ずしも過度のスペースを占めるとは限りません。それでも、多くのモジュールが作成したのと同じコードを作成する必要があります。Expressのようなモジュールは、直面している実装の問題に対処するために特別に存在するため、HTMLなどの静的アセットのリクエスト/getDataまたはファイルリーダーを処理するようにルーターを書き直す必要があります。モジュールを使用するかどうかに関係なく、最終的にはほぼ同じ量のコードになります。

ホイールを再作成するのではなく、必要のない機能を取り除いたスリムなモジュールが必要な場合があります。ExpressのベースとなっているConnectは、ごくわずかです。ExpressまたはConnectのいずれかを使用すると、不要なものを取り除くことができます。モジュールはプロジェクトルートの単なるnode_modulesサブディレクトリであるため、テスト、例、および(場合によっては)不要な機能などの無関係なものを削除できることを忘れないでください。

あるいは、 sendのようなスリムなモジュールがたくさんあります。これは、純粋にインデックスページのような静的コンテンツを提供するためのものです。JSONのみを提供するJourneyも、無駄のない機能セットです。重要なのは、Expressが大きすぎる場合に、特定のニーズに対応するモジュールがたくさんあるということです。ノードモジュールリストは、そのようなモジュールを見つけるための良い出発点です。モジュールを使用せずにノードを操作することは、これらの問題がすべての人を悩ませていたノードの初期の頃に一歩戻るようなものです。もちろんそれは可能ですが、すでに行われています。

于 2013-01-16T14:20:51.653 に答える