Jquery có phải là thư viện hay khuôn khổ javascript không? [đóng cửa]


121

Ở đây, jquery được đề cập trong danh mục khung: http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks

Jquery có phải là thư viện hay khuôn khổ javascript không?


40
Thư viện của một người là khuôn khổ của người khác.
nnnnnn

1
Đây là chủ đề ở đây vì mọi câu trả lời đều có giá trị như nhau: “______ yêu thích của bạn là gì?” . Ngoài ra, nó có vấn đề gì nếu tất cả chúng ta là một thư viện hoặc một khuôn khổ?
EJoshuaS - Phục hồi Monica

Câu trả lời:


169

Thư viện. Theo trang chủ , và tôi đồng ý với.

Khung công tác là thứ thường bắt buộc một cách nhất định để triển khai một giải pháp, trong khi jQuery chỉ là một công cụ để giúp việc triển khai những gì bạn muốn làm dễ dàng hơn.


55
+1. Thư viện là thứ bạn gọi từ chương trình của mình. Khung là một thứ gì đó gọi vào chương trình của bạn.
Thilo

1
Đối với thư viện vs so sánh khuôn khổ, xem "Inversion of Control" stackoverflow.com/a/3057818/2144912
cheshireoctopus

30

14
Trong khi tôi đồng ý, một tên / khẩu hiệu tự đặt không có gì bằng chứng. Có hàng ngàn cái gọi là "khuôn khổ" ngoài kia thực sự là các thư viện.
kapex,

@Kapep nhưng trường hợp đảo ngược ít phổ biến hơn: không nhiều khung công tác tự gọi mình là "thư viện". Tôi đoán thuật ngữ âm thanh "khủng" quyến rũ với một số ...
Franklin Yu

19

Chắc chắn, đó là một thư viện javascript. Nhưng về việc trở thành một khuôn khổ hay không, tôi chỉ nghĩ rằng nó không phải là một khuôn khổ. Hãy xem định nghĩa wikipedia về khung phần mềm :

Nó là một tập hợp các thư viện phần mềm cung cấp một giao diện lập trình ứng dụng xác định.

Và jQuery chỉ là một thư viện duy nhất. Sau đó nó nói:

Các khung chứa các tính năng phân biệt chính để phân biệt chúng với các thư viện bình thường:

  1. sự nghịch đảo của điều khiển - Trong một khuôn khổ, không giống như trong các thư viện hoặc các ứng dụng người dùng thông thường, luồng điều khiển của chương trình tổng thể không do người gọi ra lệnh mà là bởi khuôn khổ.

Vì vậy, tôi nghĩ nó không phải là một khuôn khổ.


9

Theo trang web anglejs

  • thư viện - một tập hợp các chức năng hữu ích khi viết ứng dụng web. Mã của bạn chịu trách nhiệm và nó sẽ gọi vào thư viện khi
    thấy phù hợp. Ví dụ: jQuery.
  • framework - một triển khai cụ thể của một ứng dụng web, nơi mã của bạn điền vào các chi tiết. Khung phụ trách và nó gọi vào mã của bạn khi cần một ứng dụng cụ thể nào đó. Ví dụ: durandal, ember, v.v.

5

Framework và libarry không nhất thiết là các điều khoản loại trừ lẫn nhau. Framework thường là một libarry hoặc một tập hợp các thư viện.

Nói một cách chính xác, jQuery là một thư viện, nhưng ở một mức độ nào đó, nó đáp ứng định nghĩa của một khung phần mềm. Mặc dù nhiều người cho rằng jQuery không đáp ứng đủ định nghĩa của một khung phần mềm, nhưng thực tế là không có khung JavaScript nào khác đáp ứng đầy đủ định nghĩa của một khung.

Một trong những đặc điểm xác định của khung phần mềm là mã của nó được bảo vệ khỏi các sửa đổi. Trong JavaScript, đây rõ ràng không phải là trường hợp. Bất kỳ thư viện hoặc khuôn khổ nào có thể được gọi vào mã phía máy khách của bạn đều có thể sửa đổi được, mặc dù việc thay đổi chúng sẽ đi ngược lại các phương pháp hay nhất. Vì vậy, nếu có thể gọi Bootstrap hoặc AngularJS là một khung công tác, thì không có lý do gì mà jQuery cũng không thể được gọi là một khung công tác. Liên kết này chứa giải thích chi tiết hơn về cách jQuery đáp ứng các tiêu chí để được gọi là khung.

Có lẽ lời giải thích tốt nhất về lý do tại sao jQuery giống với một khuôn khổ hơn là một thư viện là thực tế là với tư cách là một nhà phát triển, bạn có thể chọn không sử dụng bất kỳ chức năng giống như khuôn khổ nào của nó. Ví dụ: bạn có thể trộn một câu lệnh jQuery đơn giản với một câu lệnh JavaScript chuẩn trên cùng một dòng. AngularJS và Bootstrap thường không cho phép bạn làm điều này. Do đó, câu trả lời chính xác cho dù jQuery có phải là một khuôn khổ hay không là "nó phụ thuộc vào việc bạn có chọn sử dụng nó như một khuôn khổ hay không".


2

Tôi đồng ý với tất cả các câu trả lời ở đây rằng bản thân jQuery thực sự là một thư viện, không phải một khuôn khổ. Như đã nêu rõ trong câu trả lời của Saeed, một trong những đặc điểm phân biệt chính là sự đảo ngược kiểm soát. Tuy nhiên, bạn có thể sử dụng chức năng của jQuery để tạo một khuôn khổ của riêng bạn.

Ví dụ: có những dự án được xây dựng dựa trên jQuery được định nghĩa là các khuôn khổ: jQuery Mobile: Một Khung Web Tối ưu hóa Cảm ứng , JavaScriptMVCsammy.js để kể tên một số.

Ngoài ra còn có các thư viện khác được xây dựng trên jQuery, như jQuery UI

Một số trong đó có vẻ giống như ngữ nghĩa khi xác định thư viện là gì so với một khuôn khổ, nhưng những ví dụ đó giúp tôi hiểu rõ hơn.


1

Nếu chúng ta nói về Inversion of control, mà hầu hết mọi người trong chủ đề trên đều nói về thì jQuery là một KHUNG HÌNH.

Nó đã có IOC, ví dụ khi chúng ta viết hàm $ (document) .ready {} ... nó là vùng chứa gọi phương thức này và chúng ta chỉ cần đặt mã của mình bên trong dấu ngoặc nhọn. Chúng tôi không phải là Người gọi phương pháp này và do đó "Sự đảo ngược của Kiểm soát"

Theo cách này, jQuery là một KHUNG HÌNH.


1
Meh, hầu hết các thư viện lớn cung cấp ít nhất một số loại phương thức gọi lại mơ hồ cho một số mục đích. Bạn có thể viết rất nhiều mã jQuery mà không cần dựa vào ready().
Nathan Tuggy

@NathanTuggy Vậy tại sao ngay cả cuộc thảo luận chi tiết về Framework và Lib cũng nói về IOC. Nếu nó ở đó, nó ở đó. Tại sao lại nói về "dựa dẫm" hay "không dựa dẫm".
pinkman

Bởi vì IoC kiểu khung được đặc trưng bởi sự cần thiết của việc sử dụng nó. Không phải là khả năng sử dụng nó, như mong muốn, theo những cách cụ thể, gọi món. Trong một khuôn khổ, bạn không có quyền lựa chọn: kiểm soát bị đảo ngược.
Nathan Tuggy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.