Những điều cơ bản về VueJS

1. Giới thiệu về VueJS. Nếu bạn là một người sử dụng javascript để làm việc thì hẳn đã nghe về Vue.JS một framework cực kỳ mạnh mẽ. Hôm nay, bằng kiến thức của một người mới tiếp cận với VueJS, mình sẽ giới thiệu cho mọi người những thứ cơ bản về vuejs. Vậy

1. Giới thiệu về VueJS.

Nếu bạn là một người sử dụng javascript để làm việc thì hẳn đã nghe về Vue.JS một framework cực kỳ mạnh mẽ. Hôm nay, bằng kiến thức của một người mới tiếp cận với VueJS, mình sẽ giới thiệu cho mọi người những thứ cơ bản về vuejs.

Vậy VueJS là gì?

Nó là một framework javascript được xây dựng lên bởi Evan You, nó giúp chúng ta xây dựng giao diện người dùng hoặc Single Page Application. Nó được xây dựng dựa trên HTML, CSS và JavaScript tiêu chuẩn, đồng thời cung cấp mô hình lập trình dựa trên các component và khai báo nó giúp bạn phát triển hiệu quả các giao diện người dùng, dù đơn giản hay phức tạp.

2. Những kiến thức cơ bản.

2.1 Vue Instance, vòng đời một instance.

  • Đầu tiên chúng ta cần hiểu instance là gì.

Instance là một đối tượng trong Vue.js. Để khởi tạo một đối tượng ở trong Vue chúng ta sử dụng:

const vm =newVue({// options })

VD:

const vm =newVue({
    el:'#app',
    data:{return{
            count:0}}})

Ở ví dụ trên, Vue đã thực hiện selector với thành phần có id là app và khởi tạo dữ liệu count để chúng ta có thể sử dụng và render ra chúng.

Vòng đời của một instance

Gồm 4 giai đoạn chính:

  • Khởi tạo (creating)
  • Gắn vào DOM (mounting)
  • Cập nhật DOM (updating)
  • Hủy instance (destroying)

Trong mỗi giai đoạn sẽ có các hook tương ứng được chạy. Bạn có thể hiểu đơn giản hook là một function được gọi vào những thời điểm cụ thể của giai đoạn đó.

Bạn có thể vào đây để xem về xong đời của Vue instance

2.2 Cú pháp trong template

//Ở đây mình sẽ sử dụng CDN nhé (các bạn cứ vứt link vue cuối thẻ body là được).<script src="https://unpkg.com/[email protected]"></script>//đây là link vue mình sử dụng

Vừa rồi ở trên mình đã ví dụ về việc tạo một dữ liệu count để sử dụng và render nó. Vậy làm thế nào để chúng ta có thể render nó ra màn hình?

Để có thể render ra chúng ra để chúng ở giữa 2 dấu {{ }} này. Cụ thể:

<p>{{ count }}</p>

Kết quả khi bạn chạy chương trình chúng ta sẽ thấy 0 hiển thị ở đó.

vậy nếu chúng ta muốn render ra màn hình một câu Tôi đang học vue thì làm thế nào?

Đơn giản bạn chỉ cần thay 0 thành "Tôi đang học vue" là được rồi.

Tương tự chúng ta cũng có thể render ra 1 thẻ HTML thì chúng ta chỉ cần sử dụng directive của Vue với cú pháp v-. Ví dụ:

<pv-html="count"></p>

Chúng ta cũng có thể sử dụng các thuộc tính của thẻ HTML, nhưng không phải là sử dụng dấu {{ }} này mà chúng ta cần sử dụng v-bind:parameter="value" với parameter là thuộc tính cần sử dụng và value là giá trị. Cụ thể:

<buttonv-bind:disabled="true"></button>

Chúng ta cũng có thể thay true bằng một function với giá trị return là true or false hay một dữ liệu có giá trị tương tự.

Ngoài ra chúng ta cũng có thể tăng tính rằng buộc cho directive bằng Modifier. vd: bạn muốn submit form mà không muốn load lại trang web thì bạn có thể sử dụng:

<formv-on:submit.prevent="method">...</form>

Note: bạn cũng có thể rút gọn chúng v-on:click-> @click, v-bind:href -> :href.

2.3 Methods

Như bạn đã thấy ở ví dụ form ở trên mình đã nhắc tới method vậy trong Vue chúng ta cài đặt chúng như nào?

Để khởi tạo một function chúng ta chỉ cần thêm option methods và viết function ở trong đó là được. Cụ thể:

const vm =newVue({
    el:'#app',data(){return:{
            number:0,
            message:"Bạn vừa tăng thêm 1 đơn vị"},
        methods:{plusNumber(){this.number +=1alert(this.message)},subtractNumber(value){this.number -= value
            }}}})
<p>{{ number }}</p><button@click="plusNumber">plus 1</button><button@click="subtractNumber(1)">subtract 1</button>

Một khi chúng ta click vào button plus thì number sẽ tăng 1 và ngược lại.

2.4 Computed, watchers.

Computed properties.

Để hiểu được về computed thì chúng ta làm thử 1 ví dụ trước:

var vm =newVue({
     el:'#app',data(){
         number:0}, 
     methods:{plusNumber(){returnthis.number++}}
     computed:{plusNumber(){returnthis.number++}}})

Theo các bạn chúng ta sẽ sử dụng cái nào trong trường hợp trên khi plusNumber được gọi.

Để biết trường hợp nào được gọi thì chúng ta cần biết khi sử dụng computed thì chúng ta sẽ không có tham số đầu vào và khi gọi chúng ta chỉ cần gọi plusNumber mà không cần plusNumber(). Đó chính là điểm khác biết giữa computed và method khi sử dụng.

Computed có khả năng Cache lại dữ liệu khi gọi function này lần đầu tiên để những lần tiếp theo nó sẽ lấy ra dữ liệu ở trong cache đã được xử lý qua computed. Ngược lại method thì không.

Cuối cùng Computed thường thực hiện với dữ liệu có trong instance để hạn chế việc tính toán và lấy dữ liệu ở trong cache.

watchers:

watchers dịch ra là người theo dõi và công việc của nó cũng như cách gọi. Nó dùng để theo dõi sự thay đổi của dữ liệu của đối tượng. Chúng ta sẽ khai báo watcher giống như methods và computed. vd:

const vm =newVue({
    el:'#app',data(){return{
            count:0},
        watch:{count(value){this.count++}}}})

Tổng kết lại : cả methods, computed properties, watchers đều có những ưu điểm riêng nhưng tùy vào mục đích sử dụng cụ thể mà chúng ta sẽ áp dụng chúng một cách tối ưu nhất.

2.5 Binding, Render, Xử lý sự kiện.

Binding

Binding là rằng buộc cụ thể dữ liệu vào một phần tử web. Cú pháp sử dụng là v-bind. Chúng ta có thể binding class, binding style bằng cách sử dụng v-bind:class hoặc v-bind:style. Dưới đây mình chỉ nói về binding class vì binding style tương tự vậy.

Ví dụ:

<divclass="static"v-bind:class="{ 'error': hasError }"></div>

với dữ liệu:

data:{
  hasError:true}

Kết quả là:

<divclass="static error"></div>

Render

Ở đây mình chỉ nói về việc render có điều kiện vì nếu không có điều kiện thì ở trên mình đã nói rồi.

Để render dữ liệu theo điều kiện , chúng ta có 2 cách là v-ifv-show:

data:{
  show:true}

v-if:

<divv-if="show"></div>

v-show:

<divv-show="show"></div>

Cả v-ifv-show đều có thể dùng để render dữ liệu ra màn hình nhưng v-if sẽ xóa bỏ template nếu điều kiện sai còn v-show chỉ ẩn đi bằng css.

Để render ra một danh sách thì chúng ta sử dụng v-for. Ví dụ:

const vm =newVue({
    el:'#app',data(){
        lists:[1,2,3,4,5,6]}})
<ul><liv-for="item in list">{{ item }}</li></ul>

Form Input Binding:

Đối với việc lập trình web thì việc làm việc với form là điều không thể tránh khỏi. Vue cũng cung cấp cho chúng ta các răng buộc với form.

  • v-model dùng để rằng buộc dữ liệu với form. Khi nhập dữ liệu từ ô input thì nó sẽ được cập nhật vào thuộc tính cùng tên ở data của Vue.
const vm =newVue({
    el:'#app',data(){
        message:''}})
<inputv-model="message"placeholder="nhập nội dung">

Xử lý sự kiện:

Chúng ta có thể dùng directive v-on để lắng nghe các sự kiện DOM và thực thi JavaScript khi những sự kiện này được kích hoạt. Ví dụ:

<divid="example-1"><buttonv-on:click="counter += 1">Đếm cừu</button><p>{{ counter }} con cừu.</p></div>
var example1 =newVue({
    el:'#example-1',
    data:{
        counter:0}})

Ngoài click thì các bạn có thể tìm hiểu thêm về xử lý sự kiện từ phím khác tại: Xử lý sự kiện

3. Tổng kết.

Qua các ví dụ ở trên thì chúng ta có thể nắm được cách tạo một Vue instance, các cú pháp sử dụng, cách render dữ liệu. Rất mong bài viết này sẽ giúp ích được cho mọi người.

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