Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Vue là framework JavaScript được nhiều lập trình viên yêu thích vì dễ tiếp cận: mã gần với HTML quen thuộc, tài liệu rõ ràng và có thể dùng dần từ một trang nhỏ đến ứng dụng lớn. Bài này giới thiệu Vue 3 với cú pháp Composition API và script setup mà tài liệu chính thức khuyến khích dùng.
npm create vue@latest
cd ten-du-an
npm install
npm run devCông cụ sẽ hỏi bạn một vài lựa chọn như TypeScript, router. Với người mới, bạn có thể bỏ qua hầu hết. Một thành phần Vue nằm trong file .vue gọi là Single File Component (SFC), gồm ba khối.
<script setup>
import { ref } from 'vue';
const dem = ref(0);
function tang() {
dem.value++;
}
</script>
<template>
<button @click='tang'>Bạn đã bấm {{ dem }} lần</button>
</template>
<style scoped>
button {
padding: 8px 16px;
}
</style>ref bọc một giá trị để Vue theo dõi thay đổi. Trong script, bạn đọc và ghi qua .value; trong template, Vue tự mở bọc nên không cần .value:
const ten = ref('Lan');
const tuoi = ref(22);
ten.value = 'Mai'; // trong script cần .valueKhi dem.value đổi, giao diện tự cập nhật. Đây chính là tính phản ứng (reactivity): bạn thay đổi dữ liệu và Vue lo phần vẽ lại.
import { reactive } from 'vue';
const form = reactive({ ten: '', email: '' });
form.ten = 'Nam'; // không cần .valueCả hai đều dùng được cho object. Lời khuyên phổ biến: dùng ref làm mặc định cho mọi loại dữ liệu để nhất quán. Hạn chế của reactive là không thay thế được cả object bằng phép gán mới mà vẫn giữ tính phản ứng, và khi destructuring thuộc tính ra ngoài bạn sẽ mất liên kết.
{{ bieuThuc }}: chèn giá trị vào văn bản.v-bind:src hoặc viết tắt :src: gắn dữ liệu vào thuộc tính.v-on:click hoặc viết tắt @click: lắng nghe sự kiện.v-model: liên kết hai chiều với ô nhập.v-if, v-else, v-show: hiển thị có điều kiện.v-for: lặp danh sách, kèm :key.<script setup>
import { ref } from 'vue';
const ten = ref('');
const ds = ref([{ id: 1, ten: 'HTML' }, { id: 2, ten: 'CSS' }]);
</script>
<template>
<input v-model='ten' placeholder='Nhập tên' />
<p v-if='ten'>Xin chào, {{ ten }}!</p>
<p v-else>Hãy nhập tên của bạn</p>
<ul>
<li v-for='k in ds' :key='k.id'>{{ k.ten }}</li>
</ul>
</template>v-model rút gọn đáng kể so với việc tự viết cả value lẫn xử lý sự kiện như trong React. Đây là một điểm khiến nhiều người thấy Vue "dễ chịu".
Hai thư viện đều dựa trên component và tính phản ứng, nhưng cách tiếp cận khác nhau:
Không có bên nào đúng tuyệt đối. Hãy chọn theo dự án, đội nhóm, và quan trọng là thị trường việc làm bạn nhắm tới. Kiến thức nền tảng về JavaScript, component và quản lý state mang sang được cả hai.
Ghép những gì đã học thành ứng dụng ghi chú rất gọn:
<script setup>
import { ref } from 'vue';
const noiDung = ref('');
const ghiChu = ref([]);
function them() {
if (!noiDung.value.trim()) return;
ghiChu.value.push({ id: Date.now(), text: noiDung.value });
noiDung.value = '';
}
</script>
<template>
<form @submit.prevent='them'>
<input v-model='noiDung' placeholder='Ghi chú mới' />
<button>Thêm</button>
</form>
<ul>
<li v-for='g in ghiChu' :key='g.id'>{{ g.text }}</li>
</ul>
</template>Hãy để ý @submit.prevent: modifier .prevent gọi preventDefault() giúp bạn. Và với mảng phản ứng, push hoạt động trực tiếp, không cần tạo bản sao như trong React vì Vue theo dõi được thay đổi tại chỗ.
Với Vue 3 bạn cần nhớ: file SFC gồm script setup, template, style; ref với .value trong script; các directive v-if, v-for, v-model, @click. Chỉ vậy là đủ để dựng những giao diện tương tác đầu tiên.
Khi sẵn sàng đi tiếp tới props, emit và router, hãy xem thêm các khóa học trên codebem.com để có lộ trình rõ ràng.
Nguyễn Đình Cường
0 comment