주요 내용

Vue는 컴포넌트 기반 아키텍처, 강력한 상태 관리 기능, 효율적인 라우팅 시스템을 통해 개발자에게 웹 애플리케이션 구축에 필수적인 도구를 제공하는 인기 있는 JavaScript 프레임워크입니다. 이러한 기능을 통해 개발자는 워크플로를 간소화하고 관리하기 쉬운 코드베이스를 생성하는 동시에 성능과 사용자 경험을 개선할 수 있습니다.

Vue 워처는 반응형 프로퍼티 내의 변경 사항을 면밀히 관찰하여 원활한 이벤트 반응 및 데이터 조작을 위한 수단을 제공하는 고도로 전문화된 기능입니다.

워처와 계산된 프로퍼티를 평가할 때 계산된 프로퍼티가 워처보다 더 간결하고 가독성이 높은 경향이 있어 성능이 향상되고 디버깅 프로세스가 간소화될 수 있습니다.

최신 웹 개발에서 자바스크립트 프레임워크가 널리 사용되는 이유는 모듈식 컴포넌트 디자인, 강력한 상태 관리 솔루션, 간소화된 탐색 메커니즘 등 자바스크립트가 제공하는 여러 가지 사용자 친화적인 속성 때문일 수 있습니다. 이러한 기능을 활용하면 개발자는 기초 단계부터 애플리케이션을 구성하는 데 필요한 리소스를 최소화하여 전체 프로세스를 가속화하는 동시에 개발 중에 발생할 수 있는 잠재적 불만을 완화할 수 있습니다.

Vue는 개발 프로세스를 가속화하는 측면에서 몇 가지 이점을 제공하는 프레임워크입니다. 이러한 기능 중 하나는 프로그램이 실행되는 동안 변수 및 표현식의 값을 모니터링할 수 있는 “감시” 기능입니다.

Vue에서 워치란 무엇인가요?

Vue의 반응형 시스템에서 워처는 반응형 프로퍼티의 변경 사항을 관찰하고 관찰 결과에 따라 적절한 조치를 취하는 함수를 말합니다. 이러한 워처를 통해 사용자는 애플리케이션 내 데이터의 이벤트 또는 수정에 응답할 수 있습니다.

Vue 기반 애플리케이션 내에서 “감시자”를 활용하려면 JavaScript 또는 TypeScript 코드 내의 Vue 패키지에서 “감시” 함수를 가져와야 합니다. 이를 통해 애플리케이션 상태 내에서 데이터 또는 기타 변수의 특정 변경에 의해 트리거되는 사용자 정의 함수를 정의하고 실행할 수 있습니다. ‘감시’ 기능은 수동 개입이나 명시적인 이벤트 처리 없이도 이러한 변경 사항을 실시간으로 모니터링하고 대응할 수 있는 효율적인 메커니즘을 제공합니다.

 <script setup>
import { watch } from 'vue';
</script>

Vue 컴포넌트 내에 감시 기능을 도입하면 감시자를 구현하여 변경 사항을 추적하고 그에 따라 업데이트하는 효율적인 방법을 제공할 수 있습니다.간단한 그림은 다음과 같습니다:

 <template>
  <div>
    <p>{{ user }}</p>
    <button @click="changeName">Change Name</button>
  </div>
</template>

<script setup>
import { ref, watch } from 'vue';

const user = ref('Chinedu');

const changeName = () => {
  user.value = 'Victor'; // Change the user's name
};

watch(user, (newUser, oldUser) => {
  alert(`User name changed from "${oldUser}" to "${newUser}"`);
});
</script>

이 구조는 시계 기능을 사용하여 후원자 이름에 대한 변경 사항을 추적합니다. 이 간결한 요소의 시각적 측면 부분은 개인과 관련된 지속적인 변수의 가치를 나타내는 단락 태그를 특징으로 하는 HTML 구성을 설명합니다.

이 글도 확인해 보세요:  Axios로 작업하기 위한 완벽한 가이드

실제로 입력 필드에서 사용자 이름이 업데이트되고 ‘변경’ 이벤트에 의해 트리거되면 Vue 프레임워크는 이러한 이벤트를 처리하기 위해 제공된 방법론을 실행합니다. 그 결과 사용자 이름이 한 값에서 다른 값으로 변경되었음을 나타내는 정보 메시지가 표시됩니다(예: Chinedu에서 Victor로).

워처와 계산된 프로퍼티 비교

Vue 프레임워크 내에서 반응형 기능을 효과적으로 활용하기 위해서는 “워처”와 “계산된 프로퍼티”의 역할을 구분하는 것이 중요합니다. 둘 다 상태 변화에 따라 데이터 바인딩을 업데이트하는 메커니즘으로 사용되지만, 서로 다른 목적에 맞게 사용해야 합니다.

아버지와 아들의 합산 연령을 결정하는 한 가지 가능한 방법은 다음 계산에서 알 수 있듯이 “감시자” 개념을 활용하는 것입니다:

 <template>
  <input type="text" placeholder="Father's Age" v-model="father">
  <input type="text" placeholder="Son's Age" v-model="son">
  <p>Total Age: {{ total }}</p>
</template>

<script setup>
import { ref, watch } from 'vue';

const father = ref();
const son = ref();
const total = ref();

watch(son, (newAge, oldAge) => {
  total.value = Number(father.value) + Number(newAge)
})

watch(father, (newAge, oldAge) => {
  total.value = Number(newAge) + Number(son.value)
})

</script>

본 뷰 요소는 관찰자를 사용하여 “합계”로 알려진 새로운 반응 속성을 생성함으로써 부모와 자녀의 연령 합계를 결정합니다. 이러한 반응형 속성의 설정은 Vue의 컴포지션 API를 활용하여 용이하게 이루어집니다.

