Node.js 웹,TCP 서버 만 들 기
웹 서버 기능:
HTTP 요청 수락(GET,POST,DELETE,PUT,PATCH)
HTTP 요청 처리(자체 처리 또는 다른 프로그램 요청)
응답 하기(페이지,파일,각종 데이터 등 을 되 돌려 줍 니 다)
일반적인 웹 서버 구조:
Nginx,Apache:HTTP 요청 을 받 아들 이 고 누가 요청 을 처리 할 지 확인 하고 요청 한 결 과 를 되 돌려 줍 니 다.
php-fpm/php 모듈:자신 에 게 분 배 된 요청 을 처리 하고 처리 결 과 를 분배 자 에 게 되 돌려 줍 니 다.
일반적인 요청 종류:
요청 파일:정적 파일(웹 페이지,그림,전단 자바 스 크 립 트 파일,css 파일...)및 프로그램 에서 처리 한 파일 포함
특정 작업 완료:예 를 들 어 로그 인,특정 데이터 획득 등
Node.js 웹 서버:
다른 특정 웹 서버 소프트웨어 에 의존 하지 않 음(예:Apache,Nginx,IIS...)
Node.js 코드 처리 요청 의 논리
Node.js 코드 는 웹 서버 의 각종"설정"을 책임 집 니 다.
Express 로 웹 서버 만 들 기
간단 한 Express 서버
정적 파일 서비스
경로
중간 부품
간단 한 Express 서버:
var express = require('express');
var app = express();
app.get('', function(req, res){
<span style="white-space:pre"> </span>res.end('hello
');
<span style="white-space:pre"> </span>});
<span style="white-space:pre"> </span>app.listen(18001, function afterListen(){
<span style="white-space:pre"> </span>console.log('express running on http://localhost:18001');
<span style="white-space:pre"> </span>});
정적 파일 범위:웹 페이지,일반 텍스트,그림,전단 자 바스 크 립 트 코드,CSS 스타일 시트 파일,미디어 파일,글꼴 파일
Express 로 정적 파일 에 접근 하기
<span style="white-space:pre"></span>app.use(express.static('./public'));
경로:서로 다른 요 구 를 상응하는 처리 함수 에 분배 하 다
구분:경로,요청 방법
세 가지 경로 실현 방법:
path:비교적 간단 합 니 다.
Router:같은 경로 아래 의 여러 하위 경로 에 적합 합 니 다.
route:API 에 적합
중간 부품
Connect:Node.js 의 미들웨어 프레임 워 크
분 층 처리
층 마다 하나의 기능 을 실현 하 다.
TCP 서버 생 성
net 모듈 로 TCP 서버 만 들 기
telnet 로 TCP 서버 연결 하기
net 로 TCP 클 라 이언 트 만 들 기
node.js 를 이용 하여 간단 한 웹 서버 JS 코드 부분 구축:
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var dir, arg = process.argv[2] || ''; // , , , server.js
// node server debug, debug server.js
// debug web
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;
dir = dir ? dir : pathname; // dir( )
pathname = dir ? pathname.replace(dir, dir + arg + '/') : pathname; //
if (path.extname(pathname) == "") {
pathname += "/";
}
if (pathname.charAt(pathname.length - 1) == "/") {
pathname += "index.html"; // , index.html
}
fs.exists(pathname, function (exists) {
if (exists) {
switch (path.extname(pathname)) {
case ".html":
res.writeHead(200, {"Content-Type": "text/html"});
break;
case ".js":
res.writeHead(200, {"Content-Type": "text/javascript"});
break;
case ".css":
res.writeHead(200, {"Content-Type": "text/css"});
break;
case ".gif":
res.writeHead(200, {"Content-Type": "image/gif"});
break;
case ".jpg":
res.writeHead(200, {"Content-Type": "image/jpeg"});
break;
case ".png":
res.writeHead(200, {"Content-Type": "image/png"});
break;
default:
res.writeHead(200, {"Content-Type": "application/octet-stream"});
}
// res header
fs.readFile(pathname, function (err, data) {
res.end(data);
});
}
else {
res.writeHead(404, {"Content-Type": "text/html"});
res.end("<h1>404 Not Found</h1>");
}
});
}).listen(8085, "127.0.0.5"); //
console.log("server running at http://127.0.0.5:8085/");
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Grunt에서 즉석 템플릿 엔진이 필요했기 때문에 마침내 만들었습니다.jade 라든지 ejs 라고도 좋지만, 보다 심플하게 하고 싶다고 생각해. json을 떨어 뜨렸다. 플레이스홀더(:TAG)를 마련해, 이런 HTML 만들어 둔다. template.html 자리 표시자의 문자열을 키로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.