EJS?? JavaScript로 HTML 마크업을 생성할 수 있는 간단한 템플릿 언어 (탬플릿 生)
복습과 활용이 필요하다? 학습했던 프로젝트 확인 및 추가적 실습 필요(실질적 복습)하다.
[EJS]
서버에서 가져오는 데이터셋을 출력하기 위해 아래처럼 작성 → 양 많고, 가독성이 떨어짐.
//비동기처리 후 - ajax, getData()
const ul = document.createElement(’ul’);
ul.appendChild(div.firstElementChild);
코드, 변수 내장 <% %> 태그
//html 작성 부분
<ul></ul>
---------------------------------------------------
//javascript 작성 부분
<script type="module"> </script>
[myBook 실습]
💡학습목표
1. 라우터 복습 → 화면갱신, 페이지 변화 (이동이 아님, 이동은 데이터 유지X)
2. 데이터 영속성 → 오라클, MySQL(파이어베이스-DB→통합 서비스), NoSQL(경량화 무기)
3. 추가 작업 → 게시판 추가(목록,CRUD,채팅(DB사용)), 대시보드 작업(장바구니, 회원가입, myPage, 회원 정보 수정 등), auth(카카오, 네이버 로그인 도전)
[myBook 소스리뷰]
dbLogic.js 생성 → db와 만나는 부분(비동기 처리 필요)
왜? 서버가 다르기 때문에
단, export를 꼭 붙인다!!
fetch & axios 코드 비교 (axios? (https://www.npmjs.com/package/axios) )
import axios from 'axios';
//Insert - axios 사용
export const memberInsertDB = (params) => {
return new Promise((resolve, reject) => {
try {
//axios(object,)
const response = axios({
method : 'GET',
url : 'http://172.16.2.11:9000/member/memberInsert',
params : params //params는 사용자가 입력한 값 -> 예 :
})
resolve(response); //response => [{'mem-name':'나신입', 'mem-email':'na@hot.com'}] =>쿠키나 세션에 담음
} catch (error) {
reject(error);
}
});
};
//List - fetch 시
export const memberListDB = (params) => {
return new Promise((resolve, reject) => {
try {
const response = fetch(`http://172.16.2.11:9000/member/memberList`);
resolve(response);
} catch (error) {
reject(error);
}
});
};
https://cdnjs.com/libraries/moment.js
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js" integrity="sha512-CryKbMe7sjSCDPl18jtJI5DR5jtkUWxPXWaLCst6QjH8wxDexfRJic2WRmRXmstr2Y8SxDDWuBO6CQC6IE4KTA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script type="module">
import {app} from '/javascripts/firebase.js'
import { getFirestore, collection, addDoc } from 'https://www.gstatic.com/firebasejs/9.22.1/firebasestore.js';
const db = getFirestore(app)
//이벤트처리!! 버튼이 눌렸을 때, db에 보내져야 함!
$(frm).on('submit',async(event)=>{
event.preventDefault() //버튼 서브밋으로 인한 새로고침 방지(사이드이펙트)
let title = $(frm.title).val() //val() 사용자 입력 제목
let body = $(frm.body).val() //val() 사용자 입력
//로그인 성공 후 로컬스토리지에 담기는 email가져와서 작성자로 한다.
let email = localStorage.getItem('email')
//날짜 설정
let date = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
//쌍 이름이 같으면 생략 가능하지만 유의해야함.
await addDoc(collection(db,'board'),{email:email,title:title,body:body,date:date})
//firebase 서버 저장되면 어디로 가야하지??
})
</script>
[🔥firebase]
// Import the functions you need from the SDKs you need
import { initializeApp } from "firebase/app";
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries
// Your web app's Firebase configuration
const firebaseConfig = {
apiKey: "AIzaSyATfx1b1yCgIlUzKrkjdES25MUtYqgTihI",
authDomain: "mybook2-70005.firebaseapp.com",
projectId: "mybook2-70005",
storageBucket: "mybook2-70005.appspot.com",
messagingSenderId: "642271234688",
appId: "1:642271234688:web:3ff67d098fc78f6ba7b465"
};
// Initialize Firebase
const app = initializeApp(firebaseConfig);
[프로젝트 복기]
[API 학습]