차근차근 공부해보자!
npm is a package manager for the JavaScript programming language.
node.js로 만들어진 package(module)를 설치하고 관리하는 툴이다.
npm install --g webpack
npm init
--force
명령어를 추가하면 package.json 파일을 자동으로 생성해준다.json은 프로그래머가 파일에 정보를 저장하기 위해 만든 방식 중 하나이다.
프로그램을 만들면서 다양한 module을 설치 및 삭제하는 데, 코드 실행을 위해 어떠한 module이 필요한 지 package.json 파일을 통해 확인할 수 있다.
"scripts":{
"start" : "node app.js",
"test" : "node test.js"
}
npm test
를 입력하면 test.js파일을 node에서 실행시키라는 의미이다.
npm run start
프로젝트를 진행할 때 다른 팀원으로부터 전달받은 파일에서 package.json에 기재된 모듈은 자동설치 되지 않기 때문에 npm install
명령어를 터미널에 입력하는 작업이 필요하다.
npm i
(package.json 파일을 꼭 닫고 실행한다.)명령어로 npm이 package.sjon을 보고 dependencies를 찾아서 그 안에 있는 모듈들을 알아서 설치해준다.
package-lock.json은 개발자들이 동일한 node_module 트리를 생성해서 같은 dependencies를 설치할 수 있도록 보장해준다.
node_modules 폴더가 깃허브에 올라가지 않게 숨기기 위해서는
.gitignore
파일 생성 후 /node_modules
입력
최신문법을 가진 코드를 작성할 수 있도록 도와준다.
npm install --save-dev @babel/core
{
"presets": ["@babel/preset-env"]
}
npm install @babel/preset-env --save-dev
npm install -g @babel/node --save-dev
"scripts":{
"dev":"babel-node index.js"
}
파일 수정을 감시해주는 패키지로, 파일이 수정되면 nodemonm이 알아서 재시작해주기 때문에 매번
npm run dev
를 실행할 필요가 없다.
npm i nodemon --save-dev
"scripts": {
"dev": "nodemon --exec babel-node index.js"
}
npm run dev
로 실행한다node로 웹서버 환경 구축 시 사용하는 프레임워크이다. express로 라우팅 설정에 따라 서버를 동작시킬 수 있다.
const express = require('express'); // express 모듈 추가
const app = express();
const port = 3000;
app.get('/', function(req, res){
res.send("야호");
});
app.listen(port, functoin(err){
console.log("Connect port at ${port}")
}); //방법1
import express from "express";
const PORT = 4000;
const app = express(); //step1. express application을 생성한다.
//GET, POST 요청 등등 사용되는 부분.
const handleListening = () =>{
console.log(`Server listening on port ${PORT}`);
}
//step2. applisten()으로 서버와 상호작용하는 모든 일들을 서버는 listening 해야 한다.
// 서버에게 어떤 port를 listening할 건지 알려주고 callback 함수를 인자로 준다.
app.listen(PORT, handleListening);
Route는 다음과 같은 구조를 가진다
app.METHOD(PATH, HANDLER)
app은 express의 instance. METHOD는 HTTP request method. PATH는 서버에서의 경로. HANDLER는 Route가 일치할 때 실행되는 함수.
웹사이트에 접속할 때 브라우저는 서버에게 페이지를 request하고 서버는 거기에 응답한다.(브라우저 안에 웹페이지 존재)
express는 모든 걸 위에서 아래 순으로 실행시킨다.
const handleHome = (req,res)=>{
console.log("Somebody is trying to go home");
}
app.get('/', handleHome);
// home으로 get request가 오면 express는 handleHome에다가 req, res를 보낸다.
app.listen
app.post
app.put
app.delete
request와 response 사이에 있다. 모든 controller(handler)는 middleware가 될 수 있다.
controller는 세개의 argument가 있다. request, response, next
const middleWare = (req, res, next)=>{
console.log("I'm in the middle");
next();
}
const handleHome = (req, res)=>{
return res.end();
}
app.get('/', middleWare, handleHome);
import morgan from "morgan";
const logger = morgan("dev");
app.use(logger);
const app = express();
const userRouter = express.Router();
const handleEditUser = (req, res)=> res.send("");
userRouter.get("/edit", handleEditUser);
app.use("/user", userRouter);
//누군가가 /user로 시작하는 url에 접근하면 userRouter에 있는 컨트롤러를 찾게 한다.
export defualt userRouter; //한개를 export
<- 이렇게 보내면 import에 {} 안 붙여도 된다.
export const trending ~; //여러개를 export
<- 이렇게 보내면 반드시 import에 object{} 붙여야 한다. 반드시 동일한 변수명을 기재해야 한다!
videoRouter.get("/:id(\\d+)",see);
템플릿 엔진.
템플릿을 이용해서 뷰를 만드는 것을 돕는다.
app.set("view engine", "pug");
//express에게 이제부터 사용할 뷰 엔진은 pug라고 말해준다.
express는 기본적으로 현재 작업 디렉터리에서 views라는 디렉터리를 찾도록 설정되어 있기 때문에((process.cwd()) + '/views')
따라서 다음의 코드를 추가해 주어야 한다.
app.set("views", process.cwd()+"/src/views");
package.json이 node.js.를 실행하고 있기 때문에 package.json 파일이 있는 곳이 현재 작업 디렉터리가 된다.
extends
한다는 것은 베이스가 되는 파일을 가져다가 그대로 쓰는 것이다.h1 pageTitle -> "pageTitle" 이라는 text
h1=pageTitle -> pageTitle이라는 variable
h1 #{pageTitle} -> variable을 text와 함께 사용할 때
똑똑한 partial이다. 데이터를 받을 수 있는 일종의 미리 만들어진 HTML block 이라고 볼 수 있다.
partial이긴 한데 데이터를 받을 수 있는 partial을 의미한다.
parital: HTML의 한 조각을 나타내고, 데이터를 받진 못한다.
+
!!
extends
include
block
유튜브는 썸네일, 제목, 조회수가 보이는 비디오 component를 여러 페이지에서 재사용한다.
Divdie&Conquer
Model
View
유저가 보는 대상
Routing refers to determining how an application responds to a client request to a particular endpoint, which is a URL(or path) and a specific HTTP request method(GET, POST, and so on).