728x90
반응형

synchronous 동기적

asynchronous 비동기적 (병렬적) : Nodejs는 비동기적 처리를 위한 좋은 도구들을 가지고 있음.

- 효율적이지만 복잡.

출처 : 생활코딩

fs모듈 : 파일을 핸들링하는 모듈

Sync가 없으면 비동기적임.

ex )

>> console.log('A');
>> var result = fs.readFileSync('syntax/sample.txt' , 'utf8');
>> console.log(result);
>> console.log('A');

A
sample.txt의 내용
C
>> console.log('A');
>> fs.readFile('syntax/sample.txt' , 'utf8', function(err, result){
>>   console.log(result);
>> });
>> console.log('C');

A
C
sample.txt의 내용

callback : 파일을 읽은 다음에 함수를 호출하는 것. 너 할 거 하고 나중에 날 불러(call back) 라는 느낌의 작업.

C가 sample.txt보다 먼저 console에 출력되는 이유.


이름이 없는 함수 : 익명함수

Package Manager NPM

PM2 설치

npm install pm2 -g
pm2 start syntax/main.js

상황 보기 : pm2 monit

진행중인 프로세스 목록 보기 : pm2 list

끄기 : pm2 stop main

이 때의 main은 pm2 list에서 보이는 name

변경사항 로그 보기 : pm2 log

소스 변경되면 알아서 껐다 켜주기 때문에 소스가 변경됐을 때 reload만 하면 변경사항 반영됨. 일부러 껐다 켜는 수고를 덜 수 있음.

html : placeholder="" 입력칸 가이드

post전송방식 : URL에 쿼리스트링이 남지않음.

Request : 요청할 때 웹브라우저가 보낸 정보들

Response: 응답할 때 우리가 웹브라우저에게 전송할 정보들

var qs = require('querystring');

if (request.method=='POST'){
  var body = '';
  request.on('data', function (data) {
    body += data;

    if (body.length>1e6)
      request.connection.destory();
  });
  request.on('end', function() {
    var post = qs.parse(body);
  });
}

요청된 data의 양이 너무 클 경우 커넥션을 destroy하는 일종의 안전장치

post방식으로 전송된 data를 객체화해서 사용할 수 있음.

 

Nodejs 리다이렉션 : 302번

response.writeHead(302, {Location: `/?id=${title}`});
728x90
반응형
728x90
반응형

 

포트 번호.

기본적으로 정해져있는 건 80번.

 

 

출처 : 생활코딩

쿼리스트링의 시작은 물음표(?)로 하기로 정해져있고

값과 값은 엔퍼센드&,

이름과 값은 =로 구분하기로 정해져있다.

 

 

 

쿼리스트링 분석

var queryData = url.parse(_url, true).query;

 

 

CRUD : Nodejs에서 파일을 읽는 방법

대표사진 삭제

사진 설명을 입력하세요.

CRUD(Create Read Update Delete)

 

fs모듈로 파일 읽기 : fs.readFile()

var fs = require('fs');
fs.readFile('sample.txt','utf8',function(err, data){ console.log(data); });

 

sample.txt의 상위 디렉토리에서 실행할 경우 파일을 못 찾아서 못 읽어오고 undefined를 출력할 때가 있음.

cd __폴더명__으로 디렉토리 전환해줄 것.

(cd .. 상위 디렉토리로 돌아가기,

dir/w 디렉토리 내용 보여주기 (리눅스 ls -al과 같은 역할))

 

대표사진 삭제

사진 설명을 입력하세요.

입력값으로 들어가는 것

Parameter : 입력되는 정보의 형식

Argument : 형식에 맞춘 실제 값

 

response.writeHead() : 웹에서 실제로 접속이 잘 될 때는 200, 접속 오류의 경우 404

if (정상) {
  fs.readFile(`data/${queryData.id}`,'utf8',function(err,description){
        var template = ``
        response.writeHead(200);
        response.end(template);
      })
    } else{
      response.writeHead(404);
      response.end('Not found');
    }

 

 

디렉토리 내부의 파일을 리스트(배열)로 얻어내기 : fs.readdir

var testFolder = './data';
var fs = require('fs');

fs.readdir(testFolder, function(err, filelist){
  console.log(filelist);
})

 

 

 

 

728x90
반응형

+ Recent posts