코딩/Today I Learn

11/15 공부정리

코딩쪼렙 2021. 11. 15. 22:05
728x90

WSL

Windows Subsystem for Linux의약자로서

기존의 가상머신의 오버헤드(어떤 처리를 위해 들어가는 간접적인 처리 시간, 메모리) 또는

듀얼 부팅 설정없이 대부분의 명령줄도구, 유틸리티 및 애플리케이션을 비롯한 GNU/Linux 환경을 수정하지 않고 Windows에서 직접 실행할 수 있습니다

Package.json: node.js관련 정보 담는 방법

그냥 텍스트 파일이지만 특정장소(script) 에 입력하면npm i 동작가능

```

"scirpt":{

"dev" : nodemon-L --exc bable-node index.js

}

```

"main" in package.json: the main file of your project

1.

폴더만든후 package.json 파일 만들고

json object로 이름

{

"name":"youtube"

}

2.git repository 만들기

3.npm init 설정하여 npm 으로 package.json 만드는거 돕기

4.npm i express 설치 --> /npm i 로 설치 되는 모든 것들은 nodemodules 파일에 생성됨

npm i 사용시 주의점 !! package.json파일을 꼭 닫고 실행하기 버전충돌이 일어날 수 있음

Dependencies 와 Dev-dependencies

두개 다 node_modules파일에 설치되지만 체계화하기위해서 pakage.json파일에 분리하여 정리함

"Dependencies" :프로젝트가 만들어지기위해 필요한 패키지들

예) express , 설치되는 모든 것들이 nodemodule 폴더로 저장됨

//nodemodule파일은 파일이 크기때문에 .gitignore파일에 /node_modules로 저장 npm i 만 하면 자동으로 설치됨

"Dev-dependecies" : 개발자가 필요한 패키지들

예) babel(최신문법을 이용할 수 있게 도와주는 패키지, bable.config.js 필요), nodemon(파일이 수정되는 걸 감지하여 자동으로 재시작)

Dev-dendencies 설치하기

1.https://babeljs.io/setup#installation node.js용 바벨 설치

[Babel · The compiler for next generation JavaScript

The compiler for next generation JavaScript

babeljs.io](https://babeljs.io/setup#installation)

해당 문서가 시키는 대로 설치, 설정

1-1. npm install --save-dev @babel/core

1-2. Create babel.config.json configuration file

In order to enable the preset you have to define it in your babel.config.json file, like this:

{
  "presets": ["@babel/preset-env"]
}

1-3. npm install @babel/preset-env --save-dev**

2. babel에 nodemon설치

2-1. npm install @babel/core @babel/node --save-dev

2-2. npm i nodemon --save -dev

2-3. "scirpts": {
"dev": "nodemon --exec babel-node src/server.js" 적어주기
},

Node.js 서버만들기

1.불러온 뒤 express application 만들기

import express from "express" // 자동으로 node_modules/express/index.js 찾아줌const app = express( ); //express application 만들어줌

2.application listen app.listen( 어떤 port를 listen 할지 숫자, listening이 시작되면 호출되는 함수 (callback함수))예) app.listen(4000, homehandle);

server는 항상 켜져있는 인터넷으로 request를 listen한다.google.com 에간다면 google.com으로 브라우저가 request한것 google.com/login

서버를 시작했으면 보통 localhost를 통해 접속한다. localhost:4000(portNumber)

nodemon & 서버 종료 Ctrl +c

----------------------------------

3.서버에온 request를 respond하는 법

cannot Get /(서버의 root 또는 첫페이지를 말함 google.com = google.com/ )

http method(get,post) http : 서버와 소통하는 방법

express application 생성

application 설정 가운데 위치

listen , 외부개방

application 설정

app.get("route",handler) //누군가가 route로 get request를 보내면 hanlder사용

app.get("/", handlehome) app에 rootpage로 getRequest 보내는 함수 동작

const handlehome = (req, res) = > console.log("") //한줄의 중괄호가 없는 화살표함수는 return 안적어도 됨 express에서 받은 인자 , 자바스크립트 이벤트리스너 함수인자 event처럼

브라우저가 request 보내면 우리는 response를 return한다.return. res.end();return res.send("hi");

req,res는 express로 부터 주어지는 것 express가 request object제공하고 그 안에는 누가 웹사이트를 request하는지 

cookies,브라우저 정보, ip주소 같은 request 와 관련된 정보가 있음 

5.middleware express 설계와 관련

software in the middle

request response 사이에 있음

                       3가지 인수를 가지고있음 next는 다음 함수 호출
const handlehome = (req, res, next) => {

next( );

}

app.get("/" handleshome, handle) //hanldehome 실행 후 handle실행

6.app.use() //global middleware 만들 수 있게 해줌 

어느 URL(모든 Route)에도 동작하는 middlewrae

순서는 app.get 위에 사용해야 함

app.use(); // global middleware 만들어 줌 

app.get();

 

 

7.서버 // request listening함

브라우저 통해서 웹사이트에게 하는 모든 상호작용 request 행동을 listening하고있음

컴퓨터 전체를 listen 할 수 없음 port가 있어야함

port 4000 리슨 지정 해놓으면 4000만 리슨

url로 request전달

8.모든 controller req, res 갖고잇다. express 로부터 함수에게 전달되어 받음

arrow function{}이 없고 한 줄 일때 return 생략가능

응답은 항상 필 수 file, redirect,text,statucode 등 안해주면 브라우저 계속 로딩

마지막 contorller 에는 next(); 안적음

controller: URL called 사용되는function

method : 클래스내 function

morgan:  HTTP request logger middleware for node.js ,

npm i morgan

설치후 import morgan from "morgan"

const logger = morgan("dev"); //dev, common,short,combined

app.use(logger);