>  기사  >  웹 프론트엔드  >  node.js를 사용하여 간단한 웹 서버를 구축하는 방법에 대한 튜토리얼

node.js를 사용하여 간단한 웹 서버를 구축하는 방법에 대한 튜토리얼

高洛峰
高洛峰원래의
2017-02-21 14:39:231465검색

이 기사의 주제는 노드를 사용하여 가장 간단한 웹 서버를 구축하는 것입니다. 나중에 필요에 따라 더 자세히 알아볼 수 있습니다. 현재는 개발 과정에서 서버와의 간단한 상호 작용을 시뮬레이션하는 데 사용할 수 있습니다. 리소스 제어 반환 등 필요한 친구들은 참고로 참고할 수 있습니다.

머리말

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 폴더에 액세스하려는 경우입니다.

먼저 현재 파일을 동일한 레이어에 넣거나 직접 다운로드한 후 다음 명령을 입력하여 웹 서비스를 시작할 수 있습니다.

  1. 먼저 `cmd`를 열고 `test` 디렉토리와 같이 서버 파일이 있는 디렉토리를 입력한 후 `

    `(동일 레이어)을 입력합니다. `
  2. `(하위 레이어),
  3. node server debugnode server이때 서비스가 성공적으로 시작되었음을 나타내는 `

    ` 메시지가 표시됩니다.
  4. 마지막으로 브라우저를 열고 `127.0.0.5:8085`를 입력하여 이 리소스에 액세스하세요.

    server running at http://www.php.cn/:8085/


  5. 마지막으로

위 코드에 대한 간략한 설명입니다. 우선, 상단의 require는 어떤 모듈을 사용해야 하는지 나타냅니다. 먼저 인용해 주세요.

arg는 위의 입력 명령줄의 세 번째 매개변수를 나타냅니다. 수동으로 수행됨

createServer 메소드는 http 서비스를 생성하고 함수를 매개변수로 사용하며 이 기사의 코드에 익명 함수가 전달됨을 의미합니다. 🎜>

req 는 요청 메서드, 요청 쿼리 매개변수, 요청 헤더 정보 등과 같은 클라이언트의 http 요청 관련 정보를 전달하는 http 요청(요청) 개체를 나타냅니다. >


res 는 요청된 리소스를 클라이언트에 반환하는 데 사용되는 http 응답(반환) 개체를 나타냅니다. 반환된 데이터, 반환된 헤더 정보 등, 반환된 코드 등과 같은 정보를 수동으로 추가할 수 있습니다. ;


fs는 파일 리소스 개체를 나타냅니다. 특히 nodejs 공식 웹사이트의 API에 액세스할 수 있으며, 리소스를 나타냅니다. path 객체, 특히 nodejs 공식 웹사이트의 API에 액세스할 수 있습니다.
  1. listen은 생성된 서비스 수신을 나타냅니다. 이 포트에 액세스하면 이전 익명 함수 콜백을 입력하고 클라이언트에 리소스를 반환합니다.
  2. node.js를 사용하여 간단한 웹 서버를 구축하는 방법에 대한 더 많은 튜토리얼을 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.