Node.js란?
2023. 11. 27. 03:28ㆍNode.js
728x90
반응형
현재 참여 중인 프로그래머스 데브코스 수업에서 Node.js를 사용하여 간단한 서버를 구동시켜보았다.
//index.js
let server = require('./server');
let router = require('./router');
let requestHandler = require('./requestHandler');
const mariadb = require('./database/connect/mariadb')
mariadb.connect();
server.start(router.route, requestHandler.handle);
//server.js
let http = require('http');
let url = require('url');
function start(route, handle) {
function onRequest(request, response) {
let pathname = url.parse(request.url).pathname;
let queryData = url.parse(request.url, true).query;
route(pathname, handle, response);
}
http.createServer(onRequest).listen(8888);
}
exports.start = start;
//route.js
function route(pathname, handle, response) {
if (typeof handle[pathname] == 'function') {
handle[pathname](response, productId);
}
else {
response.writeHead(404, {'Content-Type' : 'text/html'});
response.write('Not Found');
response.end();
}
}
exports.route = route;
//requestHandler.js
const fs = require('fs');
const main_view = fs.readFileSync('./main.html', 'utf-8');
const mariadb = require('./database/connect/mariadb');
function main(response) {
console.log('main');
mariadb.query("select * from product", function(err, rows) {
console.log(rows);
});
response.writeHead(200, {'Content-Type' : 'text/html'});
response.write(main_view);
response.end();
}
let handle = {};
handle['/'] = main;
exports.handle = handle;
//mariadb.js
const mariadb = require('mysql');
const conn = mariadb.createConnection(
{
host: 'localhost',
prot: 3306,
user: 'root',
password: 'root',
database: 'tennis'
}
);
module.exports = conn;
Javascript 파일 5개로
server.js 의 코드 몇 줄이면 된다
서버가 구동하는 것이 매우 충격적이었다.
위의 코드들로 서버를 만들어보았지만 수업 코드를 단순히 따라친 것에 불과해 nodejs의 기본 개념과 원리를 더 공부해보았다.
Node.js란?
Javascript Runtime 플랫폼이다. 쉽게 Javascript 실행기라고 생각하면 좋다.
nodejs 이전에 Javascript는 브라우저에서만 실행이 가능했었다. 하지만 nodejs가 나오면서 브라우저를 벗어나 단독으로 실행이 가능해졌다. 이로 인해 Backend 개발이 가능해진 것이다.
특징
- Chrome V8 JavaScript 엔진 기반
- 단일 쓰레드(Single Thread)와 이벤트 기반
- 비동기 I/O 처리 (Non-Blocking I/O)
- 고성능 네트워크 서버
- 개발 생산성 향상
- 방대한 모듈 제공 (NPM)
모듈
- Node.js의 모듈은 CommonJS 방식을 따름
- Node.js는 모듈 단위로 기능을 분할
- 모듈은 파일과 1대1 대응
- 하나의 모듈은 자신만의 독립적 스코프를 가짐
exports, module.exports
- 모듈은 독립적인 파일 스코프를 갖음
- 때문에 모듈 안에 선언한 모든 것들은 해당 모듈 내부에서만 참조 가능
- 만약 모듈 안에 선언한 항목을 외부에 공개하여 다른 모듈들이 사용할 수 있게 하고 싶다면 exports 객체를 사용
- 공개된 모듈은 require 함수를 사용해 임포트
- exports는 module.exports의 alias
require
- 전역함수인 require로 다른 모듈을 임포트
- 임포트 후 exports 객체를 통해 공개된 부분 사용
코어 모듈
nodejs에 기본적으로 포함되어 있는 모듈을 코어 모듈이라고 한다. 코어 모듈은 경로 없이 바로 사용가능하다.
const http = require('http');
외부 모듈 (npm)
nodejs는 npm을 통하여 외부 모듈을 사용할 수 있다. 마찬가지로 경로 없이 사용가능하다. (설치 했다면)
외부 모듈들은 npmjs.com에서 검색 가능하다.
//npm install mysql 명령어로 설치한다.
const mariadb = require('mysql');
728x90
반응형
'Node.js' 카테고리의 다른 글
express.js의 Middleware (0) | 2023.12.15 |
---|