수업소개
페이지 생성 기능을 Express 버전으로 전환하는 방법을 살펴보겠습니다.
강의
소스코드
main.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | var express = require( 'express' ) var app = express() var fs = require( 'fs' ); var path = require( 'path' ); var qs = require( 'querystring' ); var sanitizeHtml = require( 'sanitize-html' ); var template = require( './lib/template.js' ); //route, routing //app.get('/', (req, res) => res.send('Hello World!')) app.get( '/' , function (request, response) { 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.send(html); }); }); app.get( '/page/:pageId' , function (request, response) { fs.readdir( './data' , function (error, filelist){ var filteredId = path.parse(request.params.pageId).base; fs.readFile(`data/${filteredId}`, 'utf8' , function (err, description){ var title = request.params.pageId; 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.send(html); }); }); }); app.get( '/create' , function (request, response){ 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.send(html); }); }); app.post( '/create_process' , function (request, response){ 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(); }) }); }); app.listen(3000, function () { console.log( 'Example app listening on port 3000!' ) }); |