localStorage.setItem(key, value); // 저장소에 데이터 저장
localStorage.getItem(key); // 저장소에서 데이터 항목을 검사
브라우저에서 데이터를 저장하고 검색하기 위한 구문
sessionStorage.getItem("name");
var arr = ["a", "b", "c", "d", "e"]
// window.localStorage.setItem(key, value);
localStorage.setItem("user","Hong");
localStorage.setItem("array",arr);
브라우저의 local storage에 setItem한 데이터들이 들어가있다.
// js의 object 형식
const myObj = {name:'John', age:31, city:'newyork'};
// console.log(myObj);
const jsonStr = JSON.stringify(myObj);
// console.log(jsonStr);
const myJSON = '{ "name": "John", "age": 31, "city": "newyork"}';
const jsonObj = JSON.parse(myJSON);
console.log(jsonObj);
const http = require('http');
const express = require('express');
const app = express();
app.use(express.static('public'));
app.set("view engine", "ejs");
app.set("views", "./template");
app.get('/', (req, res)=>{
res.write(`<h1>Hello world</h1>`);
res.end();
});
const server = http.createServer(app);
server.listen(3000, () => {
console.log("서버 실행 중 : localhost:3000");
});
Node.js 서버로부터 가져온 데이터를 html을 생성할 때 바로 사용할 수 있다.
즉, Node.js에서 보낸 데이터를 보여주거나 html에서 반복문을 사용할 때 쉽게 구현이 가능하다.
npm i -S ejs
nodejs와 express가 설치된 프로젝트에서 위 명령문을 통해 ejs를 설치해준다.
// app.js
app.set("view engine", "ejs");
app.set("views", "./template");
app.set("view engine", "ejs");
view engine으로 ejs을 사용하겠다고 선언한다.
app.set("views", "./template");
Template가 있는 디렉토리 경로를 나타낸다.
app.js에 위 코드를 추가하여 ejs 설정을 해준다.
//app.js
app.get('/home', (req, res)=>{
var testArr = [
{no:1,name:'홍길동',age:20},
{no:2,name:'박길동',age:23},
{no:3,name:'김길동',age:24},
{no:4,name:'이길동',age:22},
{no:5,name:'최길동',age:27},
]
req.app.render('home', {testArr}, (err, html)=>{
if(err != null){
console.log('오류 발생');
res.end();
}
else{
res.end(html);
}
});
res.end();
});
req.app.render 메소드의 첫 번째 인자는 ejs 파일명, 두 번째 인자는 전달하는 데이터 객체, 세 번째 인자는 콜백함수이다. 여기서 콜백함수의 첫 번째는 에러 객체이다. 즉, req.app.render(ejs 파일명, 데이터객체, 콜백함수)의 형태이다.
'/home' 요청 시, testArr라는 JSON 데이터를 선언하고 이 데이터를 render 메소드의 두번째 인자로 전달하여 ./template/home.ejs 파일에서 데이터를 사용 가능하게 되었다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h2>Homepage</h2>
<table border="1" width:'100%''>
<tr>
<th>번호</th>
<th>이름</th>
<th>나이</th>
</tr>
<%
for(var row of testArr){
%>
<tr>
<td><%=row.no%></td>
<td><%=row.name%></td>
<td><%=row.age%></td>
</tr>
<% } // end of for %>
</table>
</body>
</html>
<% %> - 자바스크립트 실행
<%=%> - 변수 값 내장
testArr 데이터를 home.ejs내에 따로 선언 없이 for문을 통해 데이터를 하나씩 no, name, age를 바로 출력하였다.
http: //localhost:3000/home 실행결과이다.
Ajax를 사용하면 백에서 웹 서버와 데이터를 교환하여 웹 페이지를 비동기적으로 업데이트 가능하다.
즉, Ajax를 사용하면 전체 페이지를 다시 로드하지 않고 웹 페이지의 일부를 업데이트 할 수 있음!!
<button type="button" onclick="loadDoc()">Change Content</button>
1) 웹 페이지에서 이벤트 발생 (페이지 로드되고, 버튼이 클릭되는 이벤트 발생)
function loadDoc() {
// XMLHttpRequest 객체 생성
const xhttp = new XMLHttpRequest();
// 콜백 함수 정의
xhttp.onload = function () {
document.getElementById("demo").innerHTML = this.responseText;
}
// 서버에 요청 보내기
xhttp.open("GET", "/js/ajax_info.txt", true);
xhttp.send();
}
2) XMLHttpRequest 객체 생성
3) XMLHttpRequest 객체는 웹 서버에 요청을 보냄
4) 서버가 요청 처리
5) 서버는 웹 페이지에 응답을 다시 보냄
6) 자바스크립트로 응답을 읽음
7) 적잘한 반응(ex: 페이지 업데이트)는 자바스크립트에 의해 수행
Load Button 클릭 시, Ajax 기술을 사용하여 서버에 있는 JSON 데이터 목록을 화면에 출력한다.
form 값을 입력 받아 서버에 전송한다. 서버에서는 받은 데이터를 형식에 맞게 JSON 데이터에 추가하고 목록을 재로드하는 기능을 구현하였다.
https://www.w3schools.com/js/js_api_web_storage.asp
https://www.w3schools.com/js/js_ajax_intro.asp
https://velog.io/@over/Node.js-View-Engine-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0