티스토리 뷰
생활코딩님 강의와 함께 간단한 웹 앱을 제작해 보았다.
<설계서>
1. 기본 세팅
먼저 app_files.js 파일에 express와 post방식을 쓰기 위한 body-parser를 설치해주었다.
포트 번호 지정도 해주었고 listen 메소드 이용하여 연결을 해주었다.
db대신 fs(파일) 기능을 쓸 것이기 때문에 fs 모듈도 가져왔다.
//간단한 웹앱 제작기 230427, 생활코딩 app_files.js
const port = 3000;
var express = require('express'); //express 모듈 가져옴.
var app = express();
//post 사용하기 위한, body-parser 설치.
var body_parser = require('body-parser');
app.use(body_parser.urlencoded({ extended: false }));
//파일 시스템 다운
var fs = require('fs');
app.locals.pretty = true; //jade 코드 예쁘게 줄 바꿈 해주는 코드
app.use(express.static('public_files')); //정적 페이지.
app.set('view engine', 'jade'); //jade, express 템플릿 연결 코드
app.set('views', './views_files'); //jade 파일을 넣어야됨. views가 기본값이라 생략이 가능하긴함.
//app.listen(port); //포트번호 지정.
app.listen(port, function() {
console.log('Connected ' + port + ' port!');
});
2. ' supervisor app_files.js ' 로 실행시, 변경사항이 있어도 재 실행시켜줄 필요가 없다.
설치 (windows) -> npm install supervisor -g
3. 메인 페이지를 보여주는 메소드 . 파일들의 읽어 화면에 보여주는 view.jade를 보여줌.
1) ['/topic', 'topic/:id'] -> 둘 중 하나만 들어와도 이 메소드로 들어옴.
2) fs.readdir -> 폴더 읽기 기능
3) fs.readFile() -> 파일 읽기 기능
4) id값이 있을 때와 없을 때를 구별하여 작성해야한다.
app.get(['/topic', '/topic/:id'], function(req, res) {
fs.readdir('data', function(err, files){ //폴더 읽기 .
if (err) {
console.log('error 발생!!\n' + err);
res.status(500).send('Internal Server Error!');
}
//topic/:id로 접근했을 때. id값이 있을 때.
var id = req.params.id;
if (id) {
fs.readFile('data/'+id, 'utf8', function(err, data) {
if (err) {
console.log('error 발생!!\n' + err);
res.status(500).send('Internal Server Error!'); //에러 났으면 보여주는 코드
}
res.render('view', {topics:files, title:id, data:data}); // 파일의 내용들까지 전달.
});
} else { //id값이 없을 때.
res.render('view', {topics:files, title:'Welcome', data: 'Nodejs Express!'});
}
});
});
4. 파일 쓰기 기능 추가 (post로 받아올 시)
new.jade에서 작성한 form을 파일로 작성해주는 fs.writeFile 기능을 작성해주고 view.jade로 redirect 해주었다.
app.post('/topic', function(req, res) {
fs.writeFile('data/'+req.body.title, req.body.des, function(err){
if (err) {
console.log('error 발생!!\n' + err);
res.status(500).send('Internal Server Error!'); //에러 났으면 보여주는 코드
}
res.redirect('/topic/'+req.body.title); //다시 보내버릴 수 있는 code
});
});
5. 글 쓰기 기능을 수행하는 페이지 만들기
app.get('/topic/new', function(req, res) {
fs.readdir('data', function(err, files){ //폴더 읽기 .
if (err) {
console.log('error 발생!!\n' + err);
res.status(500).send('Internal Server Error!');
}
res.render('new', {topics:files, title:'Welcome', data: 'Nodejs Express!'});
});
});
<실행 결과>
redirect 된 모습
'node js' 카테고리의 다른 글
[express] mongoose 와 vs code 실행시 설치 에러 해결방법 / SyntaxError: Unexpected token '?' (0) | 2023.04.29 |
---|---|
[express] post 방식 이용한 정보의 전달: body-parser 이용 (0) | 2023.04.27 |
[express] get방식 이용한 정보의 전달 : jade 이용. (0) | 2023.04.27 |
[express] 시멘틱 URL (Clean URL) (0) | 2023.04.27 |
[express] Express, URL 을 이용한 정보의 전달, 표현식 (0) | 2023.04.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 커리어멘토링
- 패스트캠퍼스강의
- 프로젝트후기
- #국비지원취업
- 데이터베이스
- 백엔드개발자
- 과정중간회고
- TiL
- 카카오API
- 채팅기능개발
- be
- 야놀자X패스트캠퍼스부트캠프
- 그룹스터디
- qjzl
- 패스트캠퍼스
- springboot
- Java
- 백엔드부트캠프
- 부트캠프
- 국비지원
- 자료구조
- 국비지원취업
- 야놀자
- 자료구조 #스택 #큐 #덱 #선형자료구조
- 백준
- 국비지원캠프
- 그룹스터디워크샵
- 백엔드
- 스터디후기
- boj
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함