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

[jQuery] Bài 5 - Cách Viết Một Plug-in Đơn Giản

0 0 24

Người đăng: Semi Art

Theo Viblo Asia

Bài viết này chỉ mang tính chất ví dụ, làm quen với tài liệu và công cụ mà jQuery cung cấp để tạo ra một plug-in được dịch lại từ nguồn jQuery Learning Center. Thông thường thì khi nhắc tới jQuery, các thành phần component được xây dựng và chia sẻ trong cộng đồng hay được gọi là plug-in. Tuy nhiên thì khái niệm plug-in được jQuery Learning Center định nghĩa rộng hơn một chút. Một plug-in có thể là một hàm tiện ích nhỏ, hoặc cũng có thể là một thành phần tạo giao diện người dùng với độ phức tạp cao hơn.

Tuy nhiên, ở thời điểm hiện tại, trước khi quyết định xây dựng một plug-in trên nền jQuery, hãy chắc chắn rằng bạn đã tìm kiếm qua các nguồn chia sẻ phổ biến như jQueryScript.net hoặc npm. Bởi vì jQuery đã từng là thư viện JavaScript số một trong nhiều năm trước đây; Và ngay cả ở thời điểm hiện tại, khi mà công nghệ lập trình giao diện ở phía mặt tiền front-end đã thay đổi rất nhiều, thì jQuery vẫn còn được ưa chuộng bởi rất nhiều người do tính đơn giản và tiện dụng; Do đó sẽ rất khó có khả năng là bạn không thể tìm thấy một plug-in phù hợp với nhu cầu sử dụng đang được chia sẻ ở đâu đó ngoài kia. 😄

Làm thế nào để tạo ra một plug-in cơ bản?

Đôi khi chúng ta có thể sẽ muốn tạo ra một vài tiện ích có thể được sử dụng xuyên suốt toàn bộ project mà chúng ta đang thực hiện. Ví dụ như bạn có thể sẽ muốn tạo ra một phương thức mà bạn có thể gọi trên một object jQuery bất kỳ để thực hiện một thao tác đồng loạt trên nhiều phần tử HTML được chọn. Trong trường hợp này, bạn có thể sẽ muốn viết một plug-in.

Trước khi bắt đầu tự viết plug-in để sử dụng thì chúng ta cần tìm hiểu một chút về cách mà jQuery hoạt động. Hãy cùng xem ví dụ dưới đây -

$("a").css("color", "red");

Đây là một câu lệnh jQuery rất cơ bản, tuy nhiên bạn có muốn biết điều gì xảy ra ở phía sau những lời gọi hàm không? Các object jQuery lấy các phương thức từ một object đặc biệt - đó là jQuery.fn - có chứa tất cả các phương thức mà chúng ta đã sử dụng. Nếu như chúng ta muốn viết ra các phương thức có thể được sử dụng đối với bất kỳ object jQuery nào, thì chúng ta cũng cần phải thực hiện điều tương tự. Đó là lưu các phương thức của chúng ta vào object jQuery.fn.

Khai báo tên miền đơn giản cho plug-in

Hãy lấy ví dụ là chúng ta muốn tạo ra một plug-in giúp đổi màu chữ của các phần tử được chọn. Tất cả những gì mà chúng ta cần làm đó là lưu một hàm colorText vào trong object jQuery.fn. Và sau đó hàm này sẽ có thể được gọi như một phương thức của các object jQuery.

jQuery.fn.colorText = function(value) { this.css('color', value); return this;
}; $('a').colorText('royalblue') .addClass('nav-link');

Ở đây chúng ta có con trỏ this trỏ về object jQuery đang gọi phương thức colorText. Và để sau khi gọi phương thức này xong, chúng ta có thể gọi nối tiếp phương thức khác, thì chúng ta cần trả về con trỏ this.

Bảo vệ tên biến tham chiếu tắt $

Tên biến $ được sử dụng bởi rất nhiều thư viện JavaScript khác; Và nếu như một thời điểm nào đó, chúng ta muốn sử dụng cùng lúc những thư viện khác song song với jQuery, chúng ta sẽ phải ngưng jQuery sử dụng tên biến này ở scope toàn cục bằng cách gọi phương thức jQuery.noConflict(). Tuy nhiên, điều này sẽ khiến cho code của chúng ta đã viết trước đó không thể hoạt động được. Giải pháp là chúng ta có thể bao quanh toàn bộ code đã viết bởi một hàm tự gọi self-invoking function và truyền biến jQuery vào hàm.

jQuery.fn.colorText = function(value) { this.css('color', value); return this;
}; void function ($) { $('a').colorText('royalblue') .addClass('nav-link');
} (jQuery); // void

Tránh tạo nhiều tên miền cho plug-in

Chúng ta nên cố gắng tránh tạo ra nhiều tên miền để sử dụng cho plug-in của mình và nếu có thể thì một plug-in chỉ nên sử dụng một tên duy nhất trong jQuery.fn. Điều này sẽ giúp giảm thiểu khả năng plug-in của chúng ta sẽ bị ghi đè tính năng nào đó khi sử dụng chung với các plug-in khác đang được chia sẻ xung quanh.

void function ($) { jQuery.fn.popup = function(action) { if (action == "open") { // Open popup } else if (action == "close") { // Close popup code. } else { console.error('jQuery.popup(action) -> invalid action type'); } }; // fn.popup
} (jQuery); // void

Hỗ trợ sử dụng plug-in với các tham số lựa chọn

Khi plug-in của bạn trở nên phức tạp dần và có nhiều tính năng nâng cao, việc cung cấp các tham số lựa chọn để người sử dụng có thể viết lệnh truyền vào các tham số là điều rất quan trọng. Cách đơn giản nhất để thực hiện điều này là sử dụng một object chứa các tham số.

jQuery.fn.colorText = function(options) { var defaultOptions = { color: 'royalblue', background: 'white' }; var settings = jQuery.extend(defaultOptions, options); return this.css({ color: settings.color, backgroundColor: settings.backgroundColor });
}; // fn.colorText

Code sử dụng:

void function ($) { $('div').colorText({ color: 'orange' }) .addClass('jumbotron-heading');
} (jQuery); // void

Ở đây giá trị mặc định của colorroyalblue được ghi đề bởi jQuery.extend() và trở thành orange.

Bài viết giới thiệu về phương thức khởi tạo các plug-in/widget đơn giản với jQuery của chúng ta đến đây là kết thúc. Trong bài viết sau, chúng ta sẽ tìm hiểu cách tạo ra các stateful plug-in/widget. Từ stateful để mô tả đặc tính gì của các plug-in/widget thì chúng ta để dành sang bài sau nhé. 😄

Hẹn gặp lại bạn trong bài viết tiếp theo.

(Sắp đăng tải) [jQuery] Bài 6 - Cách Viết Một Stateful Widget

Bình luận

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

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

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 500

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

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 414

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

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 136

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

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 117

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

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 93

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

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 229