Nuxt μλΉμ€ λ°°ν¬ λ°©λ² Nuxt.js μλΉμ€λ₯Ό λ°°ν¬νλ λ°©λ²μ νλ‘μ νΈλ₯Ό μμ±ν λ μ νν Universal λͺ¨λμ λ°°ν¬ λ°©μμ λ°λΌ λ€λ₯΄λ€. μλ 2κ°μ§ μ νμ λ°λ₯Έ λ°°ν¬ λ°©λ²μ μ΄ν΄λ³΄μ. SSR(Server Side Rendering) SSR λͺ¨λλ μ κ·Έ
Nuxtμ ν΄λ ꡬ쑰 λμ€νΈμ νλ‘μ νΈ μμ± λ©°λ Ήμ΄λ₯Ό μ€ννκ³ λ λ€ μμ±λ λμ€νΈμ κΈ°λ³Έ ν΄λ ꡬ쑰λ₯Ό μ΄ν΄λ³΄κ² λ€. λ€μμ λμ€νΈμ κΈ°λ³Έ ν΄λ ꡬ쑰μ΄λ€. Nuxtμ ν΄λ ꡬ쑰 λμ€νΈμ νλ‘μ νΈ μμ± λ©°λ Ήμ΄λ₯Ό μ€ννκ³ λ λ€ μμ±λ λμ€νΈμ κΈ°λ³Έ ν΄λ ꡬ쑰λ₯Ό μ΄ν΄λ³΄κ²
Nuxtλ? Nuxtλ Vue.jsλ‘ λΉ λ₯΄κ² μΉμ μ μν μ μκ² λμμ£Όλ νλ μμν¬μ΄λ€. μΉ μ΄ν리μΌμ΄μ μ μ μν λ νμν λ·°μμ€, λΌμ°ν°, axiosμ κ°μ λΌμ΄λΈλ¬λ¦¬λ€μ 미리 ꡬμ±νμ¬ μ±κΈ νμ΄μ§ μ΄ν리μΌμ΄μ (Single Page Application), μλ²
λ·° ν μ€νΈ μ½λ μμνκΈ° λ·° ν μ€νΈ μ νΈ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄μ©νμ¬ κ°λ¨ν ν μ€νΈ μ½λλ₯Ό μμ±ν΄λ³΄κ² λ€. λ·° μ»΄ν¬λνΈ ν μ€νΈ μ½λ μμ μλμ μ½λλ₯Ό κ°μ§κ³ npm tλ₯Ό μ€ννλ€. μ½λκ° μ€νλλ©΄ HelloWorld μ»΄ν¬λνΈκ° μ μμ μΌλ‘ λ‘λ©λλ©΄μ ν μ€νΈκ° ν΅κ³Όλλ€. >
ν μ€νΈ μ½λκ° νμν μ΄μ κ°λ°μμκ² ν μ€νΈ μ½λκ° νμν μ΄μ λ μλ 2κ°μ§μ μλͺ¨λλ μκ°μ μ€μ΄κΈ° μν΄μμ΄λ€.
μ»΄ν¬λνΈ λμμΈ ν¨ν΄μ λ°°μ보μ
λ·° νλ‘μ νΈ ν΄λ ꡬ쑰, μ½λ λΆν , λ€λΉκ²μ΄μ κ°λ, Transition & Animationμ λν΄ μμ보μ.
νμ μ€ν¬λ¦½νΈμμ κ°λ¦¬ν€λ λͺ¨λμ΄λΌλ κ°λ μ ES6+μ Modules(https://babeljs.io/docs/en/learnλͺ¨λμ μ μ λ³μμ ꡬλΆλλ μ체 μ ν¨ λ²μλ₯Ό κ°μ§λ©° export, importμ κ°μ ν€μλλ₯Ό μ¬μ©νμ§ μμΌλ©΄ λ€λ₯Έ νμΌμ μ κ·Όν μ
νμ μ€ν¬λ¦½νΈ κΈ°λ³Έ νμ νμ μ€ν¬λ¦½νΈλ‘ λ³μλ ν¨μμ κ°μ μλ°μ€ν¬λ¦½νΈ μ½λμ νμ μ μ μν μ μλ€. νμ μ€ν¬λ¦½νΈμ κΈ°λ³Έ νμ μλ ν¬κ² 12κ°μ§κ° μλ€. Boolean Number String Object Array Tuple Enum Any Void Null Und
νμ μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈμ νμ μ λΆμ¬ν μΈμ΄μ΄λ€.μλ°μ€ν¬λ¦½νΈμ νμ₯λ μΈμ΄λΌκ³ λ³Ό μ μλ€.νμ μ€ν¬λ¦½νΈλ μλ°μ€ν¬λ¦½νΈμ λ¬λ¦¬ λΈλΌμ°μ μμ μ€ννλ €λ©΄ νμΌμ νλ² λ³νν΄μ£Όμ΄μΌ νλ€.μ΄ λ³ν κ³Όμ μ μ°λ¦¬λ μ»΄νμΌ(complile) μ΄λΌκ³ λΆλ₯Έλ€.νμ μ€ν¬λ¦½νΈλ μλ 2κ°
μΉν© λ°λΈ μλ²λ μΉ μ ν리μΌμ΄μ μ κ°λ°νλ κ³Όμ μμ μ μ©νκ² μ°μ΄λ λꡬμ΄λ€.μΉν©μ λΉλ λμ νμΌμ΄ λ³κ²½ λμμ λ λ§€λ² μΉν© λͺ λ Ήμ΄λ₯Ό μ€ννμ§ μμλ μ½λλ§ λ³κ²½νκ³ μ μ₯νλ©΄ μΉν©μΌλ‘ λΉλν ν λΈλΌμ°μ λ₯Ό μλ‘κ³ μΉ¨ ν΄μ€λ€.λ§€λ² λͺ λ Ήμ΄λ₯Ό μΉλ μκ°κ³Ό λΈλΌμ°μ λ₯Ό μλ‘
μΉν©μ λΉλ (νμΌ λ³ν) κ³Όμ μ μ΄ν΄νκΈ° μν΄μλ μλ 4κ°μ§ μ£Όμ μμ±μ λν΄μ μκ³ μμ΄μΌ νλ€.entryoutputloaderpluginκ° μ£Όμ μμ±μ λν΄μ μμΈν μ΄ν΄λ³΄μ.entry μμ±μ μΉν©μμ μΉ μμμ λ°ννκΈ° μν΄ νμν μ΅μ΄ μ§μ μ μ΄μ μλ°μ€ν¬λ¦½νΈ
μΉν©μ μ¬μ©νκΈ° μν΄μλ Node.jsμ NPMμ΄ μ»΄ν¨ν°μμ μ€μΉλμ΄ μμ΄μΌ νλ€.κ·Έλ¦¬κ³ μ΄ λꡬλ€μ λν΄ μ΄λ μ λ λ°°κ²½ μ§μμ΄ μμΌλ©΄ μΉν©μ λ€λ£¨λλ° λμμ΄ λλ€.Node.jsλ λΈλΌμ°μ λ°μμλ μλ°μ€ν¬λ¦½νΈλ₯Ό μ€νν μ μλ νκ²½μ μλ―Ένλ€.κ°λ¨νκ² μ€μ¬μ Jav
μΉν©μ΄λ μ΅μ νλ‘ νΈμλ νλ μμν¬μμ κ°μ₯ λ§μ΄ μ¬μ©λλ λͺ¨λ λ²λ€λ¬(Module Bundler)μ΄λ€.λͺ¨λ λ²λ€λ¬λ μΉ μ ν리μΌμ΄μ μ ꡬμ±νλ μμ(HTML, CSS, Javascript, Images λ±)μ λͺ¨λ κ°κ°μ λͺ¨λλ‘ λ³΄κ³ μ΄λ₯Ό μ‘°ν©ν΄μ λ³ν©λ νλμ κ²°κ³Ό
μν κ΄λ¦¬λ νλ νλ‘ νΈμλ νλ μμν¬μμ λͺ¨λ μ¬μ©νλ κ°λ° ν¨ν΄μ΄λ€.λ·°μμλ λ·°μμ€(Vuex)λΌλ μν κ΄λ¦¬ ν¨ν΄μ μ¬μ©νλ€.μν κ΄λ¦¬κ° νμν μ΄μ λ μ»΄ν¬λνΈμ μ«μκ° λ§μμ‘μ λ μ»΄ν¬λνΈ κ°μ λ°μ΄ν° μ λ¬μ΄λ κ΄λ¦¬κ° μ΄λ ΅κΈ° λλ¬Έμ΄λ€.λ°μ΄ν° μ λ¬μ λ λͺ μμ μ΄κ³
Vue.js νλ μμν¬μμ μ¬μ¬μ©μ±μ λμΌ μ μλ Slot μΈμ κΈ°λ₯λ€μ μμλ³΄κ³ μ νλ€.λ―Ήμ€μΈ(Mixins)μ μ¬λ¬ μ»΄ν¬λνΈ κ°μ 곡ν΅μΌλ‘ μ¬μ©νκ³ μλ λ‘μ§, κΈ°λ₯λ€μ μ¬μ¬μ©νλ λ°©λ²μ΄λ€.λ―Ήμ€μΈμ μ μν μ μλ μ¬μ¬μ© λ‘μ§μ data, methods, creat
Vue.js νλ μμν¬μμ μ 곡νλ ν¨μλ€λ‘ μ»΄ν¬λνΈμ μ¬μ¬μ©μ±μ λμΌ μ μλ€. μ¬λ‘― μ¬λ‘―(slot)μ
λ·°μ λ©μλλ νΉμ κΈ°λ₯ λ³λ‘ λ¬Άμ μ μλ μλ°μ€ν¬λ¦½νΈ ν¨μλ₯Ό μλ―Ένλ€.λ©μλλ νν λ·° ν νλ¦Ώμ λ²νΌ μ΄λ²€νΈ μ²λ¦¬λΆν° HTTP ν΅μ κΉμ§ λ€μν μ±κ²©μ μ½λλ‘ κ΅¬μ±λλ€.λ©μλλ₯Ό μ μΈνλ λ°©λ²μ μλμ κ°λ€.λ©μλλ₯Ό μ΄μ©ν΄μ λ²νΌ ν΄λ¦ μ΄λ²€νΈλ₯Ό μ²λ¦¬νλ©΄ λ€μκ³Ό κ°λ€.μ
λ·°μ ν νλ¦Ώ λ¬Έλ²μ΄λ λ·°λ‘ νλ©΄μ μ‘°μνλ λ°©λ²μ μλ―Ένλ€.ν νλ¦Ώ λ¬Έλ²μ ν¬κ² λ°μ΄ν° λ°μΈλ©κ³Ό λλ ν°λΈλ‘ λλλ€.λ°μ΄ν° λ°μΈλ©μ λ·° μΈμ€ν΄μ€μμ μ μν μμ±λ€μ νλ©΄μ νμνλ λ°©λ²μ΄λ€.κ°μ₯ κΈ°λ³Έμ μΈ λ°μ΄ν° λ°μΈλ© λ°©μμ μ½§μμΌ κ΄νΈ(Mustache Tag)μ΄λ€.div
λ€λ₯Έ μ£Όμ νλ‘ νΈμλ νλ μμν¬(Angular, React)μ λΉκ΅νμ λ λ·°(Vue)μ κ°μ₯ ν° κ°μ μ λ°λ‘ μμνκΈ°κ° μ λ§ μ½λ€λ μ μ΄λ€.CDNμΌλ‘ Vue.js μ½λλ₯Ό κ°μ Έμ λ°λ‘ Vue μΈμ€ν΄μ€λ₯Ό νλ μμ±νμ¬ κ°λ¨ν νμ΄μ§λ₯Ό μμ±ν΄λ³΄μλ€. κΈ°μ‘΄μ ꡬνλ μμ€ν μ