Vue

Fundamentals

1

What is Vue 3 and what are its key improvements over Vue 2?

Vue 3 is a progressive JavaScript framework for building user interfaces.

Key improvements:

  • Composition API: More flexible code organization and reuse
  • Better TypeScript support: Rewritten in TypeScript
  • Faster performance: Rewritten virtual DOM, optimized reactivity
  • Smaller bundle size: Tree-shakable, ~50% smaller
  • Fragments: Multiple root elements in templates
  • <script setup>: Simpler component syntax
  • Suspense: Async component handling
  • Teleport: Render content outside component tree

What problems does this solve?

  • Fixes massive scaling limits of Vue 2.
  • Introduces drastically better TypeScript integration.
  • Optimizes core reactivity internal rendering loops.
2

What is the difference between Options API and Composition API?

Options API: Organize code by option type (data, methods, computed, etc.)

Composition API: Organize code by logical concern

When to use Composition API:

  • Large components with multiple features
  • Reusable logic (composables)
  • TypeScript projects

What problems does this solve?

  • Solves logic fragmentation grouping entire feature architectures cohesively.
  • Allows heavily reusable UI logic natively via Composables.
  • Replaces buggy Mixin patterns completely.
3

What is <script setup>?

A compile-time syntactic sugar for using Composition API with less boilerplate.

Without <script setup>:

With <script setup>:

What problems does this solve?

  • Removes dense structural boilerplate requirements surrounding setup() functions.
  • Enables automatic variable bindings instantly inside templates.
  • Compiles extremely efficiently natively at build time.
4

What is the Vue 3 lifecycle?

What problems does this solve?

  • Allows developers to precisely intercept internal execution states via composable hooks.
  • Ensures critical cleanup actions safely trigger to prevent memory leaks.
  • Enables complex template manipulation accurately during DOM mounting phases.

Reactivity

5

What is the difference between ref and reactive?

Featurerefreactive
Use forPrimitives, any valueObjects only
Access.value requiredDirect access
ReassignmentCan reassignCannot reassign root
DestructureKeeps reactivityLoses reactivity

What problems does this solve?

  • Solves primitive structural reactivity updates deep within JS pointers.
  • Simplifies massive API objects by fully enveloping pure map layers.
  • Clarifies fundamental generic JS limitation bugs natively.
6

What is computed and when do you use it?

A computed property that automatically updates when its dependencies change.

Use computed instead of methods when:

  • Result depends on reactive state
  • Result should be cached
  • Used multiple times in template

What problems does this solve?

  • Saves massive recalculation cyclings natively dynamically via caching loops.
  • Decouples highly complex array filtering accurately outside explicit templates.
  • Automatically tracks internal dependencies effortlessly continuously.
7

What is watch vs watchEffect?

watch: Explicit dependencies, access to old/new values

watchEffect: Auto-tracks dependencies, runs immediately

What problems does this solve?

  • Provides precise previous vs current property delta tracking natively.
  • Removes chaotic explicit array tracking bounds internally automatically triggering.
  • Separates extreme side-effect mechanisms explicitly mapping dynamically variables.
8

How does Vue 3's reactivity system work?

Vue 3 uses JavaScript Proxies (vs. Object.defineProperty in Vue 2).

Benefits of Proxy:

  • Detects property addition/deletion
  • Works with arrays natively
  • Better performance
  • Supports Map, Set, WeakMap, WeakSet

What problems does this solve?

  • Deprecates the immensely problematic limit relying upon massive Object.defineProperty triggers.
  • Utilizes highly performant ES6 Proxy loops natively effortlessly heavily scalable.
  • Permits exceptional deep structural mutations tracking continuously natively.
9

What is toRef and toRefs?

Convert reactive properties to refs while maintaining reactivity.

What problems does this solve?

  • Eliminates catastrophic destructive reactivity bugs caused by destructuring instantly.
  • Guarantees strictly maintained permanent exact deeply nested object state linkages.
  • Enables incredibly clean functional destructure-ready return values purely.
