Vue Intro
Front-end Framework
β Front-end(FE) κ°λ°μ΄λ?
- μ¬μ©μμκ² λ³΄μ¬μ£Όλ νλ©΄ λ§λ€κΈ°
β Web App(SPA)μ λ§λ€ λ μ¬μ©νλ λꡬ
- SPA: Single Page Application
Web Appμ΄λ?
β μΉ λΈλΌμ°μ μμ μ€νλλ μ΄ν리μΌμ΄μ
μννΈμ¨μ΄
β μΉ νμ΄μ§κ° κ·Έλλ‘ λ³΄μ΄λ κ²μ΄ μλ λλ°μ΄μ€μ μ€μΉλ Appμ²λΌ 보μ΄λ κ²
SPA (Single Page Application)
β μλ²μμ μ΅μ΄ 1μ₯μ HTMLλ§ μ λ¬ λ°μ λͺ¨λ μμ²μ λμνλ λ°©μ
β CSR(Client Side Rendering) λ°©μμΌλ‘ μμ² μ²λ¦¬
[μ°Έκ³ ] SSR (Server Side Rendering)
β Serverκ° μ¬μ©μμ μμ²μ μ ν©ν HTMLμ λ λλ§νμ¬ μ 곡νλ λ°©μ
β κ³μν΄μ μλ‘κ³ μΉ¨μ ν΄μΌνλ€λ λ¨μ μ‘΄μ¬
CSR (Client Side Rendering)
β κ° μμ²μ λν λμμ JavaScriptμ μ¬μ©νμ¬ νμν λΆλΆλ§ λ€μ λ λλ§
- νμν νμ΄μ§λ₯Ό μλ²μ AJAXλ‘ μμ²
- μλ²λ νλ©΄μ 그리기 μν΄ νμν λ°μ΄ν°λ₯Ό JSON λ°©μμΌλ‘ μ λ¬
- JSON λ°μ΄ν°λ₯Ό JavaScriptλ‘ μ²λ¦¬, DOMνΈλ¦¬μ λ°μ(λ λλ§)
μ CSRμ μ¬μ©ν κΉ
- λͺ¨λ HTML νμ΄μ§λ₯Ό μλ²λ‘λΆν° λ°μμ νμ νμ§ μμλ λλ€.
- νΈλν½ κ°μ -> μλ΅μλ ν₯μ - λ§€λ² μ λ¬Έμλ₯Ό λ°μ μλ‘κ³ μΉ¨νλ κ±°μ± μλλΌ νμν λΆλΆλ§ κ³ μ³λκ°λ―λ‘ κ° μμ²μ΄ λκΉμμ΄ μ§ν
- μ¬μ©μ κ²½ν(UX) ν₯μ - BEμ FEμ μμ
μμ½ λͺ
νν λΆλ¦¬
- νμ μ©μ΄
κ·Έλ λ€λ©΄ CSRμ λ§λ₯μΌκΉ?
β 첫 ꡬλ μ νμν λ°μ΄ν°κ° λ§μΌλ©΄ λ§μμλ‘ μ΅μ΄ μλ μμκΉμ§ μ€λ μκ°μ΄ μμ
β κ²μ μμ§ μ΅μ ν(SEO: Search Enginge Optimazation)μ΄ μ΄λ €μ
- μλ²κ° μ 곡νλ κ²μ λΉ HTML
β HTMLμ μμ±λ λ΄μ©μ κΈ°λ°μΌλ‘ ν κ²μ μμ§μ λΉ HTMLμ 곡μ νλ SPA μλΉμ€κ° λ ΈμΆλκΈ° μ΄λ ΅λ€
CSR vs SSR
β μλΉμ€μ μ ν©ν λ λλ§ λ°©μμ μ μ νκ² νμ©ν΄μΌ νλ€.
β SPA μλΉμ€μμλ SSRμ μ§μνλ Frameworkλ λ°μ !
- Vue: Nuxt.js
- React: Next.js
- Angular Universal
FE νλ μμν¬
β React, Angular, Vue
νλ μμν¬λ₯Ό κΌ μ¨μΌ ν κΉ?
β μμ°μ±κ³Ό νμ μ μν΄ μ¬μ©!
Why Vue
μ¬μ΄ λμ΄λ
<template>
<!-- HTML -->
<div>
<p>Hello :)</p>
</div>
</template>
<script>
// JavaScript
</script>
<style>
/* CSS */
p {
color: black;
}
</style>
β μ§κ΄μ μΈ κ΅¬μ‘°
β λΉ λ₯΄κ³ μ½κ² νμ΅ & νμ© κ°λ₯
Vue CDN κ°μ Έμ€κΈ°
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.13/dist/vue.js"></script>
Vueλ‘ μ½λ μμ±νκΈ°
β μ λ ₯ λ°μ κ°μ name λ€μ μΆλ ₯νκΈ°
- Vue μ½λ μμ±
<body>
<div id="app">
<!-- μ μΈμ λ λλ§ -->
<p id="name">name : {{ message }}</p>
<input id="inputName" type="text" />
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.13/dist/vue.js"></script>
<script>
// Vue instance μμ±
const app = new Vue({
// el, data μ€μ - dataμ κ΄λ¦¬ν μμ± μ μ
el: "#app",
data: {
message: "",
},
});
</script>
</body>
- Vue devtoolsμμ dataλ₯Ό λ³κ²½ν μ μλ€.
- input tagμ
v-model
μμ±
<body>
<div id="app">
<p id="name">name : {{ message }}</p>
<input id="inputName" type="text" v-model="message" />
</div>
</body>
Vueμ μ₯μ
β Vanilla JSλ‘ λ°μ΄ν°λ₯Ό μ‘°μνλ©΄ λ³μλͺ
μ΄ λ°λλ©΄ μΌμΌμ΄ λ°κΏμ€μΌ νλ€.
β Vueλ₯Ό μ΄μ©νλ©΄ νλμ Dataλ‘ κ΄λ¦¬ν΄ λ³κ²½ μ¬νμ ν λ²μ λ°μν μ μμ
'β Personal_Study > Vue' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
SFC (Single File Component) (0) | 2022.11.11 |
---|---|
Vue_CLI (0) | 2022.11.09 |
Vue: advanced attributes (0) | 2022.11.07 |
Vue: Basic Syntax (0) | 2022.11.07 |
Vue Instance (0) | 2022.11.06 |
λκΈ