1。オープニング分析
この記事では、これらの3つのモジュールが長さが長くないため、これらの3つのモジュールについて説明しています。第二に、それらの間に依存関係があるため、順番に導入および分析されます。私はそれほどナンセンスとは言いません、次のドキュメントをご覧ください。
(1)、「URLモジュール」
少し栗を持ってみましょう:
コードコピーは次のとおりです。
var url = require( 'url');
var queryurl = "http:// localhost:8888/bb?name = bigbear&memo = helloworld";
console.log(typeof url.parse(queryurl));
console.log(url.parse(queryurl));
実行結果:
コードコピーは次のとおりです。
オブジェクト// typeof
{
プロトコル: 'http:'、
スラッシュ:本当、
AUTH:null、
ホスト: 'localhost:8888'、
ポート: '8888'、
ホスト名: 'localhost'、
ハッシュ:ヌル、
検索: '?name = bigbear&memo = helloworld'、
クエリ: 'name = bigbear&memo = helloworld'、
パス名: '/bb'、
パス: '/bb?name = bigbear&memo = helloworld'、
href: 'http:// localhost:8888/bb?name = bigbear&memo = helloworld'
}
次のように説明してください:
プロトコル:プロトコルを要求します
ホスト:URLホスト名は、ポート情報を含む小文字に変換されました
AUTH:URLの認証情報部分
ホスト名:ホストのホスト名部分、小文字に変換
ポート:ホストのポート番号部分
PathName:クエリが要求される前にホスト名の後にあるURLのパス部分
検索:最初の疑問符を含む、URLのクエリ文字列セクション。
パス:パス名と検索が接続されています。
クエリ:パラメーターパーツ(質問マーク後の文字列の一部)をクエリするか、queryString.parse()を使用して返されたオブジェクトを解析します。
ハッシュ:URL「#」の次の部分(#シンボルを含む)
補足API:「url.format(urlobj)」
関数:URLオブジェクトを入力して、フォーマットされたURL文字列を返します。
(2)、「QueryStringモジュール」
以下に示すように、「QueryString」モジュールは、URLパラメーター文字列とパラメーターオブジェクトを互いに変換するために使用されます。
コードコピーは次のとおりです。
var url = require( 'url');
var qs = require( 'querystring');
var queryurl = "http:// localhost:8888/bb?name = bigbear&memo = helloworld";
queryurl = url.parse(queryurl).query;
console.log(queryurl);
console.log(qs.parse(queryurl));
操作結果は次のとおりです。
コードコピーは次のとおりです。
name = bigbear&memo = helloworld
{
名前: 'Bigbear'、
メモ:「Helloworld」
}
補足API:
QueryString.Stringify(OBJ、[sep]、[eq])-----オブジェクトをクエリ文字列にシリアル化します。
デフォルトのスプリッター( '&')とallocator( '=')をオーバーライドするかどうかを選択できます。
QueryString.Stringify({foo: 'bar'、baz: 'qux'}、 ';'、 ')//次の文字列' foo:bar; baz:qux '
QueryString.Parse(str、[sep]、[eq]、[options])-----クエリ文字列をオブジェクトに脱直します。デフォルトのスプリッター( '&')とallocator( '=')をオーバーライドするかどうかを選択できます。
オプションオブジェクトには、MaxKeys属性(デフォルトは1000)を含む場合があります。これは、処理されたキーの数を制限するために使用できます。 0に設定すると、キーの数を削除できます。
例:QueryString.Parse( 'foo = bar&baz = qux&baz = quux&corge')// {foo: 'bar'、baz:['qux'、 'quux']、corge: ''}
(3)、「パスモジュール」
このモジュールには、ファイルパスを処理および変換するためのツールのセットが含まれています。ほとんどすべてのメソッドは文字列のみを変換し、ファイルシステムはパスが真であるかどうかを確認しません。
最初にシンプルな栗を持ってみましょう:
コードコピーは次のとおりです。
var url = require( 'url');
var qs = require( 'querystring');
var path = require( "path");
var queryurl = "http:// localhost:8888/bb?name = bigbear&memo = helloworld";
var root = path.basename(queryurl);
console.log(root); // bb?name = bigbear&memo = helloworld
パスの最後の部分を返し、「/」で分割します
コードコピーは次のとおりです。
var url = require( 'url');
var qs = require( 'querystring');
var path = require( "path");
var queryurl = "http:// localhost:8888/bb?name = bigbear&memo = helloworld";
var root = path.basename(queryurl);
console.log(root); // bb?name = bigbear&memo = helloworld
var ext = path.extname(root);
console.log(ext || "not ext name!"); // ext nameではありません!
APIが多すぎるため、上記のAPIには一般的に使用されるものがいくつかリストされており、誰もがドキュメントを注意深く読む必要があります。
2。包括的な栗
シナリオの説明----サーバーは、さまざまな状況からリクエストを受信し、「URL」を介して異なる処理を実行します。コードは次のとおりです。
(1)、「index.html」を作成します
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<title> bigbear </title>
<Meta content = "ie = 8" http-equiv = "x-ua互換"/>
<meta http-equiv = "content-type" content = "text/html; charset = utf-8">
<style type = "text/css">
div {
マージントップ:50px;
幅:100%;
マージン:0px;
高さ:120px;
ラインハイト:120px;
色:#ffff;
フォントサイズ:22px;
背景:#ff9900;
テキストアライグ:センター;
}
</style>
<スクリプトsrc = "index.js"> </script>
</head>
<body>
<div>こんにちは、ビッグベア! </div>
</body>
</html>
(2)、「index.js」を作成します
アラート( "Hello BB!"); //テストするコードの1つの文だけ
(3)「server.js」を作成する
コードコピーは次のとおりです。
var http = require( "http");
var fs = require( 'fs');
var url = require( 'url');
var path = require( "path");
http.createserver(function(request、response){
var method = request.method;
method = method.tolowercase();
var filename = path.basename(request.url);
var extname = path.extname(filename);
var root = "./";
if( "get" == method){
if(extname){
fs.readfile( "./" + filename、 "utf-8"、function(error、data){
if(エラー)スローエラー。
Response.writehead(200、{
「コンテンツタイプ」:{
".css": "Text/css"、
".js": "application/javascript"
} [extname]
});
Response.write(data);
Response.End();
});
}
それ以外{
fs.readfile(root + "index.html"、 "utf-8"、function(error、data){
if(エラー)スローエラー。
Response.writehead(200、{
「コンテンツタイプ」:「テキスト/html」
});
Response.write(data);
Response.End();
});
}
}
else if( "post" == request.url){
//ここで投稿を処理します
}
})。聞きます(8888);
console.log( "Webサーバーの実行、ポートオン---> 8888");
node server.jsを実行します。
3つ、要約しましょう
(1)上記の3つのモジュール間の接続を理解し、それらを柔軟に使用します。
(2)APIに関連する3つのモジュール「URL、QueryString、およびPATH」を使用するのに習熟しています。
(3)、そして最後に強調します。上記の例では、コードの意図を理解し、絶えずリファクタリングして要約します。