1. 개방 분석
이 기사는 길이가 길지 않기 때문에이 세 가지 모듈에 대해 이야기합니다. 둘째, 이들 사이에 종속성이 있으므로 순서대로 소개되고 분석됩니다. 나는 말도 안되는 말을 많이하지 않을 것입니다. 다음 문서를 참조하십시오.
(1), "URL 모듈"
약간의 밤을 보내 드리겠습니다.
코드 사본은 다음과 같습니다.
var url = 요구 사항 ( 'url');
var queryurl = "http : // localhost : 8888/bb? name = bigbear & memo = helloworld";
console.log (typeof url.parse (queryurl));
console.log (url.parse (queryurl));
실행 결과 :
코드 사본은 다음과 같습니다.
객체 // typeof
{
프로토콜 : 'http :',
슬래시 : 사실,
인증 : null,
호스트 : 'localhost : 8888',
포트 : '8888',
호스트 이름 : 'localhost',
해시 : null,
검색 : '? name = bigbear & memo = helloworld',
쿼리 : 'name = bigbear & memo = helloworld',
PathName : '/bb',
경로 : '/bb? name = bigbear & memo = helloorld',
href : 'http : // localhost : 8888/bb? name = bigbear & memo = helloworld'
}
다음과 같이 설명하십시오.
프로토콜 : 요청 프로토콜
호스트 : 포트 정보를 포함하여 URL 호스트 이름이 소문자로 변환되었습니다.
인증 : 인증 정보는 URL의 일부입니다
호스트 이름 : 호스트의 호스트 이름 부분, 소문자로 변환
포트 : 호스트의 포트 번호 부분
PathName : 쿼리가 요청되기 전에 호스트 이름에 위치한 URL의 경로 부분
검색 : 처음의 물음표를 포함하여 URL의 쿼리 문자열 섹션.
경로 : PathName 및 검색이 연결되어 있습니다.
쿼리 : 매개 변수 부품 (물음표 후 문자열 부분)을 쿼리하거나 QueryString.parse ()를 사용하여 반환 된 객체를 구문 분석합니다.
해시 : URL의 다음 부분 " #"( # 기호 포함)
보충 API : "url.format (urlobj)"
기능 : URL 객체를 입력하여 형식화 된 URL 문자열을 반환하십시오.
(2), "쿼리 스트링 모듈"
"QueryString"모듈은 아래와 같이 URL 매개 변수 문자열과 매개 변수 개체를 서로 변환하는 데 사용됩니다.
코드 사본은 다음과 같습니다.
var url = 요구 사항 ( 'url');
var qs = 요구 사항 ( 'QueryString');
var queryurl = "http : // localhost : 8888/bb? name = bigbear & memo = helloworld";
queryurl = url.parse (queryurl) .query;
Console.log (QueryUrl);
console.log (qs.parse (queryurl));
작업 결과는 다음과 같습니다.
코드 사본은 다음과 같습니다.
이름 = bigbear & memo = helloworld
{
이름 : 'Bigbear',
메모 : 'Helloorld'
}
보충 API :
querystring.stringify (obj, [sep], [eq]) ----- 개체를 쿼리 문자열로 직렬화합니다.
기본 스플리터 ( '&') 및 할당 자 ( '=')를 대체할지 여부를 선택할 수 있습니다.
querystring.stringify ({foo : 'bar', baz : 'qux'}, ';', ':': ') // 다음 문자열'foo : bar; baz : qux '를 반환합니다.
querystring.parse (str, [sep], [eq], [옵션]) ----- 쿼리 문자열을 객체에 제출합니다. 기본 스플리터 ( '&') 및 할당 자 ( '=')를 대체할지 여부를 선택할 수 있습니다.
옵션 객체에는 Maxkeys 속성 (기본값은 1000)을 포함 할 수 있으며, 이는 처리 된 키의 수를 제한하는 데 사용할 수 있습니다. 0으로 설정하면 키 수가 제거 될 수 있습니다.
예 : querystring.parse ( 'foo = bar & baz = qux & baz = quux & corge') // {foo : 'bar', baz : [ 'qux', 'quux'], corge : ''}
(3), "경로 모듈"
이 모듈에는 파일 경로를 처리하고 변환하기위한 일련의 도구가 포함되어 있습니다. 거의 모든 방법은 문자열 만 변환하며 파일 시스템은 경로가 True인지 아닌지 확인하지 않습니다.
먼저 간단한 밤나무를 가지고합시다.
코드 사본은 다음과 같습니다.
var url = 요구 사항 ( 'url');
var qs = 요구 사항 ( 'QueryString');
var path = 요구 ( "경로");
var queryurl = "http : // localhost : 8888/bb? name = bigbear & memo = helloworld";
var root = path.baseName (QueryUrl);
Console.log (루트); // bb? name = bigbear & memo = helloworld
경로의 마지막 부분을 반환하고 "/"로 분할됩니다.
코드 사본은 다음과 같습니다.
var url = 요구 사항 ( 'url');
var qs = 요구 사항 ( 'QueryString');
var path = 요구 ( "경로");
var queryurl = "http : // localhost : 8888/bb? name = bigbear & memo = helloworld";
var root = path.baseName (QueryUrl);
Console.log (루트); // bb? name = bigbear & memo = helloworld
var ext = path.extname (루트);
console.log (ext || "ext name!"); // 이름이 아님!
너무 많은 API로 인해 위에는 일반적으로 사용되는 몇 가지만이 나열되어 있으며 모든 사람은 문서를주의 깊게 읽어야합니다.
2. 포괄적 인 밤
시나리오 설명 ---- 서버는 다른 상황에서 요청을 수신하고 "URL"을 통해 다른 처리를 수행합니다. 코드는 다음과 같습니다.
(1), "index.html"생성
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<title> Bigbear </title>
<meta content = "ie = 8"http-equiv = "x-ua-catible"/>
<meta http-equiv = "content-type"content = "text/html; charset = utf-8">
<스타일 유형 = "텍스트/CSS">
div {
마진 탑 : 50px;
너비 : 100%;
여백 : 0px;
높이 : 120px;
라인 높이 : 120px;
색상 : #ffff;
글꼴 크기 : 22px;
배경 :#FF9900;
텍스트 정렬 : 센터;
}
</스타일>
<script src = "index.js"> </script>
</head>
<body>
<div> 안녕하세요, 빅 베어! </div>
</body>
</html>
(2), "index.js"생성
경고 ( "Hello BB!"); // 테스트 할 코드의 한 문장 만 있습니다
(3) "server.js"생성
코드 사본은 다음과 같습니다.
var http = 요구 사항 ( "http");
var fs = 요구 ( 'fs');
var url = 요구 사항 ( 'url');
var path = 요구 ( "경로");
http.createserver (함수 (요청, 응답) {
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", 함수 (오류, 데이터) {
if (오류) 던지기 오류;
response.writehead (200, {
"콘텐츠 유형": {
".CSS": "Text/CSS",
".js": "Application/JavaScript"
} [extName]
});
응답 (데이터);
응답 ();
});
}
또 다른{
fs.readfile (root + "index.html", "utf-8", 함수 (오류, 데이터) {
if (오류) 던지기 오류;
response.writehead (200, {
"Content-Type": "Text/Html"
});
응답 (데이터);
응답 ();
});
}
}
else if ( "post"== request.url) {
// 여기에서 게시물을 처리합니다
}
}). 듣기 (8888);
Console.log ( "웹 서버 실행, 포트 on ---> 8888");
Node Server.js를 실행합니다.
셋째, 요약합시다
(1) 위의 세 모듈 간의 연결을 이해하고 유연하게 사용하십시오.
(2) 3 개의 모듈 관련 API "URL, QueryString 및 Path"를 사용하는 데 능숙합니다.
(3), 그리고 마지막으로 강조하십시오 : 위의 예에서 코드 의도를 이해하고 지속적으로 리팩터를 요약하고 요약합니다.