Framework hay Library?
I. Đặt vấn đề "Vì sao JQuery là library mà không phải là framework?" chắc chắn vẫn còn rất nhiều người còn mơ hồ về khái niệm framework và library và sẽ không thể trả lời được rằng tại sao. Trong bài viết lần này mình sẽ chia sẻ về khái niệm và cách phân biệt giữa framework và libray. ...
I. Đặt vấn đề
"Vì sao JQuery là library mà không phải là framework?" chắc chắn vẫn còn rất nhiều người còn mơ hồ về khái niệm framework và library và sẽ không thể trả lời được rằng tại sao. Trong bài viết lần này mình sẽ chia sẻ về khái niệm và cách phân biệt giữa framework và libray.
II. Nội Dung
1. Library là gì?
Library là các loại công cụ chỉ đơn thuần là công cụ, không đưa ra bất kỳ ý kiến hay chỉ dẫn nào để bạn phải làm theo, bạn có thể tùy ý sử dụng và tùy biến nó theo cách của bạn. JQuery, Underscore, Lodash là các ví dụ về library, chúng chỉ cung cấp cho chúng ta các công cụ cần thiết để tùy ý lựa chọn và sử dụng chứ ta không cần phải theo một quy tắc gì.
2. Framework là gì?
Framework là các công cụ opinionated, nó đưa ra các quy tắc và hướng dẫn để chúng ta phải tuân theo(có thể tuân theo hoặc không). Angular là một framework, vì nó bắt bạn code theo quy tắc của nó (từ cách đặt tên, cho tới cách tổ chức cấu trúc dự án, service, module, cách viết directives...). React thì nằm đâu đó giữa framework và library vì nó không bắt buộc chúng ta phải tuân theo một quy cách nào, mỗi người có một cách sử dụng React riêng, nhưng vẫn phải tuân theo một số quy tắc mà nó đưa ra (ví dụ các lifecycle handler của một component, và bạn có thể tùy ý setState hoặc xài Redux,...).
3. Platform là gì?
Platform là các công cụ cực kì opinionated, bạn phải tuân theo hoàn toàn mọi quy tắc mà nó đưa ra, làm khác đi thì không được. Ví dụ Wordpress nằm ở giữa khoản framework và platform, .NET Framework là một platform. PhoneGap là một platform.
III. Kết Luận
Vậy tóm lại Library là những cái gì có sẵn và mình gọi nó để sử dụng còn Framework là cái mà nó gọi code của mình để thực thi.