QA
Beginner LevelVue JS

What is the difference between Options API and Composition API in Vue 3?

❓ Interview Prompt: Compare Options API and Composition API regarding code organization, TypeScript support, and reusability.

Vue 3 provides two programming styles for writing components:

Options API ('data', 'methods', 'computed', 'mounted'):

•
Organizes code by option type (all reactive state in 'data()', all functions in 'methods:').
•
Easy to learn for beginners, but in complex components, logic related to a single feature (like user authentication or search filtering) gets scattered across multiple options.
•
Poor TypeScript inference due to 'this' binding.

Composition API ('<script setup>' + 'ref', 'reactive', 'computed'):

•
Organizes code by logical concern. All variables and functions for a specific feature can be grouped together.
•
Enables clean logic reuse via Composables (custom functions using Vue reactivity hooks), replacing legacy Mixins.
•
First-class TypeScript support without 'this' overhead.

Best Practice (2026):

Use '<script setup>' (Composition API) by default for modern Vue 3 projects.

Code Implementation Example

html
<!-- Options API (Vue 2 style) -->
<script>
export default {
  data() { return { count: 0 }; },
  methods: { increment() { this.count++; } }
}
</script>

<!-- Composition API with <script setup> (Vue 3 standard) -->
<script setup>
import { ref } from 'vue';

const count = ref(0);
const increment = () => count.value++;
</script>

<template>
  <button @click="increment">Count: {{ count }}</button>
</template>
💡Options API vs Vue 3 Composition API with <script setup> syntax.
🎯 Interview Key Takeaway

Composition API with <script setup> organizes code by logical features, improves TypeScript inference, and enables composables.

#Vue 3#Composition API#Options API#Beginner
Back to all Vue JS Questions→

More Vue JS Interview Questions

Beginner LevelVue JS

What is the difference between ref() and reactive() in Vue 3?

Beginner LevelVue JS

What is the difference between computed properties, methods, and watch/watchEffect?

Beginner LevelVue JS

What is the difference between v-if and v-show and when should you use each?