project

Nodejs로 게시판을 만들면서 찾아봤던 것들[1]

preo123 2024. 11. 5. 13:20

ejs 사용하기

ejs 문법

<% if문 %> <% for문 %>
<%= 변수 %>
<%- include(ejs 파일 주소) %>

주의점

<% %> 이런 괄호의 열고 닫음은 반드시 한 줄에서 일어나야 됨
ex)
<% for () { %>
       <%= name %>
<% } %>

 

views 폴더 안에 ejs 파일들을 생성하고 

 

사용할 때는 

app.set("view engine", "ejs");

 

views 폴더의 경로가 바뀌었을 때(다른 폴더 안에 views 폴더가 있을 때)는 경로를 지정해 줘야된다

app.set('views', path.join(__dirname, '/public/views'));

 

path.join을 사용하려면 path 모듈 설치

 

res.render를 통해 ejs 파일 반환, <%= name %>을 통해 변수를 보여줄 때는 json 형식으로 변수에 값 넣어주기

router.get('/', (req, res) => {
    res.render('index', {name: 'js'});
})

 


req.body

var { id, pw, username, email } = req.body;

 

이런 식으로 body 값을 받아서 저장할 때

Content-Type이 applicatoin/json일 때의 데이터를 파싱할 때는

app.use(express.json({ extended: false }));

 

Content-Type이 application/x-www-form-urlencoded일 때의 데이터를 파싱할 때는

app.use(express.urlencoded({ extended: false }));

 

추가하기

(route하는 코드 위에 써야됨)


 

.env

환경변수를 사용할 때는

require("dotenv").config({ path: __dirname + "/src/config/.env" });

 

추가하기

경로는 알맞게

dotenv 모듈 설치해야 됨


module.exports

객체지향 프로그래밍을 위해 코드를 모듈화할 때 

exports.ex = function() {}

 

var ex = async() => {}

module.exports = ex;

 

exports와 module.exports는 같은 객체를 참조하므로 둘 중에 아무거나 사용해도 무방하다

 

모듈화한 코드를 다른 파일에서 사용할 때는 require로 불러서 사용하기

 


 

nodejs + mysql2

const mysql = require('mysql2');

const connection = mysql.createConnection({
    host : mysql_host,
    user : mysql_username,
    password : mysql_password,
    database : mysql_db
});

connection.execute(query);

 

나중엔 꼭 mysql2의 createPool을 사용해 db와 연결해 볼 것이다

 

createConnection으로 db와 연결하면 db와 통신할 때마다 계속 연결해야 하기 때문에 자원 낭비가 심하다.

createPool로 연결하면 db와 연결된 상태가 지속되기 때문에 위의 단점을 해결할 수 있다.
하지만 계속 연결되어 있기 때문에 최대로 연결할 수 있는 개수를 지정해 줘야 되고 한 번 통신을 한 이후에는 release를 해줘야 한다.

'project' 카테고리의 다른 글

axios Prototype Pollution 1 day 취약점 분석  (0) 2025.07.23
CVE-2025-27415 1 day 취약점 분석  (0) 2025.07.08
CVE-2025-26923  (0) 2025.07.02
CVE-2024-34343 1 day 취약점 분석  (0) 2025.07.02