Là framework? hay là library?
Software Engineering
39
random
5
White

Huy Trần viết ngày 17/10/2018

Như thường lệ, là chuyên mục quảng cáo, bài viết được đăng lại từ https://thefullsnack.com/posts/framework-or-library.html


Hôm nay mình nghe podcast buổi nói chuyện giữa anh Kyle Simpson (tác giả You Don't Know JS) và Jeff từ Software Engineering Daily 1 2 thì thấy một ý kiến khá là đáng quan tâm của anh Kyle về cách phân biệt giữa libraryframework, note lại kẻo quên.

Đầu tiên, anh Kyle đưa ra một ví dụ về việc lái xe: Giả sử bạn lái xe, và muốn đi từ điểm A tới điểm B, mà bạn không biết đường.

  • Cách đơn giản nhất, đó là mở ngăn kéo lấy ra một tấm bản đồ, nhìn vô đó để tìm đường đi, tấm bản đồ bằng giấy, và bạn phải tự tìm đường bằng cách hình dung ra con đường. Tấm bản đồ là một công cụ giúp bạn tìm đường đi, nhưng tự thân nó không đưa ra bất kì ý kiến hay chỉ dẫn nào cho bạn.
  • Ở một cấp độ khác cao hơn, chúng ta có các thể loại thiết bị kết nối GPS, đưa ra các gợi ý và hướng dẫn để chúng ta đi từ điểm này đến điểm khác, như Google Maps trên điện thoại. Tuy nhiên, nếu Google Maps biểu bạn rẽ trái, mà bạn lại quẹo phải, thì cũng không sao. Bạn luôn luôn có sự lựa chọn là nghe theo hoặc không nghe theo các ý kiến chỉ dẫn đó.
  • Cấp độ cao hơn nữa, đó là xe tự lái, bạn ngồi lên xe, ra lệnh cho nó chạy từ chỗ này đến chỗ kia, và nó sẽ tự tìm đường để đưa bạn đến nơi cần đến, có nghĩa là bạn đi theo nó, và bạn không có sự lựa chọn nào khác 3 ngoài việc nằm im và hưởng thụ ngồi yên cho nó lái.

:chicken: Đọc tới đây hẳn các bạn cũng đã hình dung ra được thế nào là framework và library rồi đúng không? đọc tiếp đi.

Ở trên là 3 cấp độ đại diện cho 3 cách phân loại: library, frameworkplatform, lần lượt dựa trên mức độ opinionated của chúng.

  • 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ì.
  • 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, tuy nhiên nếu không theo thì cũng chả chết ai. 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,...).
  • Platform là các công cụ cực kì opinionated, 4 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, một bộ theme phải có các thành phần này kia, phải có functions.php (phải ko ta, lâu rồi không code PHP), .NET Framework là một platform. PhoneGap là một platform.


  1. Podcast: JavaScript Concurrency with Kyle Simpson 

  2. Nếu các bạn đang hỏi là: Ơ, tự nhiên lòi đâu ra cái vụ nghe podcast nữa? Thì podcast là một phong trào mới nổi trong cộng đồng developer, và tính cả thời gian đi làm lẫn đi về của mình thì một ngày tốn tầm 3, 4 tiếng lái xe, nên nghe podcast/audio book để tận dụng thời gian "chết" là một giải pháp vừa hiển nhiên vừa chỉ có lợi. 

  3. Chỉ là đại khái thôi, thực ra xe tự lái thì bạn vẫn có thể can thiệp được vào việc nó lái, và đó là luật. 

  4. Cũng có người định nghĩa platform theo nghĩa rộng hơn, là bao gồm cả hệ điều hành, phần cứng, nơi mà các ứng dụng, framework chạy. Tuy nhiên cách định nghĩa này có vẻ không liên quan đến platform trong bài viết. 

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Huy Trần

119 bài viết.
1955 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
176 46
Tại sao phải viết blog kĩ thuật? Có rất nhiều bài viết trên mạng nói về vấn đề tại sao một lập trình viên nên thường xuyên viết các bài blog kĩ thu...
Huy Trần viết 4 năm trước
176 46
White
154 39
(Ảnh) Tiếp tục sêri (Link) lần này, chúng ta sẽ cùng tìm hiểu và mô phỏng lại một chức năng mà mọi người đang bắt đầu sử dụng hằng ngày, đó là chứ...
Huy Trần viết hơn 3 năm trước
154 39
White
117 18
Phần 1: Tự truyện Tui và Toán đã từng là hai kẻ thù không đội trời chung trong suốt hơn mười lăm năm ròng rã. Ngay từ ánh nhìn đầu tiên đã ghét nh...
Huy Trần viết hơn 3 năm trước
117 18
Bài viết liên quan
White
28 13
Như thường lệ, bài đăng lại từ blog của mình https://thefullsnack.com/posts/blamedrivendevelopment.html ■ :warning: _Bài viết có dùng những từ ngữ...
Huy Trần viết 11 tháng trước
28 13
White
17 7
Người ta vẫn hay nói, đem ba cái tình anh em, bạn bè, nể nang nhau vô công việc thì kiểu gì cũng hỏng việc. Cái này đúng cho cả chuyện review code....
Huy Trần viết hơn 1 năm trước
17 7
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
119 bài viết.
1955 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!