Với Vue.js
Trong hệ sinh thái phát triển giao diện người dùng hiện đại, Vue.js nổi lên như một giải pháp hiệu quả nhờ tính linh hoạt và dễ tích hợp.
Các Directive Cơ Bản
- Mustache: Dấu ngoặc kép đôi
{{ }} được dùng để nhúng biểu thức động trong DOM. - Binding Thuộc tính: Sử dụng
v-bindhoặc ký tự rút gọn:để gán giá trị động cho thuộc tính HTML. - Lắng nghe Sự kiện:
v-onhoặc ký tự @ dùng để gắn các hàm xử lý sự kiện click, keyup, v.v. - Two-way Binding:
v-modelđồng bộ hóa giữa form input và state. - Xử lý Logic:
v-if/v-elseđiều khiển hiển thị theo điều kiện;v-forlặp qua mảng hoặc đối tượng. - Điều kiện CSS: Khi áp dụng cho class, ta có thể truyền vào Object JS. Khóa là tên class (dùng dấu ngoặc nếu có dấu gạch ngang), giá trị là boolean từ Vue instance.
Tạo Instance (Options API)
Việc khởi tạo ứng dụng dựa trên hàmVue(). Đối số truyền vào là một Object chứa các tùy chọn cấu hình:
el: Chọn điểm neo trong DOM nơi Vue sẽ kiểm soát.data: Định nghĩa các thuộc tính trạng thái phản hồi.methods: Tập hợp các hàm hành vi.computed: Các thuộc tính tính toán dựa trên data (có caching).watch: Theo dõi sự thay đổi của dữ liệu cụ thể.hooks chu trình sống:created,mounted, v.v. thực thi tại các thời điểm nhất định của vòng đời.
Cấu trúc Dự án Đơn giản
Dưới đây là ví dụ minh họa việc nhúng Vue trực tiếp qua CDN. Lưu ý việc khai báo script ở cuối thẻ body hoặc trong hàm load để đảm bảo DOM đã render xong.<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="container-demo">
<p>{{ tiêu_đề }}</p>
</div>
<script>
const instance = new Vue({
el: '#container-demo',
data: {
tiêu_đề: 'Xin chào thế giới'
}
});
// Thay đổi dữ liệu sau khi khởi tạo
instance.tiêu_đề = 'Nội dung đã cập nhật';
</script>
</body>
</html>
Cơ chế Component
Component cho phép tái sử dụng mã nguồn. Để đăng ký toàn cục:Vue.component('tên-tag-mục-tiêu', {
// Hàm data trả về object riêng biệt cho mỗi instance
data () {
return {
cá_tính_dữ_liệu: ''
}
},
template: '<span>'Nội dung...</span>',
props: ['mã'],
methods: {},
computed: {},
watch: {},
lifecycleHooks: {}
});
Sử dụng Vue CLI
Môi trường xây dựng dự án chuyên nghiệp bao gồm webpack, hot reload và ESLint:# Cài đặt công cụ dòng lệnh
npm install --global @vue/cli
# Khởi tạo dự án mới (chọn option cần thiết)
vue create my-vue-project
# Truy cập thư mục
cd my-vue-project
# Lấy dependencies
npm install
# Chạy server dev
npm run serve
Tích hợp TypeScript
Sử dụng thư việnvue-class-component giúp kết hợp sức mạnh của OOP vào Vue:
- Hàm decoratror
@Componentthay thế cho đối tượng options. propsvàdatatrở thành các thuộc tính class.computedđược ánh xạ thành Getter/Setter.- Methods và Hooks的生命周期 chuyển thành các phương thức trong class.
Đơn vị Đơn (Single File Components - SFC)
Định dạng.vue là tiêu chuẩn vàng trong hệ sinh thái Vue, đóng gói ba phần chính:
<template>: Đánh dấu cấu trúc HTML của component.<script>: Chứa logic JavaScript hoặc TypeScript.<style>: Định nghĩa CSS riêng biệt cho component đó.
Cộng tác Dữ liệu với Vuex
Khi ứng dụng phức tạp, dữ liệu nên được quản lý trung tâm thông qua createStore (Store).
- State: Nguồn dữ liệu duy nhất (single source of truth).
- Getters: Tính toán và lọc dữ liệu từ State (giống computed).
- Mutations: Chỉ được phép thay đổi State (bắt buộc phải đồng bộ). Đây là cách thức duy nhất để sửa đổi dữ liệu.
- Actions: Xử lý logic phức tạp, hỗ trợ bất đồng bộ (async). Sau đó gọi Mutation thông qua
commit.
Kết nối Component với Store
Để sử dụng store bên trong component, cần nhập nó vào options:export default {
store: store,
computed: {
// Cách 1: Trỏ trực tiếp
someVal() { return this.store.state.something }
// Cách 2: Sử dụng helper (khuyên dùng)
},
methods: {
// Cách 1: Gọi trực tiếp
doSomething() { this.store.commit('do_something') }
// Cách 2: Map helpers
}
}
Các helper phổ biến giúp rút gọn code:
mapState(): Ánh xạstatevào computed properties.mapGetters(): Ánh xạgettersvào computed properties.mapMutations(): Ánh xạmutationsvào methods.mapActions(): Ánh xạactionsvào methods và gọi bằngdispatch.