목록Backend (45)
나의 발자취
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NU5XQ/btsJVDzBxMz/jYkZ0xFP3vIUGxwKBEUpV1/img.png)
정답지 유출: 결론부터 말하자면...all we need to do isres.render를 res.json으로 바꿔주는 작업이 메인이다.그러므로 필요한 부분만 복사해서, 변경해가면서 작업을 하면 매우 간단하게 마무리할 수 있다. + 작업 내역의 로그는 내 깃허브의 api.js 커밋 히스토리를 보면 작업 순서대로 잘 남겨놓았다.https://github.com/est22/habit_web/commits/main/api.js GitHub - est22/habit_webContribute to est22/habit_web development by creating an account on GitHub.github.com 스타트1. nodemon api 업데이트아래 line 6("api": "nodemon..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bRPjHC/btsJU1l3BUw/UXRLBds1KY21WIhs1F3X4K/img.png)
res.render("habit_record_list", { records: rows });에서 콜론(:)은 객체의 속성을 정의하는 방식이다.즉, 이 문장은 JavaScript의 객체 리터럴 구문을 사용하고 있는데, rows는 app.get() 함수 내에서 사용하고 있는 변수다.의미속성 이름과 값:records: rows는 records라는 속성을 정의하고 그 값으로 rows 변수를 할당하는 것이다. 즉, records라는 이름으로 rows의 데이터를 템플릿으로 전달하는 것이다.템플릿에서의 접근:EJS 템플릿 내에서는 records라는 이름으로 이 데이터를 사용할 수 있다. 예를 들어, records.forEach(item => { %>와 같이 접근할 수 있다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/u9aoB/btsJQkAuqRL/81fR9S635DCPkPN01N59ik/img.png)
1. 필요 패키지 설치npm init -ynpm i express ejs express-session cookie-parser moment nodemon 으로 필요한 것들 설치 2. package.json 의 "scripts":에다가"dev":"nodemon app.js", 추가 3. app.js 생성 후 서버 띄우기const express = require('express');const cookieParser = require('cookie-parser');const expressSession = require('express-session');const app = express();const PORT = 3000;app.listen(PORT, () => { console.log(`${POR..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lCHD1/btsJOmMc4dD/8TKioAsbly10kzGkE4Vvx0/img.png)
app.get("/list")를 수정해줄것이다.db.serialize(() => { db.run(create_sql);});app.get("/list", (req, res) => { let sql = `select id, title, content, author, createdAt, count from posts order by 1 desc`; db.all(sql, [], (err, rows) => { if (err) { res.status(500).send("Internal Server Error"); } else { console.log(JSON.stringify(rows)); res.render("list", { posts: rows }); } })..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/69HBU/btsJPpHIKH1/xphT9CUk5bMtM7n4IK2KqK/img.png)
1. sqlite module importnpm을 사용해서 sqlite 모듈을 임포트하고(npm i sqlite3), 아래처럼 sqlite3 작업을 해준다.const sqlite3 = require("sqlite3");const path = require("path");// DB settingconst db_name = path.join(__dirname, "post.db");const db = new sqlite3.Database(db_name); 2. post.db 파일 생성그리고 터미널 창에서 npm run dev를 해준다그러면 post.db 파일이 새로 생기게 된다. (터미널 창의 노드몬 에러 무시) 3. create_sql 변수 정의이제 app.set() 아래에 SQL문을 작성해주는 creat..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kxIED/btsJLTcfsFp/zlAp6MtbSxnoZosSfkYRz1/img.png)
템플릿 엔진은 동적인 HTML 페이지를 쉽게 생성할 수 있다.템플릿 엔진은 HTML 파일에 node.js로 짠 데이터를 주입하여 동적으로 콘텐츠를 생성한다. 요즘 웹개발의 JS 프레임워크 엔진으로는 별도의 React, Vue.js 등을 사용하긴 하지만.. node를 쓰면서 간단하게 템플릿으로 웹개발을 할 수 있는 방법 중 하나로 HTML 템플릿 엔진인 PUG, Handlebars, EJS를 하나씩 사용하면서 각자의 차이점들을 맛보는 시간이다. PUGPUG 템플릿 엔진을 작업하기 위한 사전작업1. 패키지 설치 새로운 빈 폴더를 만들고, 터미널에 npm init -y 를 친다. 그리고 npm i express npm i pug 를 순서대로 입력한다.(아니면 한줄에 npm i express pug) expr..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RfOav/btsJLwhfSaE/s15VErjjMLfmD28fw6KbL1/img.png)
express, nodemon 패키지 설치일단, 터미널에npm i expressnpm i nodemon을 입력하고 package.json 파일에 패키지가 설치된 것을 확인해준다. express를 이용해서 서버 띄우기const express = require('express');const app = express();const port = 3000;app.get('/', (req, res) => { res.send("Hello World!");}); // get 요청만 받겠다app.listen(port, () => { console.log(`First Express app listening on port ${port}`);}) nodemon 으로 서버 실행 자동화맨날 ^C로 서버 내렸다가 no..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NWuol/btsJJNC6xWr/tAZVe7v2l77UYAj0Emmp1K/img.png)
const add = (a, b) => a + b;module.exports = add; // module.export로 원하는 함수를 내보내기module.exports로 add 함수를 내보낸다. 또 다른 파일에서, 사용하고 싶은 함수가 위치한 곳을 require()를 통해 가져와 변수에 할당하고, 사용할 수 있다. const add = require('./ch03_01'); // require 함수로 함수 받기console.log(add(2, 3)); 두 개의 함수를 export하고 싶다면?ch03_01.jsconst add = (a, b) => a + b;function subtract(a, b) { return a - b;}module.exports.subtract = subtract;modul..