Khái niệm về FrameWork

framework

(Hoàng Dinh) #1

Mọi người cho mình hỏi thế nào là FrameWork ? Hiểu 1 cách đơn giản ấy , vì trên gg họ nói hơi rườm rà ạ


(HK boy) #2

Bạn thử đọc link này chưa?


(Tên Gì Cũng Được) #3

Vẫn còn dài :smiley:
Nói cho gọn thì framework là một initialized project, tức là một project đã được khởi tạo, có design pattern (đến một mức nào đó) sẵn hết rồi, chỉ follow theo và xây tiếp thôi


(Hung) #4

Bạn viết chương trình bằng C++, bạn viết cả đống code và muốn tái sử dụng nó khi viết chương trình khác. Lúc này có 2 trường hợp xảy ra:

  • Code tái sử dụng bao gồm cả hàm main(). Code đó gọi là framework.
  • Code tái sử dụng không có hàm main(). Code đó gọi là library.
  • Code không tái sử dụng gọi là application.

Tuỳ ngữ cảnh (context) mà nhận biết phần nào trong code là hàm main().

Khi application sử dụng framework, dev không cần khai báo hàm main() mà chỉ cần tạo class thừa kế các class trong framework, sử dụng factory function trong framework để tạo function cho application.

Ví dụ:
Trong CSS, hàm main là file style.css do mình tạo ra.

  • Nếu bạn dùng Bootstrap thì style.css đó là bootstrap.min.css, hầu hết các việc còn lại là sử dụng class trong HTML.
  • Nếu bạn sử dụng animate.css, chuyên xử
    lý animation. Tuy nhiên ngoài animation còn rất nhiều việc CSS làm được, như layout, transform, shadow, component, nên cần phải tạo style.css riêng đóng vai trò hàm main().
    • Trường hợp ngoại lệ, nếu context chỉ là component, nhưng chỉ sử dụng animation, thì animate.css lại là framework.

Trong JavaScript, React, Angular có CLI tool tạo tất cả các file cần thiết. Với React thì tạo class thừa kế class React.Component. Với Angular, class cần decorate các annotation như @Component, @Service, @Module. Cả hai đều không cần dev phải tạo 1 file JavaScript mà CLI đã tạo giùm. Vậy React, Angular là framework.

  • Tuy nhiên cũng có ngoại lệ, nếu webpage có nhiều web component khác biệt, như HomePage sử dụng jQuery để có load nhanh. HomePage cũng có phần Chat sử dụng React. React lúc này lại đóng vai trò library trong ngữ cảnh Home Page. Với ngữ cảnh chỉ xét web component chat thì React lại là framework.

Các trường hợp khác rõ ràng hơn, iOS SDK, Android SDK, Laravel, Spring là framework. Alamofire, Volley, GSON, Eloquent là library.

Ps: dựa theo GoF Design Pattern


(Hoàng Dinh) #5

Chấm chấm là còn tiếp hay sao ạ


(rogp10) #6

Đúng vậy, phải click vào link mới xem full được :smiley: xem trước vài dòng vẫn hay hơn là chỉ đưa mỗi link, vì nhiều bài cũng chỉ vài dòng.


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?