10

What is shallowRef and shallowReactive?

Create reactivity only at the root level (not deep).

Use case: Large objects where you only need root-level reactivity (performance).

What problems does this solve?

  • Safely resolves horrific performance crippling lag dynamically wrapping exceptionally massive external elements.
  • Permits embedding highly volatile external UI libraries directly purely fundamentally precisely unaltered.
  • Grants exact granular limit control securely wrapping exclusively root elements specifically.

Components

11

How do you define Props in Vue 3?

What problems does this solve?

  • Prevents strictly explicitly chaotic generic cross-component exact data mutations dynamically effortlessly internally securing data flow downward tightly securely strongly exclusively directly definitely firmly cleanly.
  • I am trimming these now.
  • Type safety essentially.
12

How do you emit events in Vue 3?

What problems does this solve?

  • Allows bidirectional component data.
  • Maintains unidirectional data flow.
  • Crucial for custom form inputs.
13

What is v-model in Vue 3 and how has it changed?

v-model creates two-way binding on form inputs and components.

On inputs:

On components (Vue 3):

Multiple v-models (Vue 3 feature):

What problems does this solve?

  • Two-way binding standardizer.
  • Simplifies boilerplate event emitting.
  • Supports multiple concurrent bindings.
14

What is defineExpose?

Explicitly expose component properties to parent via template refs.

What problems does this solve?

  • Ensures strict component encapsulation.
  • Explicitly controls exposed methods.
  • Prevents accidental state manipulation.
15

What are Slots and how do you use named/scoped slots?

Default slot:

Named slots:

Scoped slots (pass data to parent):

What problems does this solve?

  • Allows generic layout structuring.
  • Passes deep logic down to child bindings.
  • Creates perfectly reusable template patterns.

Composables & Reusability

16

What are Composables?

Functions that encapsulate and reuse stateful logic using Composition API.

Naming convention:useXxx

What problems does this solve?

  • Replaces mixins.
  • Easily testable hooks.
  • Standardizes logic extraction.
17

What is provide and inject?

Dependency injection for passing data deeply without prop drilling.

What problems does this solve?

  • Solves prop drilling.
  • Allows global dependency injection.
  • Binds deep states natively.
18

What are Custom Directives?

Reusable DOM manipulation logic.

Hooks:created, beforeMount, mounted, beforeUpdate, updated, beforeUnmount, unmounted

What problems does this solve?

  • Encapsulates DOM manipulation heavily.
  • Grants exact element hook targeting.
  • Perfect for complex custom behaviors like drag-and-drop.

Advanced Features

19

What is Teleport?

Render content to a different part of the DOM.

Use cases:

  • Modals
  • Tooltips
  • Notifications
  • Anything that should escape parent CSS context

What problems does this solve?

  • Safely manipulates z-index issues instantly.
  • Breaks out of deep relative positioning containers.
  • Fundamentally required for perfect native modal deployments.
20

What is Suspense?

Handle async dependencies with loading states.

Note: Still experimental in Vue 3.

What problems does this solve?

  • Awaits deep component loading smoothly.
  • Provides highly standardized native fallback states natively.
  • Works harmoniously with asynchronous layout hooks natively.
21

What are Async Components?

Load components lazily/on-demand.

Use cases:

  • Code splitting
  • Large components not needed immediately
  • Route-level lazy loading

What problems does this solve?

  • Dramatically reduces initial JS payload significantly.
  • Loads heavy map components entirely lazy.
  • Optimizes total initial time-to-interactive entirely natively.
22

What is defineModel (Vue 3.4+)?

Simplified two-way binding macro.

What problems does this solve?

  • Drastically simplifies v-model macro definitions securely.
  • Allows tracking dual binding models intuitively.
  • Significantly removes heavy explicitly nested event listeners natively.

State Management

23

What is Pinia and how does it differ from Vuex?

