ホームページ  >  記事  >  ウェブフロントエンド  >  NodeJS 学習メモ (Url、QueryString、Path) module_node.js

NodeJS 学習メモ (Url、QueryString、Path) module_node.js

WBOY
WBOYオリジナル
2016-05-16 16:20:271094ブラウズ

1、分析を開始します

この記事では、それぞれの長さがそれほど長くないため、これら 3 つのモジュールをまとめて説明します。次に、それらの間には依存関係があるため、順番に紹介し、例を示して分析します。早速、次のドキュメントをご覧ください:

(1)、「URL モジュール」

これは小さな栗です:

コードをコピーします コードは次のとおりです:

var url = require('url');
var queryUrl = "http://localhost:8888/bb?name=bigbear&memo=helloworld" ;
console.log(url.parse(queryUrl) のタイプ) ;
console.log(url.parse(queryUrl)) ;

実行結果:

コードをコピーします コードは次のとおりです:

オブジェクト // typeof

{
プロトコル: 'http:',
スラッシュ: true、
認証: null、
ホスト: 'localhost:8888',
ポート: '8888'、
ホスト名: 'localhost',
ハッシュ: null、
検索: '?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
内の認証情報部分 ホスト名: ホストのホスト名部分が小文字の
に変換されました。 Port: ホストのポート番号部分
パス名: URL のパス部分。ホスト名の後、クエリ
をリクエストする前にあります。 検索: URL の「クエリ文字列」部分 (先頭の疑問符を含む)。
パス: パス名と検索が結合されます。
クエリ: クエリ文字列のパラメーター部分 (疑問符の後の文字列の部分)、または querystring.parse() を使用した解析後に返されるオブジェクト。
ハッシュ:URLの「#」以降の部分(#記号を含む)

補足 API: "url.format(urlObj)"

機能: URL オブジェクトを入力し、フォーマットされた URL 文字列を返します。

(2)、「QueryString モジュール」

「QueryString」モジュールは、URL パラメーター文字列とパラメーター オブジェクトを相互に変換するために使用されます。以下に示す例を示します。

コードをコピーします コードは次のとおりです:
var url = require('url');
var qs = require('クエリ文字列');
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
{
名前: 'ビッグベア'、
メモ:「helloworld」
}

補足 API:

Querystring.stringify(obj, [sep], [eq])-----オブジェクトをクエリ文字列にシリアル化します。

デフォルトの区切り文字 ('&') と分散文字 ('=') をオーバーライドするかどうかを選択できます。

Querystring.stringify({foo: 'bar', baz: 'qux'}, ';', ':')// 次の文字列 'foo:bar;baz:qux' を返します

querystring.parse(str, [sep], [eq], [options])-----クエリ文字列をオブジェクトに逆シリアル化します。デフォルトの区切り文字 (「&」) と分散文字 (「=」) をオーバーライドするかどうかを選択できます。

options オブジェクトには、処理されるキーの数を制限するために使用できる maxKeys 属性が含まれる場合があります。
を設定すると、キーの数の制限が解除されます。
例: querystring.parse('foo=bar&baz=qux&baz=quux&corge') // { foo: 'bar', baz: ['qux', 'quux'], corge: '' }

(3)、「パスモジュール」

このモジュールには、ファイル パスを処理および変換するためのツールのセットが含まれています。ほとんどすべてのメソッドは文字列を変換するだけであり、ファイル システムはパスが実際のもので有効であるかどうかをチェックしません。

シンプルな栗から始めましょう:

コードをコピーします コードは次のとおりです:

var url = require('url');
var qs = require('クエリ文字列');
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('クエリ文字列');
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 || "拡張名ではありません !") // 拡張名ではありません !
;

API が多すぎるため、よく使用される API のみを上にリストします。ドキュメントを注意深く読む必要があります。

2 つの総合栗

シナリオの説明-----サーバーはさまざまな状況でリクエストを受信し、「URL」を通じてリクエストをさまざまに処理します。コードは次のとおりです:

(1)、「index.html」を作成します

コードをコピー コードは次のとおりです:

 
 
     <頭>
         ビッグベアー
        
        
        
        
    
    
        
こんにちは、大熊!

    
 

(2)、建立”index.js”

alert("こんにちは bb !") ; // 為了测试就这么一句代码
  (3),建立”server.js”

复制代码代码如下:

var http = require("http");
var fs = require('fs');
var url = require('url');
var path = require("path") ;
http.createServer(function(リクエスト,レスポンス) {
    var メソッド = request.method ;
    メソッド = メソッド.toLowerCase() ;
    var fileName = path.basename(request.url) ;
    var extName = path.extname(ファイル名) ;
    var root = "./" ;
    if("get" == メソッド){
        if(extName){
            fs.readFile("./" ファイル名,"utf-8",function (error,data){
                if(error) エラーをスローします ;
                response.writeHead(200,{
                    「コンテンツタイプ」: {
                         ".css": "テキスト/css" ,
                         ".js" : "アプリケーション/JavaScript"
                  }[extName]
                }) ;
                応答.write(データ) ;
                応答.end() ;
            });
        }
        それ以外{
            fs.readFile(root "index.html","utf-8",function (error,data){
                if(error) エラーをスローします ;
                response.writeHead(200,{
                    "Content-Type" : "text/html"
                });
                応答.write(データ) ;
                応答.end() ;
            });
        }
    }
    else if("post" == request.url){
        // ここで投稿を処理します
    }
}).listen(8888) ;
console.log("Web サーバーが実行中、ポートは ---> 8888") ;

 
  ノードserver.jsは次に進みます。

三、总结一下

(1)、上記の 3 つのモジュール間の関係を理解し​​て、アクティブに使用します。 (2)、「Url、QueryString、Path」という 3 つのモジュール関連の API をよく使用します。
(3)、最後の注意:上記の例のコード図は、継続的に再構成され、継続的に行われます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。