node.js を使用してクライアントへの URL 出力ファイルを分析する

Y2J
リリース: 2017-05-22 11:57:35
オリジナル
1930 人が閲覧しました

私は最近、コース設計を完了する必要があり、プロジェクト マネージャー (チーム リーダー) からインターフェイス関数を作成するよう割り当てられました。この記事では、ノードを使用して小規模なサーバーを構築する方法を共有します。必要な友人は参照してください。それに

ノードを使用して小さなサーバーを構築します(実際には、URLを分析してファイルをクライアントに出力するためです)

私は最近コース設計を完了する必要があり、プロジェクトマネージャー(チーム)から割り当てられましたリーダー)にインターフェイスを書いてもらいましたが、フロントエンドだけを書くと何かが足りないといつも感じていたので、自分で書いて遊んでみたいと思いました。

この期間、私は最初は PHP だけを学ぶつもりでしたが、考えが変わり、nodejs を使うだけでなくてもいいのではないかと思いました。開発の背景を理解するだけでなく、js の基礎も固められるので一石二鳥です。

ノードを学習する過程で、ノードを使用してサーバーを実装する方法を学びました。これは、以前に学習したモジュールの良い要約のように感じます。 4 つの基本モジュールのストリーム http パス

のコードは次のとおりです: (壊れた英語コメントが含まれていますご容赦ください)

'use strict'
var url = require('url');
var path = require('path');
var fs = require('fs');
var http = require('http');
//get the current path
//var root = path.resolve('.');//以当前的目录为服务器的根目录
var root = path.resolve(process.argv[2] || '.');//以输入的参数作为服务器的根目录,如果没有输入参数就将当前目录作为服务器根目录
console.log('local root dir :' + root);
//create server
var server = http.createServer(function(request, response) {
  //get the path of URL
  var pathname = url.parse(request.url).pathname;
  //get the local path
  var filepath = path.join(root, pathname);
  //get the file stat and output the request file by callback function
  fs.stat(filepath, function(err, stat) {
    if(!err && stat.isFile()) {
      console.log('200' + request.url);
      response.writeHead(200);
      fs.createReadStream(filepath).pipe(response);//没有必要手动读取文件内容。由于response对象本身是一个Writable Stream,直接用pipe()方法就实现了自动读取文件内容并输出到HTTP响应。
    } else {
      console.log('404' + request.url);
      response.writeHead(404);
      response.end('404 Not Found');
    }
  });
});
server.listen(8080);
console.log('Server is running at http://127.0.0.1:8080/');
ログイン後にコピー

これらの関数のいくつかの説明:

path.resolve() 路径寻航(这名字不错)
path.resolve([from…], to)
ログイン後にコピー

興味深い説明があります: Continuously と同等システムの cd コマンドを呼び出します

eg:

path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')
//相当于:
cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile1
path.join([path1],path[2]...) 路径合并
ログイン後にコピー

すべての名前を path.seq で連結し、normailze でフォーマットします

eg:

path.join('///foo', 'bar', '//baz/asdf', 'quux', '..');
=>'/foo/bar/baz/asdf'
ログイン後にコピー

normalize について言及されているため

then:

パスをフォーマットします path .normalize (p)
仕様に準拠していないパスをフォーマットし、開発者間のさまざまな複雑なパス判断の処理を簡素化します

eg:

path.normalize('/foo/bar//baz/asdf/quux/..');
=> '/foo/bar/baz/asdf'
ログイン後にコピー

http.response.end()は応答を終了し、すべてのメッセージが送信されたことをクライアントに伝えます。この関数は、返されるすべてのコンテンツが送信されたときに一度呼び出す必要があります。この関数が呼び出されないと、クライアントは永久に待機状態になります。 Usage:

response.end([data], [encoding])
ログイン後にコピー

data end()実行後に出力される文字 data の値を指定した場合、response.end()実行後、response.write(data , encoding);を意味します。

エンコーディングはデータの文字エンコーディングに対応します

[関連する推奨事項]

1.

JavaScriptの無料ビデオチュートリアル

2.

中国語の文字をピンインに変換するJavaScriptの例の詳細な説明

3.よく使用される js 正規表現

4. JavaScript による検索ツールバーの実装の詳細な例

5. Javascript での async と await の使用方法の詳細な紹介

以上がnode.js を使用してクライアントへの URL 出力ファイルを分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート