Node.js
- html
- css
- javascript
- deeperjs
- node.js
- site
- web
- wish list
기타
- \ : 코드 안에서만 줄을 바꿀시
\n : 코드 밖에서만 줄을 바꿀시
literal
- template literal : 물결무늬 밑에있는 따옴표(grave accent)
- 변수는 ${variable} : 변수로 인식
- 숫자의 덧셈도${1+1} : 2로 나옴
url
- http :// opentutorials.org : 3000 / main ? id=HTML&page=12
- http = protocol
- opentutorials.org = host(domain) : 특정한 인터넷에 연결된 컴퓨터를 가리키는 주소
- 3000 = port(포트번호/ 디폴트:80), 한 대의 컴퓨터 안에 여러대의 서버가 있을 수 있다.
클라이언트가 접속했을 때 그 중의 어떤 서버와 통신할지 결정. (300번 포트와 연결된 서버와 통신)
- main = path(어떤 Directory의 어떤 file인지)
- id=HTML&page=12 = query string
- query string : 시작은 물음표로(?), 값과 값 사이는 &(ampersend) 사용, 값의 이름과 값은 =(equal)로 구분
- url,fs와 http는 모듈.
모듈이란? node.js가 가지고 있는 수많은 기능들을 비슷한 것들끼리 그룹핑 해놓은걸 모듈이라고 한다
var url = require('url'); : require은 모듈을 불러옴.
앞으로 url이라는 변수로 url이라는 모듈을 불러올거야 라는 뜻.
- var url = require('url');
var _url = request.url;
var queryData = url.parse(_url,true).query;
console.log(queryData.id);
response.end(queryData.id);
query string 부분의 값이 표시된다.
- parse:분석
Parsing Query String in node js
CRUD(Create Read Update Delete)
- 정보를 다루는 핵심적인 요소.
- 생성과 읽기(Create and Read)를 먼저 익히고 Update와 Delete를 배우자.
- fs.read(path[,options],callback) : 파일 읽기
- const fs = require('fs');
fs.readFile('sample.txt', 'utf8', function(err,data){
  console.log(data);
});
- cd.. : 부모 디렉토리
- dir/w : 디렉토리 내부 파일 보기
본문도 바꾸기
- data폴더를 만들어 각 페이지의 본문 내용만 복사해서 파일명을 query string의 이름과 동일하게
만들어서 저장. fs.readFile(`data/${queryData.id}`,'utf8',function(err,description)
으로 query string과 파일명이 일치하는 파일을 읽게하고 template 안에 파일 즉, 본문이 들어갈 부분에
${description}을 입력한다.
콘솔에서의 입력값
- IO(input and output)
- input의 종류 : Parameter = 입력되는 정보의 형식/ argument = Parameter에 맞게 입력된 값.
- web에서는 url parmeter를 통해 입력 값(argument)을 주고 그 결과를 HTMl로 출력(output).
- output : cosole에서는 그 값을 console 화면에 출력, 프린트로 출력, 파일로 저장
- var args = process.argv;
console.log(args);
배열을 출력. 첫번째 자리에는 node js runtime이 어디에 위치하고 있는지 알려줌.
두번째 자리에는 실행시킨 이 파일에 대한 경로 제공.
세번째 자리부터 콘솔에서 실행시킨 파일명 뒤에 작성한 입력값을 출력.
따라서, var args = process.argv;
console.log(args[2]);
이라고 파일을 수정하고 콘솔에 node paramters.js zheng
이라고 치면 'zheng'이라는 배열의 값만 출력.
- if(args[2]==='1'){
  console.log('a');
}else{
  console.log('b');
}
배열의 인덱스 2의 값을 비교하여 결과를 출력하는 조건문.
콘솔에 입력한 숫자는 문자로 인식.
Not found 구현
- console.log(url.parse(_url,true));
Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?id=HTML',
  query: [Object: null prototype] { id: 'HTML' },
  pathname: '/',
  path: '/?id=HTML',
  href: '/?id=HTML'
}
이런 배열을 출력.
-
pathname : 경로. 말그대로 파일을 서버에서 불러올때 그 파일이 위치한 곳을 나타냄/로 이루어짐.
path : query string을 포함해서 pathname 뒤에 오는 모든 것.
if(pathname === '/'){
response.writeHead(200);
response.end(template);
}else{
response.writeHead(404);
response.end('Not found');
}
절대경로로 파일을 찾을 경우 Not Found로 보내버림.
response.writeHead(200) = Server가 browser한테 파일을 성공적으로 전송했다.
response.writeHead(404) = 파일을 찾을 수 없음.
synchrodous(동기) 와 asynchronous(비동기)
- 동기 : 일을 하나 끝내면 다음일로 한번에 하나씩 순차적으로 하는 것.
- 비동기 : 일을 하나 시켜 놓고 끝나면 알리게 한다음 그동안 다른일들을 처리하는 것.
효율적이지만 매우 복잡.