पाठ 3 / 25
Template Syntax
Interpolation, directives, conditionals and lists.
Directives connect templates to state
Text interpolation {{ expr }} renders a JavaScript expression as text (HTML is escaped). Directives are special attributes starting with v-: v-bind:href (shorthand :href) binds an attribute to an expression, v-on:click (shorthand @click) attaches an event listener, with modifiers such as .prevent and .stop. v-if / v-else-if / v-else add or remove elements, while v-show keeps the element and toggles CSS display, which is cheaper for frequent toggling. v-for="item in items" renders a list and should always have a unique :key so Vue can track each item when the list changes. Avoid v-if and v-for on the same element; wrap with a <template> instead.
The common directives together
A small todo list.
<script setup>
import { ref } from 'vue'
const todos = ref([
{ id: 1, text: 'Learn templates', done: true },
{ id: 2, text: 'Learn reactivity', done: false },
])
const showDone = ref(true)
const docsUrl = 'https://vuejs.org'
</script>
<template>
<a :href="docsUrl" target="_blank">Docs</a>
<button @click="showDone = !showDone">Toggle done</button>
<ul>
<template v-for="todo in todos" :key="todo.id">
<li v-if="showDone || !todo.done">{{ todo.text }}</li>
</template>
</ul>
<p v-show="todos.length === 0">Nothing to do</p>
</template>Do not use the index as a key for changing lists
If items can be reordered, inserted or removed, an index key makes Vue reuse the wrong DOM nodes and component state. Use a stable id from your data.
त्वरित जाँच: What is the difference between v-if and v-show?
- v-if only works on components
- They are identical aliases
- v-show removes the element from the DOM
- v-if adds or removes the element; v-show only toggles its CSS display
Answer
v-if adds or removes the element; v-show only toggles its CSS display — Choose v-show for frequent toggles, v-if for rarely shown content.