2024. 11. 9. 08:57ㆍNode.js
Package json 파일을 서버를 돌릴시 필요하다.
package.json 파일 설치
1. npm init
또는
npm init -y
를 입력시 json 파일 생성
-->
{
"name": "node",
"version": "1.0.0",
"main": "10_console.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": ""
}
2. nodemon 설치 (버전도 중요) package.json에 버전이 틀릴시
npm install nodemon --save-dev
또는
npm i nodemon
3. npm i ejs 설치
4. 시작시 npm start 명령어
우선 16_ejs.js 돌릴시 index.js 파일과 index.ejs 파일이 필요하다.
1)
index.js 파일
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>요니의 홈페이지</title>
</head>
<body>
<h2>요니의 홈페이지</h2>
<p><%=name%>님 환영합니다.</p>
<p><a href="./news">뉴스</a></p><p><a href="./favorite.html">즐겨찾기</a></p><p><a href="./resume.html">이력서</a></p>
</body>
</html>
2)
index.ejs 파일
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>요니의 홈페이지</title>
</head>
<body>
<h2>요니의 홈페이지</h2>
<p><%=name%>님 환영합니다.</p>
<p><a href="./news">뉴스</a></p><p><a href="./favorite.html">즐겨찾기</a></p><p><a href="./resume.html">이력서</a></p>
</body>
</html>
3)
16_ejs.js 파일
const http = require('http')
const fs = require('fs')
const ejs = require('ejs')
const name = '김사과'
const jobs = [
{job: '학생'},
{job: '개발자'},
{job: '공무원'},
{job: '취준생'},
{job: '전문직'}
]
const server = http.createServer((req, res) => {
const url = req.url
res.setHeader('Content-Type', 'text/html')
if(url === '/'){
ejs.renderFile('./template/index.ejs', {name:name}).then((data) => res.end(data))
}else if(url === '/news'){
ejs.renderFile('./template/news.ejs', {jobs:jobs}).then((data) => res.end(data))
}
})
server.listen(3000)
pacakge.json에 경로 추가 후 npm start 명령어 실행 후 출력 결과
-->
2.
1)
rest.js 파일
const http = require('http')
const skills = [
{name: 'Python'},
{name: 'MySQL'},
{name: 'HTML'},
{name: 'CSS'},
{name: 'Javascript'},
{name: 'React'},
{name: 'Node.js'},
{name: 'MongoDB'}
]
const server = http.createServer((req, res) => {
res.setHeader('Access-Control-Allow-Origin', '*')
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
res.setHeader('Access-Control-Allow-Headers', 'Content-Type')
const url = req.url
const method = req.method
if(method == 'GET'){
res.writeHead(200, {'Content-Type': 'application/json'})
res.end(JSON.stringify(skills))
}
})
server.listen(3000)
실행후 결과
-->
// 20241109081009
// http://127.0.0.1:3000/
[
{
"name": "Python"
},
{
"name": "MySQL"
},
{
"name": "HTML"
},
{
"name": "CSS"
},
{
"name": "Javascript"
},
{
"name": "React"
},
{
"name": "Node.js"
},
{
"name": "MongoDB"
}
]
3. rest.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>rest</title>
</head>
<body>
<h2>기술 고르기</h2>
<select id="skills">
<option value>기술</option>
<option value>태권도</option>
</select>
<script>
fetch('http://127.0.0.1:3000/')
.then(response => {
if(!response.ok){
throw new error('요청 api가 없음')
}
return response.json()
})
.then(data => {
const skills = document.getElementById('skills')
data.forEach(skill => {
const option = document.getElementById('option')
option.value = skill.name
option.textContent = skill.name
skills.appendChild(option)
})
})
.catch(error => {
console.error('fetch 실패!')
})
</script>
</body>
</html>
결과 화면
-->
Alt + L + O
4. EXpress.js
EXpress 웹 프레임워크란?
- 웹서버를 생성하고 HTTP 요청에 대한 라우팅 및 처리, 미들웨어를 통한 요청 및 응답 처리 등을 간단하게 구현할 수 있음
- 다양한 확장 기능과 모듈을 제공하여 개발 생산성을 높일수 있음
(npm i express 설치)
/*
EXpress 웹 프레임워크
- 웹서버를 생성하고 HTTP 요청에 대한 라우팅 및 처리, 미들웨어를 통한 요청 및 응답 처리 등을 간단하게 구현할 수 있음
-다양한 확장 기능과 모듈을 제공하여 개발 생산성을 높일수 있음
npm i express 설치
*/
import express from 'express'
const app = express()
app.use((req, res, next) => {
res.setHeader('node-msg', 'Hi node.js')
next()
})
app.get('/', (req, res, next) => {
res.send('<h2>express 서버로 만든 첫번째 페이지</h2>')
next()
})
app.get('/hello', (req, res, next) => {
res.setHeader('content-type', 'application/json')
res.status(200).json({userid:'apple', name: '김사과', age:20})
next()
})
app.listen(3000)
결과 화면
-->
5. Get.js
import express from 'express'
const app = express()
app.get('/', (req, res) => {
res.send('<form action="/login" method="get"><p>아이디: <input type="text" name="userid"></p><p>비밀번호 : <input type="password" name="userpassword"></p><p><button type="submit">로그인</button></p><p><a href="http://127.0.0.1:3000/posts?id=1&userid=apple&name=김사과">클릭</a></p></form>')
})
//http://127.0.0.1:3000/posts
//http://127.0.0.1:3000/posts?id=1
//http://127.0.0.1:3000/posts?id=1&userid=apple&name=김사과
//http://127.0.0.1:3000/posts
app.get('/posts', (req, res) => {
console.log('posts 호출') //post 호출
console.log('path : ', req.path) // path : /posts
console.log('query :', req.query) // query : {}
res.sendStatus(200)
})
//http://127.0.0.1:3000/posts/1
//http://127.0.0.1:3000/posts/1?idx=10
app.get('/posts/:id', (req, res) => {
console.log('posts/ : id 호출') //posts/ : id 호출
console.log('path : ', req.path) // path : /posts/1
console.log('query :', req.query) //query : {}
console.log('params :', req.params) //params : { id: '1' }
res.sendStatus(200)
})
//http://127.0.0.1:3000/member/10
app.get('/member/:userid', (req, res) => {
console.log('req.path :', req.path) //req.path : /member/10
console.log(`${req.params.userid}` , '번 멤버가 출력됨') //10 번 멤버가 출력됨
res.sendStatus(200)
})
/*
로그인 페이지를 이용하여 입력한 id 와 pw를 콘솔에 출력
*/
//http://127.0.0.1:3000/member/userid=10&userpw='김사과'
app.get('/login', (req, res) => {
console.log('login 호출') //login 호출
console.log(req.query) // { userid: 'apple', userpassword: '1234' }
console.log('아이디 : ', req.query.userid) //아이디 : apple
console.log('비밀번호 : ', req.query.userpassword) //비밀번호 : 1234
res.status(200).send('로그인 되었습니다.') //로그인 되었습니다.
//res.sendStatus(200).send('로그인 되었습니다.')
})
app.listen(3000)
결과 화면
-->
아이디 : apple
비밀번호: 1234
입력시
로그인 클릭 시
'Node.js' 카테고리의 다른 글
Node.js의 로직 순서 (0) | 2024.11.12 |
---|---|
Node.js 활용2 (0) | 2024.11.11 |
Node.js POST 방식 (0) | 2024.11.11 |
2. Node.js 활용 (0) | 2024.11.08 |
Node.js 사용법 (10) | 2024.11.07 |