ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 0122
    카테고리 없음 2024. 1. 22. 21:33

     

     

    새 폴더 생성

    yarn init -y  // 초기화

    yarn add express mongoose  // express, mongoose 라이브러리 설치

    package.json 파일에서 "type" : "module", 삽입

    app.js 파일 생성 / 

     

    import express from 'express';

    const app = express();


    // Express에서 req.body에 접근하여 body 데이터를 사용할 수 있도록 설정합니다.
    app.use(express.json()); 
    app.use(express.urlencoded({ extended: true })); 

    : express 를 가져와서 app 을 생성하게 되고, app 에다 전역으로 미들웨어 등록 app.use ....

     

    [terminal]

    mv ~/Downloads/todo-list-static-files.zip ./             //다운로드 폴더의 todo 파일을 터미널 현재폴더로 옮김

    mkdir assets                    //assets 폴더 형성

    mv todo-list-static-files.zip ./assets                    //assets 폴더로 todo 파일 이동

    cd assets

    unzip todo-list-static-files.zip        //unzip

     

    mongoose 를 이용하여 MongoDB 에 연결

    export default connect; 로 내보내고

     

    import connect from "./schemas/index.js";

    connect ();  로 연결

     

    schema 설계 (데이터와 형식을 정의하는 것이 중요한 요소)

     

    미들웨어

    서버의 요청(Request)-응답(Response) 과정에서 중간에 위치하여 특정 기능을 수행하는 함수

    순서대로 작동하기 때문에 코드 순서가 중요하다.

     

     

    미들웨어를 거치는 중간에 next() 가 실행되지 않으면 다음 미들웨어는 실행되지 않고, 클라이언트의 요청은 거기서 종료

     

    res.send()이나 res.json()등의 메서드를 호출하는 경우에는 next() 를 호출하면 안된다. 
    이미 요청이 종료된 상태에서 다른 미들웨어가 응답을 보내려고 하여 중복된 요청이 전달되는 문제가 발생하게 된다.

     

     

     

     

     

     

    @@ 베이직 TIL 

    1)

     

    아파넷 : 최초의 성공한 네트워킹 프로젝트

    월드와이드웹 : 1990년 최초 웹 서버 & 그래픽 웹 브라우저

    엔더센의 모자익 ( Mosaic ) : 최초의 인기있는 웹 브라우저

    엔더센의 Netscape Navigator : 사람들을 위한 최초의 브라우저

     

    1995년 이후 Microsoft 에서 Internet Explorer 개발 - 온라인에 접속할 수 있는 방법이 늘어 브라우저 전쟁의 시대가 열린다.

    Netscape 의 JavaScript 제작 & 출시 / Microsoft 의 CSS (cascading style sheets) 출시

    Microsoft 가 Windows 운영 체제와 함께 IE 를 배포하면서 시장의 99% 를 차지

    Netscape 는 Firefox 로 대응

     

    JS 는 웹 페이지에 더 많은 상호작용성을 부여하기 위한 목적으로 개발

     

    브라우저에 따라 웹 페이지가 정상동작하지 않는 크로스 브라우징 이슈 발생 -> ECMAScript5 로 해결

     

    4) chrome의 등장 에 dynamic re(n)dering 오타가 있는 것 같습니다

     

    2008년 V8 자바스크립트 엔진을 탑재한 google 사의 Chrome 브라우저 등장

    2009년 node 탄생 (event loop & non-blocking I/O)

     

    JS 

    웹 브라우저에서 동작하는 유일한 프로그래밍 언어

    개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어

    명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어

     

     

     

    2) 점점 이해가 안되기 시작한다. 필요한 듯한 내용을 정리해본다.

     

    파서 : 렉시컬 분석, 신택스 분석, Abstract Syntax Tree 순

     

    JS 엔진 내부는 크게 Memory Heap & Call stack

    Memory Heap : 데이터를 임시 저장하는 곳, 함수나 변수, 함수 실행 시 사용하는 값들을 저장하며 GC(Garbage Collection) 이 있다.

    Call stack : 코드가 실행되면 순서를 기록하고 하나씩 순차적으로 꺼내 실제 실행할 수 있도록 도와주는 공간으로 LIFO 원칙을 따른다.

     

    JS는 싱글스레드 이기 때문에 event loop, callback queue, web APIs 이 필요하다.

     

    3) 무슨말이지..? libuv 가 중요한 특성인 것은 알겠는데 이해가 하나도 안된다...ㅠㅜㅠㅜㅠ

     

    Node.js 는 크게 JS 로 이루어진 라이브러리 부분, 서로다른 언어를 연결해주기 위한 binding, 거의 C++로 만들어진 V8엔진 부분, C++로 구성된 이벤트 루프의 핵심 부분인 libuv 로 이루어져 있다.

     

    libuv : 이벤트 기반 비동기 처리를 가능하게 해주는 핵심 부분

Designed by Tistory. KYW