fs.readFile()
: 파일 읽기 기능
var http = require('http');
var fs = require('fs');
var url = require('url');
var app = http.createServer(function(request,response){
var _url = request.url;
var queryData = url.parse(_url, true).query;
var title = queryData.id;
if(_url == '/'){
title = 'Welcome';
}
if(_url == '/favicon.ico'){
return response.writeHead(404);
}
response.writeHead(200);
fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
var template = `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ul>
<li><a href="/?id=HTML">HTML</a></li>
<li><a href="/?id=CSS">CSS</a></li>
<li><a href="/?id=JavaScript">JavaScript</a></li>
</ul>
<h2>${title}</h2>
<p>${description}</p>
</body>
</html>
`;
response.end(template);
})
});
app.listen(3000);
JavaScript-Boolean
- Boolean형: true, false
** true, false는 변수 이름으로 사용 불가
JavaScript-비교연산자
- 비교연산자: == (===), != (!==), >=, <=, >, <
대입 연산자와의 차이 중요
** ==는 데이터 종류에 상관 없이 출력된 결과만 같으면 같음,
===는 데이터 종류까지 같아야 같음
JavaScript-제어문
- 제어문 사용시 시간의 흐름에 따라서 위에서부터 차례대로 실행되는 코드를 제어할 수 있음
- 조건문, 반복문 +a
JavaScript-조건문
- 조건문: 조건에 따라서 코드의 실행 흐름을 바꿀 수 있게 해주는 제어문
if (조건문) {
명령문;
}
else {
명령문;
}
ex)
console.log('A');
console.log('B');
if(false){
console.log('C1'); // false이기때문에 실행되지 않음
} else {
console.log('C2');
}
console.log('D');
>A
B
C2
D
var args = process.argv; //콘솔창에서 배열로 입력받기
console.log(args[2]); // 배열의 세번째 값 출력
console.log('A');
console.log('B');
if(args[2] === '1'){ // 배열의 세번째 값이 1이라면
console.log('C1');
} else {
console.log('C2');
}
console.log('D');
** process.argv
: 프로세스에 전달된 인수를 저장하는 배열
process 객체의 argv로 접근하면 시작할 때 뒤에 오는 인자 값들을 순서대로 사용할 수 있음
// node argument.js test1 test2
console.log(process.argv[0]); // NODE_PATH\node.exe
console.log(process.argv[1]); // ARGUMENT.JS_PATH\arguments.js
console.log(process.argv[2]); // test1
console.log(process.argv[3]); // test2
console.log(process.argv0); // == argv[0] // .으로도 접근 가능
console.log(process.argv1); // undefined
19.1. App 제작-Not found 구현
- 사용자가 root로 접근했는지 아닌지 판별해
해당 파일이 없다면 Not found출력var http = require('http'); var fs = require('fs'); var url = require('url'); var app = http.createServer(function(request,response){ var _url = request.url; var queryData = url.parse(_url, true).query; var pathname = url.parse(_url, true).pathname; var title = queryData.id; if(pathname === '/'){ // 사용자가 접속한 URL의 pathname가 /라면 fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ //원래 파일 출력 var template = ` <!doctype html> <html> <head> <title>WEB1 - ${title}</title> <meta charset="utf-8"> </head> <body> <h1><a href="/">WEB</a></h1> <ul> <li><a href="/?id=HTML">HTML</a></li> <li><a href="/?id=CSS">CSS</a></li> <li><a href="/?id=JavaScript">JavaScript</a></li> </ul> <h2>${title}</h2> <p>${description}</p> </body> </html> `; response.writeHead(200); response.end(template); }); } else { // 사용자가 접속한 URL의 pathname가 /이 아니라면 404, Not found 출력 response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
19.2. App 제작-홈페이지 구현
while(조건문){
명령문;
}
** while문 사용시 실행 중지 조건을 잘 설정하는 것이 매우 중요
ex)
console.log('A');
console.log('B');
var i = 0;
while(i < 2){
console.log('C1');
console.log('C2');
i = i + 1;
}
console.log('D');
> A
B
C1
C2
C1
C2
D
- for, forEach, do while 등의 조건문도 사용 가능
ex)
var arr = ['A','B','C','D'];
console.log(arr[1]);
console.log(arr[3]);
arr[2] = 3; //배열 수정 가능
console.log(arr);
console.log(arr.length);
arr.push('E');
console.log(arr);
> B
D
[ 'A', 'B', 3, 'D' ]
4
[ 'A', 'B', 3, 'D', 'E' ]
.length
: 배열의 원소개수 구하는 함수
.push
: 배열 끝에 데이터 추가하는 함수
- 배열은 복수의 데이터를 보관하는 그릇
반복문은 복수의 반복되는 작업을 처리하는 도구
ex)var number = [1,400,12,34]; var i = 0; var total = 0; while(i < number.length){ // 배열의 길이 전까지 (인덱스는 0부터 시작) total = total + number[i]; i = i + 1; } console.log(`total : ${total}`); total : 447