412
1. Installation and Setup
Option 1: CDN (Quick Start)
<script src="https://cdn.jsdelivr.net/npm/vue@3.2.36"></script> <div id="app">{{ message }}</div> <script> const app = Vue.createApp({ data() { return { message: 'Hello, Vue!' } } }).mount('#app'); </script>
Option 2: Vue CLI (Full Project Setup)
- Install Vue CLI (Globally):
npm install -g @vue/cli
- Create New Project:
vue create my-vue-app cd my-vue-app npm run serve
- Visit:
http://localhost:8080
2. Project Structure (Vue CLI)
my-vue-app/ │ ├── public/ # Static files │ ├── src/ # Main app code │ ├── components/ # Vue components │ ├── App.vue # Root component │ ├── main.js # App entry point │ ├── package.json # Project dependencies └── README.md
3. Basic Component Structure
App.vue (Single File Component):
<template> <div> <h1>{{ message }}</h1> </div> </template> <script> export default { data() { return { message: 'Welcome to Vue.js' } } } </script> <style> h1 { color: #42b983; } </style>
4. Data Binding
1. Interpolation (Text Binding):
<h1>{{ message }}</h1>
2. Attribute Binding (v-bind):
<img v-bind:src="imageUrl">
or shorthand:
<img :src="imageUrl">
5. Event Handling
<button @click="increment">Click Me</button> <p>Count: {{ count }}</p> <script> export default { data() { return { count: 0 } }, methods: { increment() { this.count++; } } } </script>
6. Form Binding (v-model)
<input v-model="username" placeholder="Enter your name"> <p>Username: {{ username }}</p> <script> export default { data() { return { username: '' } } } </script>
7. Conditional Rendering
<p v-if="isLoggedIn">Welcome Back!</p> <p v-else>Please log in.</p> <script> export default { data() { return { isLoggedIn: false } } } </script>
8. List Rendering
<ul> <li v-for="(item, index) in items" :key="index"> {{ item }} </li> </ul> <script> export default { data() { return { items: ['Apple', 'Banana', 'Cherry'] } } } </script>
9. Components
Parent Component (App.vue):
<template> <div> <ChildComponent message="Hello from Parent!" /> </div> </template> <script> import ChildComponent from './components/ChildComponent.vue'; export default { components: { ChildComponent } } </script>
Child Component (ChildComponent.vue):
<template> <h2>{{ message }}</h2> </template> <script> export default { props: ['message'] } </script>
10. Computed Properties
<p>Reversed Message: {{ reversedMessage }}</p> <script> export default { data() { return { message: 'Vue.js' } }, computed: { reversedMessage() { return this.message.split('').reverse().join(''); } } } </script>
11. Watchers
<p>Counter: {{ count }}</p> <script> export default { data() { return { count: 0 } }, watch: { count(newVal, oldVal) { console.log(`Count changed from ${oldVal} to ${newVal}`); } } } </script>
12. Lifecycle Hooks
export default { created() { console.log('Component Created'); }, mounted() { console.log('Component Mounted'); }, updated() { console.log('Component Updated'); }, beforeUnmount() { console.log('Component Unmounting'); } }
13. Class and Style Binding
1. Dynamic Classes:
<div :class="{ active: isActive }">Dynamic Class</div>
data() { return { isActive: true } }
2. Inline Styles:
<div :style="{ color: activeColor, fontSize: fontSize + 'px' }">Styled Text</div>
data() { return { activeColor: 'red', fontSize: 20 } }
14. Routing (Vue Router)
- Install Vue Router:
npm install vue-router@4
- Setup Routes (router/index.js):
import { createRouter, createWebHistory } from 'vue-router'; import Home from '../views/Home.vue'; import About from '../views/About.vue'; const routes = [ { path: '/', component: Home }, { path: '/about', component: About } ]; export default createRouter({ history: createWebHistory(), routes });
- Use Router in App:
import { createApp } from 'vue'; import App from './App.vue'; import router from './router'; createApp(App).use(router).mount('#app');
15. State Management (Vuex)
- Install Vuex:
npm install vuex@4
- Setup Store (store/index.js):
import { createStore } from 'vuex'; export default createStore({ state() { return { count: 0 } }, mutations: { increment(state) { state.count++; } } });
- Use Store in App:
import { createApp } from 'vue'; import App from './App.vue'; import store from './store'; createApp(App).use(store).mount('#app');
16. Useful CLI Commands
npm run serve # Start development server npm run build # Build for production npm run lint # Lint and fix files
This cheat sheet provides the essential building blocks to get started with Vue.js and create dynamic web applications