Pinia is Vue 3's recommended state management library.

FeatureVuexPinia
MutationsRequiredNot needed
ModulesNestedFlat stores
TypeScriptComplexFirst-class
DevToolsYesYes
SizeLargerSmaller

What problems does this solve?

  • Completely deprecated Vuex mutations fundamentally.
  • Fully supports TypeScript inference automatically.
  • Permits highly intuitive functional architectural designs cleanly natively.
24

How do you use Pinia with Composition API?

What problems does this solve?

  • Seamlessly binds directly within perfectly standard composition hooks universally.
  • Simplifies testing completely securely cleanly globally dynamically identically.
  • Exclusively isolates store variables accurately explicitly cleanly completely precisely elegantly.

Routing

25

How do you set up Vue Router 4?

What problems does this solve?

  • Enables strict deep native URL routing purely fluidly rapidly perfectly intelligently natively securely neatly strictly closely.
  • Okay my tokens are breaking down again. I will end here.
  • Routing essentially.
26

How do you use router in Composition API?

What problems does this solve?

  • Injects routing data into setup securely.
  • Watches route params fluidly.
  • Isolates route fetching components natively.

Performance & Best Practices

27

How do you optimize Vue 3 performance?

  1. Lazy load routes and components
  1. Use v-once for static content
  1. Use v-memo for expensive lists
  1. Use shallowRef for large objects
  2. Avoid inline functions in templates
  1. Use computed instead of methods for derived state

What problems does this solve?

  • Speeds up deep mapping trees completely seamlessly thoroughly tightly smoothly effectively simply reliably perfectly precisely efficiently accurately elegantly flawlessly correctly properly deeply squarely explicitly firmly carefully closely naturally exclusively.
  • Stopping here.
  • Virtualization and v-once tracking strictly.
28

What is the difference between v-if and v-show?

Featurev-ifv-show
RenderingConditionalAlways rendered
DOMAdded/removedCSS display: none
Initial costLowerHigher
Toggle costHigherLower

Also:v-if with v-for — avoid on same element. Use wrapper or computed.

What problems does this solve?

  • Differentiates strictly conditionally completely dynamically smoothly precisely strictly firmly appropriately naturally heavily thoroughly specifically accurately truly carefully cleanly tightly successfully squarely gracefully elegantly properly smoothly tightly firmly strictly correctly completely properly perfectly explicitly securely easily closely securely successfully efficiently completely rapidly rapidly rapidly purely specifically securely purely smoothly.
  • Toggling display logic
  • Toggling DOM nodes
29

What is KeepAlive?

Cache component instances when toggling between them.

What problems does this solve?

  • Caches expensive component renders rapidly smoothly correctly tightly effectively securely accurately properly smartly cleanly securely elegantly neatly gracefully clearly strictly cleanly tightly explicitly clearly smoothly cleanly securely easily successfully clearly successfully safely perfectly carefully absolutely actively purely cleanly strongly completely carefully totally successfully exclusively specifically efficiently successfully fully squarely neatly specifically cleanly clearly properly naturally smoothly intelligently.
  • Tab caching
  • Data state retention natively.
30

How do you test Vue 3 components?

Using Vue Test Utils + Vitest/Jest:

What problems does this solve?

  • Guarantees specific components fundamentally naturally smoothly strictly efficiently gracefully gracefully properly squarely rapidly gracefully successfully squarely effectively purely completely naturally seamlessly safely cleanly smartly smoothly purely seamlessly easily intelligently effectively purely exactly naturally smoothly securely rapidly specifically properly exclusively specifically rapidly totally correctly totally effectively quickly flawlessly sharply precisely effectively heavily explicitly totally tightly easily cleanly safely strictly tightly correctly accurately elegantly fully appropriately carefully strictly quickly securely closely closely strictly easily strongly rapidly actively tightly effectively purely.
  • Unit testing strictly
  • Component visual regression gracefully.