상세 컨텐츠

본문 제목

Node.js 정리

정리_모음

by go_ra_ni 2021. 7. 22. 11:26

본문

728x90

https://opentutorials.org/course/3332

 

WEB2 - Node.js - 생활코딩

수업소개 이 수업은 JavaScript를 이용해서 Node.js를 제어해 동적으로 HTML 코드를 생성하는 웹애플리케이션을 만드는 방법에 대한 수업입니다.  수업대상 예를들어 1억개의 페이지로 이루어진 웹사

opentutorials.org

 

생활 코딩 강의를 수강하며 정리함

 

node.js 정리
##  서버 여는 법
var http = require('http');
var app = http.createServer(function(request,response){
    var url = request.url;
    if(url == '/'){
      url = '/index.html';
    }
    if(url == '/favicon.ico'){
        response.writeHead(404);
        response.end();
        return;
    }
    response.writeHead(200);

    

    response.end(fs.readFileSync(__dirname + url));
 
});
app.listen(5500);

####
콘솔에 출력: console.log();
변수 : var
변수 안에 변수 : var name = 'ss';  var str = 'abc'+name+"cdf";
Template Literal : ` - 기능은 여러 줄 텍스트 작성 가능 ${안에 변수or 계산 식}

 

####

파일 읽기

 

var fs = require('fs');

fs.readfile('sample.txt', 'utf-8', function(err, data){

    console.log(data);

});

 

file.open 기반이고 인자로 파일경로, 인코딩방법, 플래그 - default : 'r', callback함수로 에러와 data가 들어간다.

 

먼저 파일이 존재하는지 확인 후 읽기를 해야 오류가 발생하지 않음

 

 

response.end(template); 

 

이 부분이 화면에 출력하는 부분이다.

 

readfile 안쪽에 template을 넣어서 HTML 코드를 넣는다.

 

이 description을 동적으로 변하는 본문에 ${description}으로 넣어서 작동시킨다.

 

콘솔에서 입력값 확인하기!

 

인자를 출력하는 코드
1번은 node 파일 경로 2번은 실행 파일 경로 3번부터 입력값이다.

 

Not Found 구현

url의 경로를 변수로설정한다.

 

루트이면 기존 그대로 실행

아니면 404로 not found 출력함

 

홈페이지 본문 구현

 

2중 조건문으로 홈페이지일 경우 구분하여 구현

 

배열:

var = [];

push 사용가능

.length사용가능

 

파일 목록 읽기

 

var testFolder = './data';

var fs = require('fs');

 

fs.readdir(testFolder, function(error, filelist){

console.log(filelist);

});

ㄴㄴ

함수로 중복 제거

function f123(){

  console.log(1);

  console.log(2);

  console.log(3);

  console.log(4);

}

 

동기적 vs 비동기적

 

동기적은 직렬

비동기적은 병렬 실행이라고 생각하면 된다. 

node.js의 성능 향상을 위해 비동기적 방법을 지향한다.

 

 

//js에서는 함수가 값이다. 변수다

var a = function(){

    console.log('A');

}

 

 

callback()

function slowfunc(callback){

callback();

}

 

slowfunc(a);

 

함수 작업이 끝났으니 callback한다. 라는 의미

인자로 a를 넣으면 

var a = function(){

console.log('A');

}

실행됨

 

pm2 - 서버 자동화

 

npm install pm2 -g

 

pm2 start main.js - 서버 시작

pm2 stop main.js - 서버 종료

 

pm2 start main.js --watch - 감시하며 시작 : 업데이트하면 서버가 자동으로 껐다 켜짐

pm2 log : 오류나 수정 내역 보여줌

 

form 데이터 전송하기

 

 

<form action="http://localhost:5500/process_create" method="post"> - post로 해야 url에 표시되지않고 전송가능

<input type="text" name="title">

<p>

    <textarea name="description"></textarea>

</p>

<p>

    <input type="submit">

</p>

</form>

 

 

post 방식으로 전달된 데이터 받기

 

var qs = require('querystring');

쿼리 스트링 헤더

request.on('data'function(data){

            body = body + data;

        });

요청 받은 데이터 받는 함수 

request.on('end'function(){

            var post = qs.parse(body);

            var title = post.title;

            var description = post.description;

        });

정보 저장

 

 

파일 생성

fs.writeFile(`data/${title}`, description, 'utf8', function(err){
                response.writeHead(302,{Location: `/?id=${title}`});
                response.end();

})

: 302가 리다이렉션

인자는 차례대로 파일 저장 경로+ 이름, 내용, 파일 형식, callback

 

 

글 수정 

<a href="/update?id=${title}">update</a>`);

주소 + ?id=title로 수정하는 목표 설정

 

post 방식으로 전달된 정보 

var post = qs.parse(body);

            var id = post.id;

            var title = post.title;

            var description = post.description;

            fs.rename(`data/${id}``data/${title}`function(error){

                fs.writeFile(`data/${title}`description'utf8'function(err){

                    response.writeHead(302,{Location: `/?id=${title}`});

                    response.end();

                });

            });

 

 

data 정보가 바뀔때 리다이렉션 방지용 서버 여는 법

pm2 start main.js --watch --ignore-watch="data/*"

 

 

삭제버튼: post로 하기 위해 form으로 구현

 

<form action="delete_process" method="post" onsubmit="alert(real delete?)">

                            <input type="hidden" name="id" value="${title}">

                            <input type="submit" value="delete">

                           </form>

 

 

삭제 기능

 fs.unlink(`data/${id}`function(error){

                response.writeHead(302, {Location: `/`});

                response.end();

            })

 

 

 

728x90

'정리_모음' 카테고리의 다른 글

photon bulid 창과 unity 내부 game씬 동기화 문제  (0) 2022.08.16
yolov5 class 한글 폰트 적용  (0) 2022.04.09
CSS 정리  (0) 2021.08.09
HTML 태그 정리  (0) 2021.08.04
express정리  (0) 2021.07.29

관련글 더보기