๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Personal_Study/Vue

Vue Instance

by ํฌ์ŠคํŠธ์‰์ดํฌ 2022. 11. 6.

Vue Instance

MVVM Pattern

โœ” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์˜ ์ผ์ข…
โœ” ๋งˆํฌ์—… ์–ธ์–ด๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(view)์˜ ๊ฐœ๋ฐœ์„ Back-end(model)๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ์‹œ์ผœ view๊ฐ€ ์–ด๋Š ํŠน์ •ํ•œ ๋ชจ๋ธ ํ”Œ๋žซํผ์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

โœ” View: ์šฐ๋ฆฌ ๋ˆˆ์— ๋ณด์ด๋Š” ๋ถ€๋ถ„(DOM)
โœ” Model : ์‹ค์ œ ๋ฐ์ดํ„ฐ (JSON)
โœ” View Model (Vue)

  • View๋ฅผ ์œ„ํ•œ Model
  • View์™€ ์—ฐ๊ฒฐ(binding)๋˜์–ด Action์„ ์ฃผ๊ณ  ๋ฐ›์Œ
  • Model์ด ๋ณ€๊ฒฝ๋˜๋ฉด View Model๋„ ๋ณ€๊ฒฝ๋˜๊ณ  ๋ฐ”์ธ๋”ฉ๋œ View๋„ ๋ณ€๊ฒฝ
  • View Model ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  ๋ฐ”์ธ๋”ฉ๋œ ๋‹ค๋ฅธ View๋„ ๋ณ€๊ฒฝ

MVVM Pattern ์ •๋ฆฌ

โœ” MVC ํŒจํ„ด์—์„œ Controller๋ฅผ ์ œ์™ธํ•˜๊ณ  View model์„ ๋„ฃ์€ ํŒจํ„ด
โœ” ๋…๋ฆฝ์„ฑ ์ฆ๊ฐ€, ์ ์€ ์˜์กด์„ฑ
โœ” View ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด View Model์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  ์—ฐ๊ด€๋œ ๋‹ค๋ฅธ View๋„ ๋ณ€๊ฒฝ๋œ๋‹ค.

Vue Instacne

  1. new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ํ˜ธ์ถœ
<body>
  <script>
    // 1. Vue instance constructor
    const vm = new Vue();
    console.log(vm);
  </script>
</body>

์ƒ์„ฑ์ž ํ•จ์ˆ˜

โœ” JS์—์„œ ๊ฐ์ฒด ์ƒ์„ฑ - ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜์—ฌ ์ƒ์„ฑ

const member = {
  name: "Sunjun",
  age: 22,
  sId: 2022311491,
};

โœ” ๋™์ผํ•œ ๊ตฌ์กฐ์˜ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด?

function Member(name, age, sId) {
  this.name = name;
  this.age = age;
  this.sId = sId;
}

const member3 = new Member("David", 21, 2022654321);

โœ” ํ•จ์ˆ˜ ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘
โœ” ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ new์—ฐ์‚ฐ์ž๋ฅผ

 

  1. el(element)
<body>
  <div id="app">ใ€€</div>
  ...
</body>
const app = new Vue({
  el: "#app",
});

โœ” Vue instance์™€ DOM์„ mount(์—ฐ๊ฒฐ)ํ•˜๋Š” ์˜ต์…˜

  • view์™€ model์„ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• 
  • HTML id ํ˜น์€ class์™€ ์—ฐ๊ฒฐ

โœ” Vue instance์™€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ DOM ์™ธ๋ถ€๋Š” Vue์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Œ

 

  1. data

โœ” Vue instance์˜ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด ํ˜น์€ ์ธ์Šคํ„ด์Šค ์†์„ฑ
โœ” ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋Š” ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ณธ ๊ฐ์ฒด {}(object)์ด์–ด์•ผ ํ•œ๋‹ค.
โœ” ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ์•„์ดํ…œ๋“ค์€ value๋กœ ๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
โœ” ์ •์˜๋œ ์†์„ฑ์€ {{ }}์„ ํ†ตํ•ด view์— ๋ Œ๋”๋ง ๊ฐ€๋Šฅ

const app = new Vue({
  el: "#app",
  data: {
    message: "Hello, Vue!",
  },
});

โœ” ์ถ”๊ฐ€๋œ ๊ฐ์ฒด์˜ ๊ฐ ๊ฐ’๋“ค์€ this.message ํ˜•ํƒœ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ

 

  1. methods
const app = new Vue({
  el: "#app",
  data: {
    message: "Hello, Vue!",
  },
  methods: {
    print: function () {
      console.log(this.message);
    },
  },
});

โœ” Vue instance์˜ method๋“ค์„ ์ •์˜ํ•˜๋Š” ๊ณณ
โœ” ๊ฐ์ฒด ๋‚ด print method ์ •์˜

  • Vue instance์˜ data๋‚ด message ์ถœ๋ ฅ
  • app.print()
const app = new Vue({
  el: "#app",
  data: {
    message: "Hello, Vue!",
  },
  methods: {
    ...
    bye: function () {
      this.message = "Bye, Vue!";
    },
  },
});

โœ” method๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ data ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

  • ๊ฐ์ฒด ๋‚ด bye method ์ •์˜
  • print method ์‹คํ–‰ ์‹œ Vue instance์˜ data๋‚ด message ๋ณ€๊ฒฝ

โœ” ์ฝ˜์†”์ฐฝ์—์„œ app.bye() ์‹คํ–‰

  • DOM์— ๋ฐ”๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒฐ๊ณผ ๋ฐ˜์˜
  • Vue์˜ ๊ฐ•๋ ฅํ•œ ๋ฐ˜์‘์„ฑ(reactivity)

'โญ 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 Intro  (0) 2022.11.06

๋Œ“๊ธ€