ํ๊ธฐ์์ APIํ์ผ์ ๋ถ๋ฆฌํด์ผ๊ฒ ๋ค๊ณ ๋งํ์๋๋ฐ ์ด๋ป๊ฒ ๋ถ๋ฆฌํ๋์ง ์ ๋ฆฌํด๋๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค.
'์ด๋ ๊ฒ ์ ๋ ๊ฒํด์ ์๋ ๊ฒ ๋ถ๋ฆฌํ๋ฉด ๋๊ฒ ๋ค'
ํ๊ณ ํ๋ฒ์ ๋ฐฉ๋ฒ์ ์ฐพ์ผ๋ฉด ์ข์ผ๋ จ๋ง... ์ญ์๋ ๋จธ๋ฆฌ๋ฅผ ์ธ๋งค์ผํ๋ค.
๋ง์ฐํ๊ฒ ํด๋์ค ํ์ผ๋ก ๋ง๋ค์ด์ ์ฒ๋ฆฌํ๋ฉด ๋ ๊ฑฐ๊ฐ๋ค๋ ์๊ฐ์ ๋ ์ฌ๋๋๋ฐ ๊ทธ๋์ ํด๋์ค๋ก ์ด๋ป๊ฒ??? ๋ผ๋ ๋ถ๋ถ์ด ๋ ์ค๋ฅด์ง ์์๋ค.
๊ทธ๋์ ์ผ๋จ ๋ ธํธ์ ํ์ฌ ํ์ผ์ ์ํ์ ๋ฌธ์ ์ ์ด ๋ญ๊ณ , ์ด๋ค ๋ถ๋ถ์ด ๊ณตํต์ ์ผ๋ก ํ์ํ๊ณ ์ด๋ค๋ถ๋ถ์ด ๋๋์ด์ ธ์ผ ํ๋์ง ์ ๋ฆฌ๋ถํฐ ํด๋ณด์๋ค.
firebase.jsx > auth, realtime database API ์ฌ์ฉ ๋ชจ์
upload.jsx > storage API ์ฌ์ฉ ๋ชจ์
const firebaseConfig = {
apiKey: process.env.REACT_APP_FIREBASE_API_KEY,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
appId: process.env.REACT_APP_FIREBASE_APP_ID,
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
};
const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
const db = getDatabase(app);
const dbRef = ref(db);
const provider = new GoogleAuthProvider();
๊ฐ๊ฐ์ ํ์ผ์ ๋์ผํ ์ค์ ์ฝ๋๊ฐ ์ค๋ณต๋๋ค.
firebase.jsx ํ์ผ์ ๊ฒฝ์ฐ login, movie, pick, community ๋ก์ง์ด ๋ค ๋ชจ์์ ธ์๋ค. ํ์ผ์ด ๋๋ฌด ์ปค์ก๊ณ ๊ฐ๋ ์ฑ๋ ๋ง์ด ๋จ์ด์ง๋ค.
๊ทธ๋ฌ๋๊น ์ ๋ฆฌํด๋ณด์๋ฉด,
๊ฐ ํ์ผ์ ์๋น์ค๋ณ๋ก ๊ตฌ๋ถํ๋ ๊ณตํต ์ค์ ์ ํ๋ฒ๋ง ์ค์ ํ๊ณ ๋ค๋ฅธํ์ผ๋ค์ ๊ทธ ์ค์ ์ ์ด์ฉํ๊ฒ ํด์ผํ๋ค.
ํด๋์ค ์์์ ํ์ฉํ๋ค.
Firebaseํด๋์ค์์ firebase ์ค์ ์ ํ๋ฉด ๋ค๋ฅธ ํด๋์ค๋ Fireaseํด๋์ค๋ฅผ ์์(extends)๋ฐ์ ๊ฐ์ ํ์ํ ๋ก์ง์ ์ ์ํ๋ค.
์ฒ์์๋ ์์ฑ์๋ก ๋ง๋ค์์๋ค.
๊ทธ๋ฐ๋ฐ ์๊ฐํด๋ณด๋ Firebaseํด๋์ค๋ก ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๊ฒฝ์ฐ๋ ์๊ณ , ์ค์ฌ ์๋ค๊ณ ํ๋๋ผ๋ ๋ฑํ ์์ฑ์ ์ฃผ์
ํ ๋ถ๋ถ์ ์๊ธฐ ๋๋ฌธ์ ๊ตณ์ด ์์ฑ์๋ฅผ ์ ์ํ ํ์๊ฐ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
const community = new Community();
community.add()
community.get()
์ด๋ฐ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ฌ์ฉํ๊ธฐ์ ๋๋ฌด ๋ถํธํ ๊ฒ ๊ฐ์๋ค.
๊ทธ๋์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์ธ์คํด์ค์ ๋ฉค๋ฒ๋ฅผ ๋ฐํํ๋ Hooks์ ๋ง๋ค์ด ์ฌ์ฉํ๋ ค๊ณ ํ๋๋ฐ Context๋ก ๊ด๋ฆฌ๋๋ auth์๋น์ค๋ฅผ ์ ์ธํ๊ณค ๋ชจ๋ redux๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ hooks์ ์ฌ์ฉํ ์๊ฐ ์์๋ค. (hooks์ ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉํ ์ ์์)
์์ฌ์ด๋๋ก auth๋ hooks์ผ๋ก ๋ง๋ค์ด์ฃผ๊ณ ๋๋จธ์ง๋ api๊ฐ ํ์ํ ํ์ผ์์ ๋น๊ตฌ์กฐํ ํ ๋น์ ์ด์ฉํ๋ค.
const movie = new MovieService();
const { add, search, get } = movie;
์ด๋ ๊ฒ ํ๋๊ฒ ์ฌ๋ฐ๋ฅธ ๊ฑด์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ด๊ฐ ํ ์ ์๋ ์ ์์ ์ต๋ํ ๊ธ์ ์ ์ธ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ ๋ ์ ์๋๋ก ๋ ธ๋ ฅํ๋ค.
ํ์คํ๊ฑด ํ์ผ์ ๋ถ๋ฆฌํ๋ ์ค๋ณต ์ฝ๋๋ ์ค๊ณ ์ ๋ณด๋ค ๊ฐ๋ ์ฑ์ ์ข์์ง๊ฑฐ๊ฐ๋ค.
โ ํด๋์ค ๊ณต๋ถ
https://ko.javascript.info/class-inheritance