Node.js - Express

Node.js - Express

(2개의 수강평)

1110명의 수강생
Express
무료
지식공유자 · Egoing Lee
95회 수업· 총 7시간 39분수업
평생 무제한 시청
수료증 미발급 강의
수강 난이도 중급이상
재스미니 프로필

수료증! 재스미니 3달 전
쌤 수료증은 발급안되나요?? 

0
jnty0715 프로필

이메일 입력하면 제출이 안됩니다.. jnty0715 3달 전
var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); var template = require('./lib/template.js'); var path = require('path'); var sanitizeHtml = require('sanitize-html'); var app = http.createServer(function(request,response){     var _url = request.url;     var queryData = url.parse(_url, true).query;     var pathname = url.parse(_url, true).pathname;     if(pathname === '/'){       if(queryData.id === undefined){         fs.readdir('./data', function(error, filelist){           var title = 'Welcome';           var description = 'Hello, Node.js';           var list = template.list(filelist);           var html = template.HTML(title, list,             `<h2>${title}</h2>${description}`,             `<a href="/create">create</a>`           );           response.writeHead(200);           response.end(html);         });       } else {         fs.readdir('./data', function(error, filelist){           var filteredId = path.parse(queryData.id).base;           fs.readFile(`data/${filteredId}`, 'utf8', function(err, description){             var title = queryData.id;             var sanitizedTitle = sanitizeHtml(title);             var sanitizedDescription = sanitizeHtml(description, {               allowedTags:['h1']             });             var list = template.list(filelist);             var html = template.HTML(sanitizedTitle, list,               `<h2>${sanitizedTitle}</h2>${sanitizedDescription}`,               ` <a href="/create">create</a>                 <a href="/update?id=${sanitizedTitle}">update</a>                 <form action="delete_process" method="post">                   <input type="hidden" name="id" value="${sanitizedTitle}">                   <input type="submit" value="delete">                 </form>`             );             response.writeHead(200);             response.end(html);           });         });       }     } else if(pathname === '/create'){       fs.readdir('./data', function(error, filelist){         var title = 'WEB - create';         var list = template.list(filelist);         var html = template.HTML(title, list, `           <form action="/create_process" method="post">             <p><input type="text" name="title" placeholder="title"></p>             <p>               <textarea name="description" placeholder="description"></textarea>             </p>             <p>               <input type="submit">             </p>           </form>         `, '');         response.writeHead(200);         response.end(html);       });     } else if(pathname === '/create_process'){       var body = '';       request.on('data', function(data){           body = body + data;       });       request.on('end', function(){           var post = qs.parse(body);           var title = post.title;           var description = post.description;           fs.writeFile(`data/${title}`, description, 'utf8', function(err){             response.writeHead(302, {Location: `/?id=${title}`});             response.end();           })       });     } else if(pathname === '/update'){       fs.readdir('./data', function(error, filelist){         var filteredId = path.parse(queryData.id).base;         fs.readFile(`data/${filteredId}`, 'utf8', function(err, description){           var title = queryData.id;           var list = template.list(filelist);           var html = template.HTML(title, list,             `             <form action="/update_process" method="post">               <input type="hidden" name="id" value="${title}">               <p><input type="text" name="title" placeholder="title" value="${title}"></p>               <p>                 <textarea name="description" placeholder="description">${description}</textarea>               </p>               <p>                 <input type="submit">               </p>             </form>             `,             `<a href="/create">create</a> <a href="/update?id=${title}">update</a>`           );           response.writeHead(200);           response.end(html);         });       });     } else if(pathname === '/update_process'){       var body = '';       request.on('data', function(data){           body = body + data;       });       request.on('end', function(){           var post = qs.parse(body);           var id = post.id;           var title = post.title;           var description = post.description;           fs.rename(`data/${id}`, `data/${title}`, function(error){             fs.writeFile(`data/${title}`, description, 'utf8', function(err){               response.writeHead(302, {Location: `/?id=${title}`});               response.end();             })           });       });     } else if(pathname === '/delete_process'){       var body = '';       request.on('data', function(data){           body = body + data;       });       request.on('end', function(){           var post = qs.parse(body);           var id = post.id;           var filteredId = path.parse(id).base;           fs.unlink(`data/${filteredId}`, function(error){             response.writeHead(302, {Location: `/`});             response.end();           })       });       // 로그인      } else if (pathname === '/login'){       fs.readdir('./data', function(error, filelist){         var title = 'Login';         var list = template.list(filelist);         var html = template.HTML(title, list,           `           <from action="login_process" method="post">             <p><input type="text" name="email" placeholder="email"></p>             <p><input type="password" name="password" placeholder="password"></p>             <p><input type="submit"></p>           </from>`,             `<a href="/create">create</a>`         );         response.writeHead(200);         response.end(html);       });     // 로그인 받기     }else if ( pathname ==='/login_process'){       var body = '';       request.on('data', function(data){           body = body + data;       });       request.on('end', function(){           var post = qs.parse(body);           if(post.email === 'fkxodbs@naver.com' && post.password ==='111111'){             response.writeHead(302, {              'Set-Cookie' : [                `email=${post.email}`,                `password=${post.password}`,                `nickname=egoing`              ],                            Location: `/`             });              response.end();           }else {            response.end('who?');          }       });     } else  {       response.writeHead(404);       response.end('Not found');     } }); app.listen(3000); --------- var http = require('http'); var cookie = require('cookie'); http.createServer(function(request,respone){     console.log(request.headers.cookie)     var cookies = {}     if(request.headers.cookie !== undefined){         cookies = cookie.parse(request.headers.cookie)     }     console.log(cookies.yummy_cookie);     console.log(request.headers.cookie);     respone.writeHead(200, {         'Set-Cookie' : [              'yummy_cookie=choco',              'tasty_cookie=strawberry',             `Permanent=cookies; Max-Age=${60*60*24*30}`,             // Max-Age= 현재 시점을 기준으로 얼마나 살아있을까 정한다             'Secure=Secure; Secure',             'HttpOnly=HttpOnly; HttpOnly',             'Path=Path; Path=/cookie',             'Domain-Domain; Domain=02.org'         ]      })     respone.end('cookie!!') }).listen(3000); 

1
김인태 프로필

sanitizeHtml을 쓰면.... 김인태 3달 전
var sanitizeHtml = require('sanitize-html'); 을 쓰면 바로 module not found가 나와버려요..... 해결해주시면 감사하겠습니다!!

1
김인태 프로필

host:3000에 들어가지지 않습니다 ㅠㅠ 김인태 3달 전

1
jnty0715 프로필

pm2 사용법,, jnty0715 3달 전
cmd , 파워셀 에서 인스톨했는데 VSC에서 터미널 사용하려고하면 에러가 나타납니다...  PS C:\개발자료\in_out page> pm2 start main.js --watch pm2 : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\jnty0\AppData\Roaming\npm\pm2.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https: //go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오. 위치 줄:1 문자:1 + pm2 start main.js --watch + ~~~     + CategoryInfo          : 보안 오류: (:) [], PSSecurityException     + FullyQualifiedErrorId : Unau

0
Hyunseong Ryu 프로필

세션 미들웨어 설치 링크가 잘못되어 있는것 같습니다. Hyunseong Ryu 7달 전
https://youtu.be/ZmFuLoXl2Cg 이 강의가 되어야 하는 것 같아요.

0
Justin Lee 프로필

Justin Lee 8달 전

2
osole 프로필

새로운 챕터를 시작할때마다 소스코드를 제공해 주시기 바랍니다. osole 2019.05.08
쿠키. 세션 ,패스포트 , 다중사용자 ... 처음에 열심히 따라했지만 계속 가면서 뭐가 잘못되었는지 동작이 안되네요. 한번 잘못되면 영원히 잘못되는 구조라서 따라가기가 너무 힘듭니다. 그러다가 멍하니 구경만하고 해도 안되고 그러네요 챕터가 바뀔때마다 예제코드를 올려주시거나 예제가 있는 곳을 알려주시면 감사하겠습니다.

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스