Chọn đúng công cụ hoặc công nghệ cho một vấn đề nhất định là một trong những khía cạnh quan trọng nhất của lập trình. Công cụ phù hợp là chìa khóa thành công của dự án. Đây là nơi hầu hết các lập trình viên thất bại bởi vì họ thường xử lý nhiều công cụ. Điều này liên quan đến câu hỏi cuối cùng, bạn có nên xây dựng ứng dụng của mình với một thư viện hoặc một khung không? Đây là một trong những chủ đề thảo luận gây tranh cãi nhất trong cộng đồng lập trình viên và thường là một nguồn gây nhầm lẫn. Một nhóm nhỏ với một số ít nhà phát triển, hầu hết là người mới bắt đầu có thể làm việc tốt hơn với khung trong khi các thư viện đang xây dựng các khối có thể được sử dụng ở bất cứ đâu và cho phép kiểm soát và linh hoạt hơn.
Sự khác biệt chính giữa một thư viện và một khung công tác là Nghịch đảo điều khiển (IoC). Người ta có thể nói framework là một tập hợp các thư viện nhưng toàn bộ ý tưởng thì khác.
Thư viện là tập hợp các hàm có thể sử dụng lại được sử dụng bởi các chương trình máy tính, nghĩa là các tài nguyên mà bạn có thể sử dụng lại có thể bao gồm các lớp, chương trình con, mã được biên dịch trước, các mẫu thông báo, v.v. thư viện tùy chỉnh. Nó chỉ đơn giản là một đoạn mã được viết bởi các nhà phát triển khác có thể được sử dụng lại ở bất cứ đâu. Các thư viện có thể được kết hợp liền mạch vào các dự án hiện có để thêm chức năng mà bạn có thể truy cập thêm bằng API. Một chút kiến thức cần thiết để bạn bắt đầu.
Framework là một đoạn mã quy định cách thức cấu trúc và chạy dự án. Nó chỉ đơn giản là bắt buộc kiến trúc của dự án của bạn như xác định các tham số thiết kế của ứng dụng để bạn có thể tập trung vào các chi tiết cụ thể của dự án, từ đó nhấn mạnh vào khả năng sử dụng lại thiết kế thay vì sử dụng lại mã. Không giống như các thư viện, điều khiển được đảo ngược trong trường hợp khung và mã không bao giờ gọi vào khung, thay vào đó, khung gọi cho bạn. Không giống như các thư viện, các khung nhấn mạnh vào cấu trúc và tiêu chuẩn.
Trong lập trình, thư viện là tập hợp các hàm có thể sử dụng lại - nghĩa là tài nguyên bạn có thể sử dụng lại - được sử dụng bởi các chương trình máy tính. Các tài nguyên, đôi khi được gọi là các mô-đun, thường được lưu trữ ở định dạng đối tượng. Hầu hết các ngôn ngữ lập trình đều có thư viện tiêu chuẩn riêng nhưng lập trình viên cũng có thể tạo thư viện tùy chỉnh của riêng mình. Nói một cách đơn giản, thư viện là một tập hợp các hàm mà bạn có thể gọi, trong khi khung là một đoạn mã quy định kiến trúc của dự án của bạn. Theo một cách nào đó, các khung và ngôn ngữ lập trình được đan xen để cùng nhau hỗ trợ các chương trình máy tính.
Sự đảo ngược của điều khiển và hướng tới là sự khác biệt chính giúp phân tách một khung từ thư viện. Thư viện là một tập hợp các hàm và thói quen được sử dụng bởi các chương trình khác và bạn có toàn quyền kiểm soát nếu nó gọi một phương thức từ thư viện. Tuy nhiên, kiểm soát được đảo ngược trong trường hợp của một khung. Nó ra lệnh cấu trúc của dự án của bạn và mã không bao giờ gọi vào một khung công tác, thay vào đó, nó gọi bạn. Nói một cách đơn giản, bạn có thể nghĩ đơn giản về thư viện là một chức năng của một ứng dụng và một khung như là bộ xương của ứng dụng trong đó ứng dụng xác định các tính năng của chính nó.
Thư viện là một tập hợp các hàm có thể được sử dụng ở bất cứ đâu có nghĩa đơn giản nó là một đoạn mã được viết bởi các nhà phát triển khác có thể được sử dụng lại. Chúng được kết hợp hoàn hảo vào các dự án hiện có để thêm chức năng mà bạn có thể truy cập bằng API. Chúng chủ yếu được sử dụng cho các mô-đun được sử dụng thường xuyên vì bạn không phải liên kết rõ ràng với mọi chương trình sử dụng chúng. Chúng rất quan trọng trong quá trình liên kết và ràng buộc chương trình. Mặt khác, các khung cung cấp một cách tiêu chuẩn để xây dựng và triển khai các ứng dụng và chủ yếu có thể được sử dụng khi bắt đầu một dự án mới thay vì tích hợp vào các dự án hiện có.
Để hiểu rõ hơn về sự khác biệt giữa thư viện và khung, hãy xem jQuery và AngularJS. jQuery là một thư viện JavaScript đa nền tảng giúp đơn giản hóa thao tác DOM cùng với rất nhiều thứ phức tạp khác như thao tác CSS, phương thức sự kiện HTML, cuộc gọi AJAX, v.v ... Mục đích của jQuery là đơn giản hóa việc sử dụng JavaScript trên trang web của bạn. AngularJS, mặt khác, là một khung cấu trúc dựa trên kiến trúc MVC được sử dụng để tạo các ứng dụng web động. Nó hoàn toàn dựa trên HTML và JavaScript và không giống như jQuery, nó không thể được tích hợp vào các dự án hiện có bởi vì với tư cách là một khung, nó quyết định cách mã của bạn được cấu trúc và chạy.
Khi có sự nhầm lẫn về việc quyết định xem bạn nên sử dụng thư viện hay khung để xây dựng một ứng dụng, tất cả sẽ được kiểm soát. Thư viện là một tập hợp các chức năng mà bạn có thể gọi và mỗi cuộc gọi thực hiện một số tác vụ và trả lại quyền điều khiển cho bạn. Chúng có thể được kết hợp liền mạch vào các dự án hiện có và cần một chút kiến thức để bạn bắt đầu. Mặt khác, các khung công tác ra lệnh cho cấu trúc tổng thể của dự án của bạn và không giống như các thư viện, các khung gọi cho bạn và mã không bao giờ gọi vào một khung. Sự khác biệt chính tất nhiên là Inversion of Control. Nói một cách đơn giản, các thư viện linh hoạt hơn với mức độ kiểm soát cao hơn, trong khi các khung thực thi cấu trúc và tiêu chuẩn.