본문 바로가기

프로그래밍233

[220210] 템플릿 엔진, nunjuck란? 목록 1. nunjucks의 역할 2. nunjucks의 문법 3. nunjucks 설치법 (링크) 1. 브라우저에 입력된 값을 받아 html을 다시 짜는 nunjucks html이나 css를 사용할때, 서로 다른 파일을 연결하기 위해 script나 style을 사용했었다. 그와 같게 자바스크립트도 독립적으로 존재한다. 그래서 js도 서로를 연결해주는 수단이 필요한데, 그게 바로 템플릿 엔진인 nunjucks다. 그렇다면 템플릿 엔진은 뭘까. 지정된 템플릿 양식에 데이터를 조합해서 HTML문서를 만드는 소프트웨어다. 우리가 보는 웹사이트 화면을 만들어줄때 도와준다고 생각하면 쉽다. 간단히 그림을 그려보자면, 이렇게 이해하면 편하다. 웹서버는 헤더를 읽어주는 express를 통해서 브라우저가 보내주는 요청.. 2022. 2. 10.
[220209] 세션 사용하기 : express-session, memorystore 설치 npm install express-session memorystore 매번 실행할때마다 쿠키를 가져오는 expres-session과 메모리를 저장할 장소에 관한 memorystore 라이브러리기 때문에 npm을 통해서 설치해준다. 세팅 const session = require('express-session') const memorystore = require('memorystore')(session) 세션을 사용할때 3가지를 기억하고 가자 1) 암호화 : 생성하는 결과물들이 겹치지 않게하는 처리 2) 세션을 저장할 공간 : 메모리에 하니? 하드에 하니? 서버에 하니? -> 우리는 메모리에 저장함. 3) 쿠키의 설정 : 세션이라면 기본적으로 필요한 쿠키. 보통은 쿠키의 만료시간이나 쿠키의 범위를 .. 2022. 2. 9.
[220209] 라우터 2개 사용하기, 라우터를 폴더화 시키는 2가지 방법 목록 1) 라우터 2개 사용하기 2) 다른 파일에 있는 코드를 불러오기 3) 라우터를 폴더화 시키기 라우터에 미들웨어 2개 넣기 app.get('/join', (req,res,next)=>{console.log('join1'); next()}, (req,res)=>{console.log('join2')} ) 2개를 이렇게 넣을 수도 있지만 보기에 복잡해서 따로 변수로 받아 넣는 경우가 더 많다. //2) 코드 안에 없으므로 코드 밖에서 a를 찾는다 let a = (req,res,next)=>{ console.log('join1'); next() } app.get('/join', a, (req,res)=>{ //1) a를 코드 안에서 찾는다. //3) a를 실행한다 //4) 그 다음 인자를 실행한다. co.. 2022. 2. 9.
[220208] 라우터와 미들웨어, 매개변수 next, 라우터 매개변수 목록 1. 라우터와 미들웨어 2. 미들웨어 매개변수 next 3) 라우터 매개변수 미들웨어와 라우터의 정의 미들웨어는 양쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어다. 라우터는 클라이언트의 요청경로를 보고 이 요청을 처리할 수 있는 곳으로 기능을 전달해 주는 역할을 한다. 이러한 역할을 라우팅이라고 하는데, URI(통합 자원 식별자, 인터넷에 있는 자원을 나타내는 주소)의 정의와 URI가 클라이언트 요청에 응답하는 방식을 의미한다. express에선 라우터를 미들웨어로 다음과 같은 기능을 제공하고 있다. 1) 라우터 객체 참조 2) 라우팅 함수 등록 3) 라우터 객체를 app객체에 등록 해당 라우터가 실행되면 첫번째 인자값인 '/'을 충족한 후에, 두번째 인자값인 미.. 2022. 2. 9.
[220208] 세션의 정의, 세션 구조 구현하기, 세션과 쿠키🍪의 관계 목차 1. 세션이 생겨난 이유 2. 세션 구현하기 3. 쿠키를 생성해서 서버에 저장하기 세션을 만든 이유 : 보안성을 위해. 이처럼 브라우저에 쿠키가 없으면 웹서버에 요청을 하며, 웹서버는 응답을 하며 🍪쿠키를 준다. 그 이후부터 브라우저는 쿠키를 같이 붙여서 웹서버에 요청을 하고, 웹서버는 쿠키를 붙여서 응답한다. 즉, 웹서버는 기본적으로 항상 쿠키를 받는다. 다만 문제가 있다면, 브라우저에 저장을 하다보니 다른 사람이 접근하기도 쉬워진다. pc방을 예로 들어보자. A가 이용을 끝낸 후, B가 브라우저를 열어 쿠키를 확인하면 로그인정보가 고스란히 남아있다. 그걸 보고 게임머니나 각종 개인정보를 털어갈 수 도 있다. 이를 방지하기 위해, 쿠키를 서버에 저장하게 하는것이 세션이다. 구현할 기능 청사진 청사.. 2022. 2. 9.
[220207] 로그인 페이지 만들기 목록 1. 청사진 그리기 2. login 페이지 3. logout 페이지 4. profile 페이지 청사진 그리기 login페이지 정보를 입력할 창 만들기 & 입력한 정보가 터미널에 찍히도록 만들기. 브라우저에서 입력한 정보와 user라는 객체에 있는 정보가 서로 일치하는지 확인하기 오류해결 [ERR_HTTP_HEADERS_SENT]:Cannot set headers after they are sent to the client at new NodeError 해결하기 코드를 잘못 적어서 에러가 났는데, if문이나 반복문에서 중복된 값이 호출될때 생기는거라고하더라. 보니까 사이트를 2번 호출하게 잘못 적어서 해결함. 로그인이 성공했을때, 쿠키 만들어주기 res.setHeader(`Set-Cookie`,`lo.. 2022. 2. 8.
[220207]크롬에서 개발자도구>네트워크를 켠 상태에서 새로고침을 하면 인터넷이 끊기는 현상 해결 네트워크 수업을 따라가야하는데 크롬에서는 매번 오류가 떠서 환장하겠다. 혼자서 해결을 도저히 못해서 교수님께 질문했고, 5분만에 고쳐주심. 감사합니다ㅠㅠㅠㅠㅠㅠ 개발자도구 > 네트워크로 들어가서 빨간 박스를 누르면 다음같은 박스가 뜨는데, 나는 오프라인으로 되어있었다. 혹시 또 이런일이 일어날지도 모르니까 미래의 나를 위해서 적어놓는다. 그리고 미래의 나야, 앞으로 에러메세지가 뜨면 그거 긁어서 구글에 때려박아서 검색돌리렴. 굳이 한글로 문제 입력하지말고. 그게 가장 최선의 해결방법이야... 2022. 2. 7.
[220207] 쿠키 / http 요청, 응답, 브라우저, 특징 [목록] 사전지식 : 응답헤더에 임의로 값을 추가하기 브라우저의 저장소 중 하나인 쿠키 사용자마다 다른 정보를 브라우저에 저장하는 쿠키값 쿠키 사용 설명서 코드의 실행흐름 쿠키에 저장한 내용을 다루기 쿠기의 유효기간, 접근권한 사전지식 : 응답헤더에 임의로 값을 추가하기 이전수업까지는 body 내용만 작성해서 보냈지 header부분은 작성해서 보낸적이 없다. express가 header부분을 작성해주던 긴 텍스트. 오늘은 express가 만들어주는 헤더에다가 우리가 임의로 추가해서 넣을것이다. 응답을 줄때 헤더에 내용을 추가할거니까 다음 코드를 작성한다. res.Header('headerKey','headerValue') : 둘다 string인 인자값을 가짐 app.get('/',(req,res)=>{ .. 2022. 2. 7.
[220204] nvm 완벽삭제하기, 맥OS(M1칩) nvm is not compatible with the npm config "prefix" option: currently set to "/opt/homebrew" Run `npm config delete prefix` or `nvm use --delete-prefix v16.13.2 --silent` to unset it. 갑자기 터미널을 시작하면 이런 메세지가 뜬다. nvm은 npm 구성 "접두사" 옵션과 호환되지 않습니다: 현재 "/opt/homebrew"로 설정됨 `npm config delete prefix` 또는 `nvm use --delete-prefix v16.13.2 --silent`를 실행하여 설정을 해제합니다. 구글에 검색해보니 이런 메세지가 뜨는데 어.. 뭔 말이지. 그냥 싹 지우고.. 2022. 2. 4.
[220204] 서버로 이루어진 게시판 만들기(CRUD 구현 : 생성,작성,수정,삭제) 목록 1. 홈 만들기 2. 리스트 게시판 만들기 3. 글쓰기 게시판 만들기 4. 글보기 게시판 만들기 5. 글삭제 기능 만들기 6. 글수정 기능 만들기 여태까지 배웠던 내용을 총 정리하면서 게시판을 만들어보자. 웹템플릿 express, 템플릿엔진 nunjucks를 사용하기 위한 전제코드는 밑에 적어놓고, 앞으로 설명할때는 생략하겠다. //express를 쓰기 위한 세팅 const express=require('express') const app=express() //nunjucks를 쓰기 위한 세팅 const nunjucks=require('nunjucks') app.set('view engine','html') nunjucks.configure('views',{ express:app }) //heade.. 2022. 2. 4.