110. Setting up the Firebase SDK

npm create vue@latest


์ด ๊ฐ•์˜์—์„œ๋Š” Firebase SDK๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์— ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
Firebase SDK๋Š” Firebase์˜ ์ œํ’ˆ๊ณผ ํ†ต์‹ ์„ ๋•๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

  1. Firebase SDK ์„ค์น˜: SDK๋Š” NPM์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ปค๋งจ๋“œ ๋ผ์ธ์—์„œ npm i firebase ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Firebase๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ตฌ์„ฑ ํŒŒ์ผ ์ƒ์„ฑ: Firebase ์„ค์ •์„ ๋ณ„๋„์˜ ํŒŒ์ผ(firebase.js)๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ฉ”์ธ JS ํŒŒ์ผ์˜ ํ˜ผ๋ž€์„ ์ค„์ž…๋‹ˆ๋‹ค.
  3. Firebase ๋ชจ๋“ˆ ์ž„ํฌํŠธ: Firebase์—์„œ ํ•„์š”ํ•œ ํŠน์ • ๋ชจ๋“ˆ๋งŒ์„ ์ž„ํฌํŠธํ•ฉ๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, Firebase SDK์˜ ํ•ต์‹ฌ์ธ App ๋ชจ๋“ˆ์„ ์ž„ํฌํŠธํ•ฉ๋‹ˆ๋‹ค.
    ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ž„ํฌํŠธํ•˜๋Š” ๊ฒƒ์ด ์•ฑ์˜ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์—ฐ๊ฒฐ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ: Firebase ์ฝ˜์†”์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ , ์›น ํ”Œ๋žซํผ์„ ์œ„ํ•œ ๊ตฌ์„ฑ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  5. Firebase ๊ตฌ์„ฑ ๊ฐ์ฒด: ๊ตฌ์„ฑ ๊ฐ์ฒด์—๋Š” API ํ‚ค, ์ธ์ฆ ๋„๋ฉ”์ธ, ํ”„๋กœ์ ํŠธ ID, ์ €์žฅ์†Œ ๋ฒ„ํ‚ท, ๋ฐœ์‹ ์ž ID, ์•ฑ ID ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
    ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Firebase์— ์—ฐ๊ฒฐํ•˜๊ณ  ์ธ์ฆ ๋ฐ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  6. Firebase ์•ฑ ์ดˆ๊ธฐํ™”: Firebase.initializeApp ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๊ณ  Firebase ์•ฑ์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
    ์ด ํ•จ์ˆ˜๋Š” Firebase์™€์˜ ํ†ต์‹ ์„ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  7. ์ธ์ฆ ๋ชจ๋“ˆ ์ž„ํฌํŠธ: ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์œ„ํ•ด firebase/auth ๋ชจ๋“ˆ์„ ์ž„ํฌํŠธํ•ฉ๋‹ˆ๋‹ค.
    Firebase๋Š” ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ํ•ต์‹ฌ ๋ชจ๋“ˆ์— ์ž๋™์œผ๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์„ ํ†ตํ•ด Firebase SDK๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉํ•˜๊ณ , Firebase์™€์˜ ํ†ต์‹ ์„ ์œ„ํ•œ ์ค€๋น„๋ฅผ ๋งˆ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
Firebase SDK๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Firebase ์ œํ’ˆ๊ณผ ์‰ฝ๊ฒŒ ํ†ต์‹ ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

npm i firebase
src/main.ts
import './assets/base.css'
import './assets/main.css'
import './includes/firebase'

import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './App.vue'
import router from './router'
import VeeValidatePlugin from './includes/validation'

const app = createApp(App)

app.use(createPinia())
app.use(router)
// app.use(VeeValidatePlugin, { foo: 100 })
app.use(VeeValidatePlugin)

app.mount('#app')


ย