- vừa được xem lúc

Hướng Dẫn Xây Dựng Ứng Dụng Với Vue 3 Từ A đến Z

0 0 1

Người đăng: NamBK

Theo Viblo Asia

Tiếp tục series về Vue3.js. Trong bài viết này, chúng ta sẽ cùng đi qua quy trình xây dựng một ứng dụng cơ bản với Vue 3 – từ khởi tạo project đến tạo component, quản lý trạng thái và xử lý routing. Screenshot 2025-05-30 at 09.50.19.png

1. Chuẩn Bị Môi Trường

Yêu cầu:

  • Node.js >= 16.x
  • Trình quản lý gói: npm hoặc yarn

Cài đặt Vue CLI hoặc Vite (đề xuất dùng Vite):

npm create vite@latest my-vue3-app -- --template vue
cd my-vue3-app
npm install
npm run dev

2. Cấu Trúc Dự Án Cơ Bản

my-vue3-app/
├── public/
├── src/
│ ├── assets/
│ ├── components/
│ ├── views/
│ ├── App.vue
│ ├── main.js
└── index.html
  • App.vue: Component gốc
  • main.js: Điểm khởi đầu ứng dụng
  • components: Các component tái sử dụng
  • views: Các trang lớn (khi có routing)

3. Tạo Component Với Composition API

<!-- src/components/Counter.vue -->
<template> <div> <h2>Số lần: {{ count }}</h2> <button @click="increment">Tăng</button> </div>
</template> <script setup>
import { ref } from 'vue' const count = ref(0)
const increment = () => { count.value++
}
</script>

Sử dụngscript setup giúp viết component ngắn gọn và rõ ràng hơn rất nhiều.

4. Thêm Vue Router

Cài đặt:

npm install vue-router@4

Tạo file router:

// src/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 }
] const router = createRouter({ history: createWebHistory(), routes
}) export default router

Khai báo router trong main.js:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router' createApp(App).use(router).mount('#app')

5. Quản Lý Trạng Thái Với Pinia

Pinia là thư viện quản lý trạng thái hiện đại, thay thế Vuex trong Vue 3.

Cài đặt:

npm install pinia

Khởi tạo store:

// src/stores/counter.js
import { defineStore } from 'pinia' export const useCounterStore = defineStore('counter', { state: () => ({ count: 0 }), actions: { increment() { this.count++ } }
})

Sử dụng trong component:

<script setup>
import { useCounterStore } from '@/stores/counter'
const counter = useCounterStore()
</script> <template> <button @click="counter.increment">Count: {{ counter.count }}</button>
</template>

6. Styling và UI Framework

Vue 3 tương thích tốt với các UI framework như:

  • Tailwind CSS (hiệu quả, tiện lợi)
  • Element Plus
  • Naive UI
  • Vuetify 3

Ở đây, mình sẽ dùng Tailwind Css

npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p

Thêm vào tailwind.config.js và main.css như hướng dẫn tại https://tailwindcss.com.

7. Build & Triển Khai

npm run build

Kết Luận

Vue 3 cùng với hệ sinh thái Vite, Pinia và Router tạo nên một môi trường phát triển frontend mạnh mẽ, hiện đại và dễ mở rộng. Bằng cách sử dụng Composition API, bạn có thể tổ chức logic một cách rõ ràng, dễ test và tái sử dụng.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Google Login trong Nuxtjs

1. Auth. Authenticate là thứ rất quen thuộc của mỗi app, trong bài viết này mình sẽ giới thiệu auth module dành cho nuxt giúp bạn xử lý công việc này rất nhanh và dễ dàng. Trước hết là cài nuxt.

0 0 146

- vừa được xem lúc

Quản lý và sử dụng API trong Nuxt bằng cách sử dụng Repository Pattern

Mở đầu năm mới, à nhầm, mở đầu bài viết. Cái tên NuxtJS chắc hẳn cũng không còn xa lạ gì với những bạn yêu thích VueJS nữa, đương nhiên mình cũng là một chàng trai dành tình yêu to lớn cho frameworks này.

0 0 238

- vừa được xem lúc

Tôi đã dùng Service Pattern trong NuxtJS như thế nào ?

Giới thiệu. Trong quá trình làm VueJS NuxtJS hay thậm chí là Laravel mình cũng hay áp dụng các pattern như Service hoặc Repository.

0 0 76

- vừa được xem lúc

Cẩn thận với Server-Side Plugins trong Nuxt.js

Nếu bạn build một ứng dụng server-side rendering (SSR) với Nuxt.js, bạn hoàn toàn có thể tạo ra một ứng dụng với độ linh hoạt cao cùng với trải nghiệm hiệu suất tuyệt vời.

0 0 119

- vừa được xem lúc

JWT Authentication với Vue/Nuxt

Authentication trong SPAs thường là một chủ đề hot, đối với những người không chắc chắn về cách thức triển khai một hệ thống authentication với đầy đủ tính năng - registration, login and access token

0 0 25

- vừa được xem lúc

[FE] [Nuxt3] [Tip] [Network] Làm chức năng hiển thị tình trạng kết nối mạng

Intro. .

0 0 26