오늘 오전에는 어제와 마찬가지로 아침 공부를 하고, 알고리즘 수업을 진행했다. 일단 오늘은 알고리즘에 대해서는 진도를 나가지 않고 알고리즘을 제대로 써먹기 위해 전에 배운 내용들의 복습이 이루어졌는데, 배열과 객체 그리고 각각 자바스크립트에서 제공하는 메서드들이 무엇이 있는지 사용방법에 대해 다시 한번 상기시켜보는 것이 수업의 주된 내용이었다.
오후에는 템플릿 리터럴과 구조분해할당의 이론 및 실습을 통해 좀 더 간결하고 안전하게 변수를 전달하는 방법에 대해 템플릿 만들기로 이해하는 수업을 가졌다. 두 가지다 모두 앞으로 많이 쓰이겠지만, 두 가지를 모두 제대로 사용할려면 아무래도 시간이 걸릴 것 같다.
Hyper Text Transfer Protocol의 약자로 브라우저와 서버가 통신할 수 있도록 만들어주는 규약, 쉽게 얘기하면 일종의 약속이다.
초기에는 http파일을 전송하기 위한 목적으로 만들어졌으나 현재는 JSON, Image 파일 등도 전송이 가능해졌다.
위의 사진은 osi 7계층 입니다. 여기서 4단계의 전송 계층에 프로토콜로 TCP를 사용하고, 3단계의 네트워크 계층에선 IP를 사용한다. 그래서 이 두 계층을 합쳐 TCP/IP라고 합니다.
HTTP의 특징은 클라이언트가 서버에 요청을 보내고 서버는 요청에 대한 응답을 보낸다. 연결상태가 항상 유지되지 않기 때문에 비연결성 프로토콜이라 부르며,
요청과 응답의 방식으로 동작을 하게 된다.
여기서 요청과 응답은 각각 다른 구조를 가지고 서로 메세지를 보내게 된다.
그래서 서버와 클라이언트는 구조를 보고 상대방이 어떤 것을 요구하는지를 알고 그에 맞는 메세지를 전송한다.
ES6에서는 템플릿 리터럴이라고 불리는 새로운 문자열 표기법을 도입하였다. 이것은 기존의 일반 문자열과 비슷해 보이지만, ' 또는 " 같은 통상적인 따옴표 문자 대신 백틱 ₩ 문자를 사용한다. 그래서 예를 들면 template = 템플릿 리터럴은 '작은따옴표(single quotes)'과 "큰따옴표(double quotes)"를 혼용할 수 있다.
또한 일반 문자열에서는 줄바꿈은 허용되지 않으며 공백을 표현하기 위해서는 \로 시작하는 이스케이프 시퀀스를 사용하여야 한다. 그리고 일반적인 문자열과 달리 여러 줄에 걸쳐 문자열을 작성할 수 있으면 리터럴 내의 모든 공백은 있는 그대로 적용된다. + 문자열을 사용하지 않고도 간단하게 변수와 문자열을 합쳐주는 인터폴레이션을 지원한다. ex)
let fist = "GilDong"
let last = "Hong"
console.log(내 이름은 ${first} ${last}입니다.
)
여기서 ${} 안에 있는 변수는 강제로 문자열로 변환된다.
배열이나 객체의 속성을 해체하여 그 값을 각각의 변수에 담을 수 있게 해주는 자바스크립트의 기능이다. ex)
이용 전
let arr = [1,2,3]
const one = arr[0]
const two = arr[1]
const three = arr[2]
이용 후
let arr = [1,2,3]
const [one,two,three] = arr
이런 식으로 좀 더 간단하게 사용이 가능해졌다. 그래서 배열에 있는 1,2,3 값이 각각 변수 one two three에 할당이 되게 된다. 객체의 경우, 배열과 방식이 비슷하지만, 객체의 키 값과 변수명을 일치를 시켜줘야 한다. ex)
let obj = { name : "철수", age : 10}
const {name, age} = obj
위와 같이 키 name과 age를 똑같이 변수명으로 주고 obj를 할당해줘야 각각의 값이 제대로 할당이 된다.
[그림 출처:https://shlee0882.tistory.com/110]