Kritim Yantra
Jun 30, 2025
🎯 Introduction: Vue Isn’t Just Easy — It’s Smart
Vue.js is one of the most beginner-friendly and powerful frontend frameworks out there.
But most developers only scratch the surface — and miss out on features that could save hours of coding and make your apps cleaner, faster, and smarter.
In this post, we’ll explore 7 awesome features in Vue 3 that you should be using in 2025, especially if you're building apps with Laravel, Inertia.js, Flask, or any backend API.
v-model
on Custom ComponentsYou already know v-model
for input fields…
But did you know you can use it on custom components too?
<MySwitch v-model="isActive" />
Inside the component:
defineProps(['modelValue'])
const emit = defineEmits(['update:modelValue'])
// Update value like this:
emit('update:modelValue', true)
🔄 Super clean two-way binding for your own components.
<script setup>
is a Game ChangerIn Vue 3, the new <script setup>
syntax lets you write more concise, faster, and typed components.
Before:
<script>
export default {
props: ['title'],
setup(props) {
return { title: props.title }
}
</script>
Now:
<script setup>
defineProps(['title'])
</script>
⚡ Less boilerplate. More productivity.
ref()
and reactive()
Want reactivity for a simple variable?
const count = ref(0)
const user = reactive({ name: 'Ajay', age: 21 })
And you use them in template like:
<h1>{{ count }}</h1>
🔁 These are the building blocks of reactivity.
Need to render a modal outside of current scope?
Use Teleport
!
<teleport to="body">
<MyModal />
</teleport>
🎯 Great for modals, dropdowns, and tooltips that need to escape parent containers.
Custom components can send data up the chain easily.
<button @click="$emit('delete-user', user.id)">Delete</button>
Parent:
<UserCard @delete-user="handleDelete" />
🎯 Clean communication from child → parent.
Need to respond to data changes?
watch(count, (newVal, oldVal) => {
console.log('Count changed!', newVal)
})
Or derive new values:
const fullName = computed(() => `${firstName.value} ${lastName.value}`)
🧠 Logic stays clean and declarative.
When using Laravel or Flask as backend, you can combine Vue + Inertia.js to build modern SPAs — without writing APIs or Axios.
return Inertia::render('Dashboard', ['user' => Auth::user()]);
🔌 Supercharged full-stack dev with less friction.
Feature | Why It Matters |
---|---|
v-model on components |
Clean two-way binding |
<script setup> |
Less code, more clarity |
ref() / reactive() |
Pure reactivity |
Teleport |
Modals & overlays made easy |
$emit with data |
Clean event flow |
watch / computed |
Reactive logic |
Inertia + Vue | Full-stack SPA with Laravel |
No comments yet. Be the first to comment!
Please log in to post a comment:
Sign in with Google