Nodejs 학습항목【시작하기】_node.js
1. 설치
먼저 http://nodejs.org로 이동하여 다운로드하고 설치하세요. 제가 다운로드한 버전은 0.8.14 입니다. 설치는 매우 간단합니다. 다음 단계만 진행하면 됩니다. 그런 다음 해당 경로에 설치 디렉터리를 구성하면 msi가 npm(Node Package Manager)을 함께 설치합니다.
내 설치 디렉터리는 C:Program Files (x86)nodejs입니다. 이때 cmd 명령창node -v
과 npm -v
명령을 이용하여 설치된 버전을 확인
1.1, 헬로월드
Node.js 프로젝트 디렉터리에 hello.js라는 새 파일을 만들고 그 안에 코드 한 줄을 입력하세요
console.log('hello, nodejs.') ;
명령줄 콘솔에 들어가서 Node.js 프로젝트 디렉토리를 입력하고 node hello.js를 입력하세요
콘솔 출력 "hello, nodejs."
1.2, helloworld 웹 버전
Node.js 프로젝트 디렉토리에 새로운 http.js를 생성합니다. 코드는 다음과 같습니다
var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/html"}); response.write("Hello World!"); response.end(); }).listen(8000);
명령줄에서 서비스를 시작하고 node http.js를 입력하세요
그런 다음 브라우저 주소 표시줄을 열고 http://localhost:8000/을 입력하세요. 페이지에 Hello World!가 출력되면 성공한 것입니다.
node.js 버전은 API와 동기화되어야 합니다
node.js의 버전 번호는 일반 버전이고, 홀수 버전은 불안정 버전입니다.
2 HelloWorld 코드 분석
자, 이제부터 HelloWorld를 한 줄씩 분석해 보겠습니다.
소개 모듈
var http = require("http");
require 메소드는 모듈을 소개하는 데 사용되며 매개변수는 모듈의 이름입니다. 예를 들어 파일 시스템 모듈은 다음과 같이 도입할 수 있습니다.
var fs = require("fs");
require() 메소드를 전역 메소드로 사용할 수 있지만 실제로는 특정 모듈에 속하는 로컬 메소드에 더 가깝습니다. 해당 문서는 https://nodejs.org/api/globals.html에 있습니다. .
require 메소드는 특정 모듈의 인스턴스를 반환합니다. 예를 들어 require("http")는 HTTP 인스턴스를 반환합니다. HTTP 예제에 대한 참조 문서는 https://nodejs.org/api/http.html에 있습니다.
HTTP 모듈에는 두 번째 코드 줄과 관련된 createServer() 메서드가 있는 것을 볼 수 있습니다.
서버 생성
HTTP 모듈의 createServer() 메소드는 메소드를 매개변수로 받아들이고 프로토타입은 다음과 같습니다.
http.createServer([requestListener])
requestListener는 http.Server 클래스의 요청 이벤트와 연관된 메소드입니다. 이런 방식으로 클라이언트 요청이 도착하면 requestListener가 호출됩니다.
requestListener에는 두 개의 매개변수가 있으며 함수 프로토타입은 다음과 같습니다.
function (request, response) { }
첫 번째 매개변수 요청 유형은 http.IncomingMessage
인터페이스를 구현하는 Readable Stream
입니다.
두 번째 매개변수의 유형은 http.ServerResponse
인터페이스를 구현하는 Writeable Stream
입니다.
Stream의 API는 https://nodejs.org/api/stream.html에 있습니다. 동시에 요청과 응답도 특정 이벤트를 내보낼 수 있는 EventEmitters입니다.
EventEmitter의 API는 https://nodejs.org/api/events.html#events_class_events_eventemitter에 있습니다. 나중에 EventEmitter를 사용하여 이벤트를 내보내고 처리하는 방법에 대해 설명하겠습니다.
서버를 생성한 코드를 검토해 보겠습니다.
http.createServer( function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World!"); response.end(); } ).listen(8000);
http.createServer는 http.Server 인스턴스를 반환합니다. http.Server의 수신 메소드를 사용하면 서버가 특정 포트(예: 8000)에서 수신 대기할 수 있습니다.
보시다시피 createServer 메소드에 익명 함수를 제공합니다. 이 방법에서는 응답 매개변수를 통해 "Hello World!" 메시지를 클라이언트에 다시 작성합니다.
고객 요청 분석
앞서 http.createServer 메소드를 분석했습니다. 해당 매개변수는 두 개의 매개변수를 갖는 메소드입니다. 하나는 클라이언트가 보낸 요청을 나타내고 다른 하나는 클라이언트에 다시 쓸 응답을 나타냅니다. 요청 매개변수를 살펴보겠습니다.
요청은 http.IncomingMessage
의 인스턴스입니다. 이 인스턴스를 통해 HTTP 메소드, HTTP 버전, URL, 헤더 등과 같은 요청 매개변수를 얻을 수 있습니다. 특정 API는 https://nodejs.org에 있습니다. /api /http.html#http_http_incoming메시지.
HelloWorld.js를 수정하여 살펴보겠습니다(HelloWorld2.js로 저장). 코드는 다음과 같습니다.
// 引入http模块 var http = require("http"); // 创建server,指定处理客户端请求的函数 http.createServer( function(request, response) { console.log("method - " + request.method); console.log("version - " + request.httpVersion); console.log("url - " + request.url); response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World!"); response.end(); } ).listen(8000); console.log("Hello World start listen on port 8000");
如你所见,我使用console这个对象来输出了一些调试信息,打印了HTTP方法、版本、url等信息。可以执行node HelloWorld2.js,浏览器访问http://localhost:8000,然后跑到命令行看看输出了什么信息,我这里是这样的:
我们简简单单的HelloWorld已经可以发送一些响应数据给客户端,你在浏览器里能看到“Hello World!”字样。这个响应是通过http.ServerResponse
的实例response
发送给客户端的。
http.ServerResponse
也是一个Stream
,还是一个EventEmitter。我们通过它给客户度返回HTTP状态码、数据、HTTP头部等信息。
HTTP模块
在Node.js的HTTP模块,状态行就是通过http.ServerResponse的writeHead方法写给客户端的。writeHead方法原型如下:
response.writeHead(statusCode[, statusMessage][, headers])
这个方法的第一个参数,就是statusCode,也就是200、403之类的数字,剩下的参数是可选的。最后一个参数是headers,你可以在这里使用JSON对象表示法来写一些HTTP头部,比如:{“Content-Type”:”text/plain”,”Content-Length”:11}
。第一个可选参数statusMessage用来指定一个状态描述消息,可以不填写。
HTTP头部
头部就是一些key-value对,比如我们在HelloWorld里看到的”Content-Type”,就是用来说明数据类型的头部标签,对应的可能是文本文件、图片、视频、二进制等。类似的还有”Content-Length”,用来指定数据长度。还有很多很多,比如”Date”、”Connection”等。具体还是参考前面的链接吧。
头部还可以使用http.ServerResponse的response.setHeader(name, value)
方法来单独设置,一次可以设置一个HTTP头部。
数据
头部之后就是数据了,有些状态码,比如200,后续都会有一些数据。而有些,比如301、404、403、500之类的,多数没有数据。
数据通过http.ServerResponse的write方法来写回给客户端,比如这样:
response.setHeader("Content-Type", "text/html");
这里要提一点,HTTP常见的数据传输编码方式有两种:
设置Content-Length,传输固定长度的数据设置Transfer-Encoding头部为chunked,分块传输数据
像我们现在的HelloWorld示例,没有设置Content-Length头部,Node.js的HTTP模块就默认为chunked编码。
我们使用Chrome浏览器的开发者工具来查看网络数据,可以很明确的看到。如下图所示:
HTTP响应
我标注出来的三处,都是HelloWorld示例传递给浏览器的HTTP头部信息。
我们通过http.ServerResponse的write方法向客户端写数据。你可以一次写入所有数据,也可以把数据分开来多次写入。当要传输的数据量较大时,分多次写入就是比较合理的做法,比如你向客户端发送大文件,就比较适合分多次写入,也可以利用Node.js的异步特性,获得不错的性能。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Node.js와 Tomcat의 주요 차이점은 다음과 같습니다. 런타임: Node.js는 JavaScript 런타임을 기반으로 하는 반면 Tomcat은 Java Servlet 컨테이너입니다. I/O 모델: Node.js는 비동기식 비차단 모델을 사용하는 반면 Tomcat은 동기식 차단 모델을 사용합니다. 동시성 처리: Node.js는 이벤트 루프를 통해 동시성을 처리하는 반면 Tomcat은 스레드 풀을 사용합니다. 애플리케이션 시나리오: Node.js는 실시간, 데이터 집약적, 동시성 애플리케이션에 적합하고 Tomcat은 기존 Java 웹 애플리케이션에 적합합니다.

Node.js는 서버측 JavaScript 런타임인 반면, Vue.js는 대화형 사용자 인터페이스를 생성하기 위한 클라이언트측 JavaScript 프레임워크입니다. Node.js는 백엔드 서비스 API 개발, 데이터 처리 등 서버 측 개발에 사용되고, Vue.js는 단일 페이지 애플리케이션, 반응형 사용자 인터페이스 등 클라이언트 측 개발에 사용됩니다.

Node.js는 고성능, 확장성, 크로스 플랫폼 지원, 풍부한 생태계, 개발 용이성 등의 기능을 제공하므로 백엔드 프레임워크로 사용할 수 있습니다.

Node.js 설치 디렉터리에는 npm과 npm.cmd라는 두 가지 npm 관련 파일이 있습니다. 차이점은 다음과 같습니다. 확장자가 다릅니다. npm은 실행 파일이고 npm.cmd는 명령 창 바로 가기입니다. Windows 사용자: npm.cmd는 명령 프롬프트에서 사용할 수 있으며, npm은 명령줄에서만 실행할 수 있습니다. 호환성: npm.cmd는 Windows 시스템에만 해당되며 npm은 크로스 플랫폼에서 사용할 수 있습니다. 사용 권장사항: Windows 사용자는 npm.cmd를 사용하고, 기타 운영 체제는 npm을 사용합니다.

예, Node.js는 백엔드 개발 언어입니다. 서버 측 비즈니스 로직 처리, 데이터베이스 연결 관리, API 제공 등 백엔드 개발에 사용됩니다.

Node.js에는 다음과 같은 전역 변수가 존재합니다. 전역 개체: 전역 핵심 모듈: 프로세스, 콘솔, 필수 런타임 환경 변수: __dirname, __filename, __line, __column 상수: undefine, null, NaN, Infinity, -Infinity

MySQL 데이터베이스에 연결하려면 다음 단계를 따라야 합니다. mysql2 드라이버를 설치합니다. mysql2.createConnection()을 사용하여 호스트 주소, 포트, 사용자 이름, 비밀번호 및 데이터베이스 이름이 포함된 연결 개체를 만듭니다. 쿼리를 수행하려면 Connection.query()를 사용하세요. 마지막으로 Connection.end()를 사용하여 연결을 종료합니다.

Node.js와 Java는 각각 웹 개발에 장단점이 있으며 선택은 프로젝트 요구 사항에 따라 다릅니다. Node.js는 실시간 애플리케이션, 신속한 개발 및 마이크로서비스 아키텍처에 탁월한 반면, Java는 엔터프라이즈급 지원, 성능 및 보안에 탁월합니다.
