<ctrl>
+ c
: 서버 종료시(Mac OS에서도 control + c)pkill -f node
: ctrl + c로도 종료 안될때 강제 종료npm install --save nodemon // 다운로드
{ "scripts": { "start": "nodemon index.js" }, }
V8 complies JS directly to native machine code
→ 자바스크립트를 기계어로 컴파일 해준다!
프로그래밍 언어가 구동되고 있는 환경
→ 유저의 클릭이나 네트워크에 리소스를 요청하는 이벤트가 논블로킹으로 이루어지는 Input Output model
유저의 버튼 클릭이나 네트워크에 리소스를 요청 하는 것 등
Node.js란 JavaScript를 컴파일 하여 구동하고, 이벤트 기반의 non blocking 모델로 되어 있어 속도가 빠르다는 장점을 가지고 있는 JS런타임
별도의 설치를 하지 않아도, node 상에서 쓸 수 있는 모듈이 있다.
npm을 활용하기 위한 정보들이 모여있는 파일 뿐만 아니라 proj 전반에 관한 정보가 들어있다!
{
// project에 관한 정보
"name": "recast.ly", // proj name
"version": "1.0.0", // version
"description": "", // proj에 대한 설명
"main": "index.js",
// 설정된 script 코드
"scripts": { // 어떤 스크립트 코드를 설정하였는가
"start": "webpack-dev-server --config ./webpack.config.js --mode development",
"build": "webpack --mode production",
"test": "jest"
},
"keywords": [], // 키워드
"author": "", // 코드를 작성한 사람
"license": "ISC",
// 개발과 관련된 dependency들, 어떤 라이브러리를 사용하였는지 나타내고 있다
"devDependencies": {
"@babel/core": "^7.2.2",
"@babel/preset-env": "^7.2.3",
"@babel/preset-react": "^7.0.0",
"babel-core": "^7.0.0-bridge.0",
"babel-eslint": "^10.0.1",
"babel-jest": "^23.6.0",
"babel-loader": "^8.0.5",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"enzyme": "^3.8.0",
"enzyme-adapter-react-16": "^1.7.1",
"eslint": "^5.12.0",
"eslint-loader": "^2.1.1",
"eslint-plugin-react": "^7.12.3",
"jest": "^23.6.0",
"react-addons-test-utils": "^15.6.2",
"react-test-renderer": "^16.7.0",
"webpack": "^4.28.1",
"webpack-cli": "^3.2.1",
"webpack-dev-server": "^3.1.14"
},
"dependencies": {
"react": "^16.7.0",
"react-dom": "^16.7.0"
}
}
cli에서 해당 코드를 실행시킨다.
{ "scripts": { "start": "webpack-dev-server --config ./webpack.config.js --mode development", "build": "webpack --mode production", "test": "jest" }, }
production과 관계 없는 개발만을 위한 dependency.
$ yarn add @babel/core --dev //or $ npm install @babel/core --save-dev //--dev 옵션을 줘서 등록한다.
직접 production과 관련있는 dependency
$ yarn add react // or $ npm install --save react // npm을 쓸 때는 --save 옵션을 줘야한다.
npm init package name: (package-name) version: (1.0.0) description: npm start test entry point: (script.js) test command: // 테스트는 어떤 명령어로 실행시킬 것 인지 git repository: // 깃 레포는 어디인지 keywords: // 어떤 키워드를 가지고 author: // 코드를 작성한 사람은 누군지 license: (ISC)
상기의 일을 마치고 나면 package.json파일이 생성된다.
// JSON 파일 { "name": "package-name", "version": "1.0.0", "description": "npm start test", "main": "script.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
Step 1 : 도메인 이름 탐색
- IP 주소 : 스마트폰이나 노트북부터 대규모 소매 웹 사이트의 콘텐츠를 서비스하는 서버에 이르기까지 인터넷상의 모든 컴퓨터는 숫자를 사용하여 서로를 찾고 통신하며, 이러한 숫자를 IP 주소라고 한다. IP 주소는 인터넷에서 단말기별 인식 번호로 음성통화를 위한 전화번호와 동일한 개념.
- DNS (Domain Name System) : DNS 또는 Domain Name System이란 도메인과 서버를 연결해주는 중간 서버로, 사람이 읽을 수 있는 도메인 이름(예: www.example.com)을 머신이 읽을 수 있는 IP 주소(예: 12.34.56.78)로 변환시켜 원하는 컴퓨터를 찾아갈 수 있도록 한다.
[TIL]웹은 어떻게 동작할까? (2)
Step2 : 웹 서버(HTTP) 요청
단순하게 정적 파일만 제공하는 경우 다음과 같이 조회(URL) | 서버가 비즈니스 로직을 실행하도록 요청할 수도 있다 |
---|---|
![]() | ![]() |
Step 1 Fails (도메인네임을 찾지 못하는 경우) | Step 2 Fails (http status code : 리소스를 찾지 못할 경우) |
---|---|
![]() | ![]() |
HTTP request
GET /docs/index.html HTTP/1.1 //리소스를 요청하는 URL Host: www.codestates.com Accept: image/gif, image/jpeg, Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
HTTP request
HTTP/1.1 200 OK Date: Sun, 18 Oct 2009 08:56:53 GMT Server: Apache/2.2.14 (Win32) Last-Modified: Sat, 20 Nov 2004 07:16:26 GMT ETag: "10000000565a5-2c-3e94b66c2e680" Accept-Ranges: bytes Content-Length: 44 Connection: close Content-Type: text/html X-Pad: avoid browser bug <html><body><h1>It works!</h1></body></html> // 실제적인 컨텐츠 내용
Verb | Endpoint | Action |
---|---|---|
GET | /api/users | 모든 사용자를 조회 |
POST | /api/users | 새 사용자를 리스트에 추가 |
PUT | /api/users/{username} | 특정 사용자의 정보를 갱신 |
DELETE | /api/users/{username} | 특정 사용자의 정보를 삭제 |
GET | /api/users/{username} | 특정 사용자의 정보를 조회 |