이 코드는 한 쌍의 관찰 함수를 활용하여 아버지와 아들의 나이를 모두 모니터링합니다. 각각의 나이에 대해 코드는 상대방의 해당 나이와 결합하여 합계를 계산합니다. 궁극적으로 이 결과는 전체 반응형 변수 내에 저장됩니다.

좀 더 세분화된 맥락에서, 코드 내에서 계산된 속성을 사용하여 당면한 작업을 처리한다고 가정해 보겠습니다. 이러한 속성을 활용하면 더 엄격한 구문과 규칙을 준수하면서 비슷한 결과를 얻을 수 있습니다.

 <template>
  <input type="text" placeholder="Father's Age" v-model="father">
  <input type="text" placeholder="Son's Age" v-model="son">
  <p>Total Age: {{ total }}</p>
</template>

<script setup>
import { ref , computed } from 'vue';

const father = ref();
const son = ref();

const total = computed(() => {
  return Number(father.value) + Number(son.value);
});

</script>

개정된 코드는 이전 코드와 비교했을 때 간결성과 가독성이 향상되었습니다. 이 코드는 “total”이라는 계산된 속성을 활용하여 아버지와 아들의 합산 연령을 계산합니다. 이 값은 이후 Vue 프레임워크에 내재된 데이터 바인딩 기술을 통해 웹 페이지에 표시됩니다.

이 글도 확인해 보세요:  자바스크립트에서 Intl API를 사용하는 방법

감시자 또는 계산된 속성을 사용하여 두 연령의 합계를 계산하는 경우 일반적으로 성능 특성이 우수한 계산된 속성을 선택하는 것이 좋습니다.두 가지 방법 모두 원하는 결과를 얻을 수 있지만, 와처를 사용하면 실행 속도와 디버깅 작업의 복잡성이 증가하여 궁극적으로 해로울 수 있습니다.

Vue.js 애플리케이션에서 와처와 계산된 프로퍼티를 사용하는 것을 구분하는 것이 중요합니다. 와처는 데이터의 수정을 관찰하고 이에 대응하기 위해 사용해야 하며, 계산된 프로퍼티는 기존의 반응형 데이터를 기반으로 새로운 정보를 생성하도록 설계되었습니다. 따라서 각 도구를 의도된 목적에 따라 적절하게 활용하는 것이 중요합니다.

Vue에서 워처가 사용할 수 있는 즉시 옵션

워처를 인스턴스화할 때 “즉시 옵션”으로 알려진 초기 설정을 선택할 수 있습니다. 이 옵션은 관련 Vue 컴포넌트가 성공적으로 마운트된 후 즉시 Watcher의 관련 콜백 함수가 실행될지 여부를 조절합니다.

물론, 다음은 “즉시” 매개 변수가 true로 설정된 감시자 함수를 사용하는 컴포넌트의 예입니다: ”’자바스크립트

 <script setup>
import { ref, watch } from 'vue';

const data = ref({ length: 42 });

watch(
  data,
  (newData, oldData) => {
    console.log(`Data changed"`);
  },
  { deep: true }
);

// This will trigger the watcher because it's a deep change
data.value.length = 43;
</script>

초기화 시 데이터 참조는 인스턴스 속성, 특히 길이와 관련된 속성을 가진 인스턴스로 채워집니다. 그 후 심층 옵션은 기본값인 true로 설정됩니다. 이 과정에서 콘솔 내 로깅을 통해 길이 속성이 원래 상태에서 현재 43으로 변환된 것에서 알 수 있듯이 데이터에 상당한 변경이 발생했음을 알 수 있습니다.

Vue에서 시계 기능을 사용할 때 "deep" 옵션을 true로 설정하지 않으면 이 기능은 연결된 개체에 대한 수정 사항을 감지하지 못한다는 점에 유의해야 합니다. 그럼에도 불구하고 Vue는 "deep" 매개 변수가 없는 경우에도 반응형 엔티티로 초기화되는 동안 개체에 대한 모든 중첩되고 중대한 변경 사항을 효과적으로 모니터링할 수 있습니다.

 <script setup>
import { ref, watch } from 'vue';

const data = reactive({ length: 42 });

watch(
  data,
  (newData, oldData) => {
    console.log(`Data changed"`);
  }
);

// This will trigger the watcher because it changes a reactive object
data.length = 43;
</script>

앞서 언급한 코드 세그먼트에는 반응형 엔티티이기 때문에 데이터 객체의 수정과 관련된 관찰 사항을 콘솔에 기록하는 감시 기능이 있습니다.

Vue 워처로 더 나은 앱 빌드

Vue의 워처를 활용하면 애플리케이션 내에서 정교한 반응형 기능을 구현할 수 있으므로 데이터 속성 변경에 대한 관찰과 그에 따른 맞춤형 작업 실행을 규제할 수 있습니다.

감시자의 적절한 활용에 대해 능숙하게 이해하고, 계산된 속성과의 차이점을 인식하며, 즉시 및 심층과 같은 선택 사항에 익숙해지면 반응성이 뛰어난 Vue 애플리케이션을 구성하는 데 적성을 크게 향상시킬 수 있습니다.

By 박준영

업계에서 7년간 경력을 쌓은 숙련된 iOS 개발자인 박준영님은 원활하고 매끄러운 사용자 경험을 만드는 데 전념하고 있습니다. 애플(Apple) 생태계에 능숙한 준영님은 획기적인 솔루션을 통해 지속적으로 기술 혁신의 한계를 뛰어넘고 있습니다. 소프트웨어 엔지니어링에 대한 탄탄한 지식과 세심한 접근 방식은 독자에게 실용적이면서도 세련된 콘텐츠를 제공하는 데 기여합니다.