이 기사의 주제는 노드를 사용하여 가장 간단한 웹 서버를 구축하는 것입니다. 나중에 필요에 따라 더 자세히 알아볼 수 있습니다. 현재는 개발 과정에서 서버와의 간단한 상호 작용을 시뮬레이션하는 데 사용할 수 있습니다. 리소스 제어 반환 등 필요한 친구들은 참고로 참고할 수 있습니다.
머리말
Nodejs를 사용하여 웹 서버를 구축하는 것은 Node.js를 배우기 위한 포괄적인 입문 튜토리얼입니다. 웹 서버. http 프로토콜 모듈, 파일 시스템, URL 구문 분석 모듈, 경로 구문 분석 모듈 및 301 리디렉션 문제와 같은 Nodejs의 몇 가지 중요한 모듈을 배워야 합니다. 간단한 웹 서버를 구축하는 방법에 대해 간략하게 이야기하겠습니다.
웹 서버를 사용하지 않고 브라우저 측에서 로컬 리소스에 접근하고 싶다면, 자체적으로 소규모 웹 서버를 시작할 수 있는 파이어폭스 브라우저를 사용하면 된다.
노드를 처음 접하는 분들이 전반적으로 이해할 수 있도록 이 글에서는 코드를 최대한 단순화하도록 노력하겠습니다.
준비
먼저 nodejs를 설치해야 합니다. 현재는 공식 홈페이지에서 v0.12를 다운로드 받을 수 있습니다. 로컬에 설치된 버전입니다.
설치가 완료된 후 명령줄을 통해 설치 성공 여부를 테스트할 수 있습니다. node -v
을 입력하면 현재 설치된 노드 버전 번호가 표시됩니다.
이 글에 사용된 모듈은 모두 nodejs 핵심 모듈이므로 외부에서 다운로드할 필요가 없습니다. 필요한 경우 npm install xxx
명령을 사용하여 설치할 수 있습니다.
시작
다음 단계에서는 server.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://www.php.cn/:8085/");
시작
노드 설치가 완료되고 위의 server.js 파일이 생성되었습니다. 액세스하려는 폴더와 함께 동일한 레이어 또는 바로 아래에 배치하세요. 예를 들어 d:testdebug 폴더에 액세스하려는 경우입니다.
먼저 현재 파일을 동일한 레이어에 넣거나 직접 다운로드한 후 다음 명령을 입력하여 웹 서비스를 시작할 수 있습니다.
먼저 `cmd`를 열고 `test` 디렉토리와 같이 서버 파일이 있는 디렉토리를 입력한 후 `
`(동일 레이어)을 입력합니다. `node server debug
node server
이때 서비스가 성공적으로 시작되었음을 나타내는 `
server running at http://www.php.cn/:8085/
마지막으로
위 코드에 대한 간략한 설명입니다. 우선, 상단의 require는 어떤 모듈을 사용해야 하는지 나타냅니다. 먼저 인용해 주세요.
arg는 위의 입력 명령줄의 세 번째 매개변수를 나타냅니다. 수동으로 수행됨createServer 메소드는 http 서비스를 생성하고 함수를 매개변수로 사용하며 이 기사의 코드에 익명 함수가 전달됨을 의미합니다. 🎜>
res 는 요청된 리소스를 클라이언트에 반환하는 데 사용되는 http 응답(반환) 개체를 나타냅니다. 반환된 데이터, 반환된 헤더 정보 등, 반환된 코드 등과 같은 정보를 수동으로 추가할 수 있습니다. ;