Thư viện đóng cửa của Google cung cấp gì trên jQuery? [đóng cửa]


190

Xem xét

  • nền tảng kinh doanh
  • sự đóng góp cho cộng đồng
  • tiện ích mở rộng có sẵn
  • bộ tính năng mặc định
  • sử dụng đơn giản
  • và độ tin cậy

Tại sao bạn thích cái này hơn cái kia?


1
Tôi nghĩ rằng thật khó để nói lý do tại sao cái này được ưa thích hơn cái kia cho đến khi mọi người thử nghiệm các ứng dụng và xem giới hạn của việc đóng cửa là gì.
James Black

3
Một số so sánh cú pháp ở đây: derekslager.com/blog/posts/2010/06/...
user194743

4
Bài viết này cũng có thể giúp với quyết định. Bài học chính: Đóng cửa là một hệ sinh thái. Nó không giống như jQuery khi bạn chỉ sử dụng nó ở đây và ở đó để giúp truy cập hoặc thao tác DOM dễ dàng hơn. Nếu bạn muốn thực sự sử dụng Đóng cửa, bạn phải cam kết thực sự sử dụng nó.
Dan Abramov

2019 Google đóng cửa cái gì? : D
evilReiko

Câu trả lời:


176

Tôi sẽ cố gắng thêm thông tin của tôi.

Nhiều hơn một lib lib khác

Theo tôi hiểu, Google Clos không chỉ là một thư viện JS khác mà còn là một bộ công cụ cho phép bạn tối ưu hóa mã JS của mình. Làm việc với jQuery cung cấp cho bạn các công cụ tốt và một thư viện gọn nhẹ, nhưng nó không thu nhỏ mã của riêng bạn. Các trình biên dịch Đóng cửa sẽ. Trình kiểm tra đóng cũng có thể hữu ích, vì đôi khi mã được rút gọn có hành vi khác với mã gốc và là một nỗi đau để gỡ lỗi. Nó tích hợp với Fireorms và các bài kiểm tra đơn vị hỗ trợ, cả hai đều là bạn thân nhất của nhà phát triển hiện nay.

Tài liệu

Tôi đoán rằng như bất kỳ thư viện mới nào VS là một thư viện được thiết lập tốt, nó sẽ thiếu hàng tấn tiện ích mở rộng và hướng dẫn mà jQuery có. Tuy nhiên, được thúc đẩy bởi Google nên đảm bảo rằng sự hỗ trợ và độ tin cậy sẽ khá tốt. Các tài liệu hiện tại và hướng dẫn cả hai dường như thực sự tốt, quá.

Đặc trưng

Mặc dù vậy, các tính năng của Clos trông khá tốt và kiến ​​trúc mô đun của nó cũng đầy hứa hẹn. Tôi đoán Google đã sử dụng nội bộ trong một thời gian dài, điều đó có nghĩa là bạn có thể mong đợi tất cả các tính năng cơ bản (và hơn thế nữa) sẽ được triển khai và có thể theo cách rất tối ưu và có thể mở rộng. Họ đang cố gắng trình bày nó dưới dạng STL của JavaScript, vì vậy họ nên đánh bóng nó.

Sau khi xem xét các tính năng kỹ hơn, có vẻ như đây có thể là một bước tiến để phát triển ứng dụng web so với các thư viện hiện có như jQuery. Nó đoán nó có lợi cho sự phát triển nội bộ tại Google, nhưng những thứ như phát hiện trạng thái trực tuyến (xem goog.events.OnlineHandler ), tích hợp dễ dàng các yêu cầu AJAX và hành động JS trong lịch sử trình duyệt (xem goog.History ) hoặc các quân đoàn của các vật dụng tuyệt vời họ cung cấp (xem gói goog.ui ) có thể giúp tất cả chúng ta xây dựng các ứng dụng web tuyệt vời hơn nữa;)!

Nó đi kèm với các tính năng mẫu tích hợp với Java (ai nói là GWT ?), Vì vậy đây cũng có thể là một điểm cộng khác cho Đóng cửa.

Dễ sử dụng

Cuối cùng, nó trông khá đơn giản để sử dụng. Cú pháp có thể dài dòng hơn một chút so với hàm $ jQuery ngắn, nhưng với IDE và tự động hoàn thành, đó không phải là vấn đề thực sự. Hơn nữa, tôi muốn nói rằng chúng ta có thể mong đợi một sự tích hợp tốt trong các IDE như Eclipse, đến từ Google.

EDIT: theo yêu cầu, hãy để tôi nói một vài từ về tài liệu tham khảo GWT. Google Web Toolkit là một thư viện Java cho phép tạo các giao diện web hỗ trợ AJAX và tạo (và tối ưu hóa) mã JavaScript cần thiết. Vì Google Đóng cho phép tạo Mẫu có thể được sử dụng cho cả phía máy khách và máy chủ (sử dụng JavaScript và Java), tôi đoán là sẽ sớm có thể sử dụng chúng cùng nhau (nếu không phải là trường hợp này).


5
Câu trả lời chi tiết và ý nghĩa, cảm ơn bạn. Bạn có thể giải thích ý nghĩa của tham chiếu đến GWT không? Tôi sợ rằng tôi đã không nhận được điều đó.
pestaa

1
Tôi nghĩ bạn cũng nên đề cập đến thư viện mẫu (Soy) trong phần "Hơn cả". Tệp mẫu giống nhau có thể được sử dụng ở cả phía máy chủ (Java) và phía máy khách. Thực hiện tốt IMO. Có nghĩa là chúng ta chỉ có thể gửi JSON trong các truy vấn AJAX thay vì gửi HTML - tiết kiệm băng thông.
Frank Krueger

1
Tôi chỉ phát hiện ra một bài phê bình chống lại đóng cửa, nhưng có lẽ nó chỉ là FUD: sitepoint.com/blogs/2009/11/12/...
nalply

7
Bài phê bình không phải là FUD, và cảm ơn vì liên kết. Bài phê bình tập trung vào cách mã javascript không tối ưu ở mọi nơi. Điều này có thể hợp lệ, nhưng nó bỏ lỡ điểm lớn hơn. Theo tôi hiểu, Đóng cửa nhắm mục tiêu các ứng dụng JS thực sự phức tạp (theo thang điểm của Gmail) và điều đó có một số hậu quả - chẳng hạn như mọi dòng đều tối ưu vì mọi thứ không được viết bởi một lập trình viên thông minh duy nhất. Nhưng ngược lại, nó có thể mở rộng hơn nữa như là một khung công nghệ phần mềm.
Peter S Magnusson

3
@nalpy Theo đề xuất của các bình luận, bài viết này đã không đề cập đến việc thư viện đó ghi lại một MÁY TÍNH (không phải là một công cụ khai thác) có thể tối ưu hóa các vấn đề mã hóa này.
Kiến

30

Trong cái nhìn ngắn gọn về API, tôi thấy sự khác biệt giữa jQuery và Đóng là nổi bật.

jQuery về cơ bản chỉ là một cách đơn giản để thực hiện nhiều hoạt động thường xuyên theo cách đa trình duyệt.

Đóng cửa là một khung rất mới, trong đó họ cung cấp một cách trình duyệt chéo để sử dụng <canvas>thẻ, ví dụ, và họ đã thêm các sự kiện mới.

Vì vậy, đây là thêm vào những gì chúng ta thường làm với javascript, họ đang thực hiện nhiều thao tác mà mọi người muốn làm và đưa chúng vào API.

Ví dụ, họ có một sự kiện để cho biết nếu trạng thái trực tuyến đã thay đổi. Vì vậy, bạn có thể biết nếu hệ thống đang trực tuyến.

Họ có các chức năng javascript sử dụng các công cụ như Google Gears, tiếp tục với thực tế là họ đã mở rộng những gì có thể được thực hiện với Javascript.

Tôi sẽ mất vài ngày để tiêu hóa tất cả các thay đổi, nhưng tôi có thể thấy rằng điều này có thể có tác động lớn đến các ứng dụng web có thể được phát triển.


25

Ưu điểm lớn nhất của Thư viện đóng là được thiết kế cho Trình biên dịch đóng. Điều này mở ra những khả năng hoàn toàn mới để phát triển JavaScript ...

Trình biên dịch có một số tính năng thú vị:

  • Nó biên dịch JavaScript có thể đọc thành JavaScript có thể đọc bằng máy nén - nó có tỷ lệ nén tốt nhất trong chế độ "NÂNG CAO".
  • Tài liệu về mã với Thẻ JSDoc rất quan trọng: trình biên dịch đọc nó và bạn nhận được cảnh báo trong quá trình biên dịch lỗi chính tả trong tài liệu, sử dụng sai @constructor, sử dụng sai một biến , sử dụng sai một trường được chú thích bằng @private và @protected, Vân vân.
  • Nếu bạn viết thư viện JavaScript có thể sử dụng lại, như OpenLayers hoặc Google Maps, bạn chính thức xuất API công khai - và trình biên dịch sẽ tối ưu hóa mã nội bộ của bạn.
  • Các ứng dụng cuối có thể được biên dịch cùng với thư viện - và sau đó các phần không sử dụng của thư viện sẽ bị xóa khỏi mã được sản xuất. Các phụ thuộc được giải quyết tự động bởi trình biên dịch.
  • Trình biên dịch chấp nhận các hằng số để loại bỏ chức năng không mong muốn - điều này chỉ cho phép biên dịch cho trình duyệt cụ thể như Mobile WebKit, chỉ cho một chế độ Quirks hoặc Chế độ nghiêm ngặt, biên dịch mà không hỗ trợ IE6, v.v.
  • Có thể gỡ lỗi với FireBug ngay cả đối với phiên bản đã biên dịch của mã nguồn.
  • Trình biên dịch hỗ trợ tạo các mô-đun có thể tải động, có thể tăng tốc đáng kể việc tải ứng dụng cuối, bởi vì mã cho chức năng nâng cao chỉ có thể được tải khi được yêu cầu.

Để biết chi tiết, hãy xem tại: http://blog.klokantech.com/2010/12/clenses-compiler-for-openlayers-3x.html


20

Chỉnh sửa : hãy xem video youtube này nó có thể trả lời một số câu hỏi về Google Đóng tốt hơn.

Có lẽ các nguồn thông tin tốt nhất về việc đóng cửa google là nhóm thảo luận dự án , wiki, trang tài liệu, bản demo và một cuốn sách chưa hoàn thành của Michael Bolin hiện đã có sẵn từ trang sách safari.

một điều tôi có thể nói ngay - có một đường cong học tập dốc hơn closureso với jQuerynhưng nó có thể có giá trị do sự rộng lớn của thư viện, tổ chức rõ ràng và lợi ích của việc sử dụng nó cùng với trình biên dịch và công cụ tạo khuôn mẫu.

closurethư viện về mặt đó giống như dojohơn jQuery, và một số khái niệm đã được mượn từ dojo, theo Michael Bolin.

trình biên dịch google đóng sử dụng JSDoc hệ thống tài liệu đồng thời (nếu được lập trình viên tạo chính xác) cung cấp tài liệu và cho phép bắt được nhiều lỗi tại thời điểm biên dịch.

trong khi tên hàm dài hơn so với jQuerytên, trình biên dịch thu nhỏ mã (sử dụng các chiến thuật tối ưu hóa khác nhau) và việc kiểm tra kiểu sẽ tiết kiệm đáng kể thời gian gỡ lỗi mã, vì vậy thời gian nhập tên dài hơn có lẽ không phải là vấn đề. Đồng thời tên dài thêm dễ đọc.

thư viện hỗ trợ các trình duyệt chạy ở chế độ quirks để các tập lệnh có thể được nhúng bởi các trang web khác bằng cách sử dụng html "quirky"

thư viện hoạt động với (nhưng không phụ thuộc vào) một hệ thống tạo khuôn mẫu javascript được gọi là soy đơn giản hóa việc điền tài liệu bằng nội dung.

như jQuerygoogle closurecho phép truyền tải cấu trúc dom với các truy vấn dựa trên chuỗi bằng cách sử dụng một thành phần chuyên dụng của thư viện.

closurethư viện dựa vào các không gian tên được phân cách bằng dấu chấm giống như Java- một tính năng tổ chức rất mạnh.

sử dụng các không gian tên như vậy sẽ phát sinh chi phí trong mã không được biên dịch, nhưng trong mã được biên dịch, những thứ đó được thay thế bằng các tên biến ngắn.


1
Tôi đang tìm kiếm một cái gì đó khác và kết thúc ở đây, nhưng tốt để biết like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.Bạn có thể vui lòng liên kết tôi với một số tài liệu liên quan đến nó?
IsmailS

@iSid: Tôi tin rằng anh ấy nói về goog.dom.DomHelper, nhưng cá nhân tôi không thấy hàm truy vấn tương đương với jQuery. @Evgeny: Bạn có thể cho chúng tôi biết thêm chi tiết?
shoutuma

@iSid: Chức năng đó được cung cấp bởi goog.dom.query , không được ghi lại cũng như phần còn lại của không gian tên goog.dom.
bkirkbri

8

Tôi vừa đăng một bài viết khá đầy đủ về Google Đóng để trả lời câu hỏi này trên InsideRIA .

... Quy tắc đóng cửa! ^ _ ^


4
Một so sánh tuyệt vời với jQuery: "[...] jQuery hoạt động rất tốt và tạo ra những điều tuyệt vời có thể mà không cần nỗ lực và nhanh chóng, vì vậy" lời hứa "của Clos không phải là cung cấp các thuật toán tốt hơn mà là thực sự tốt hơn, Cách tổ chức và duy trì để triển khai các ứng dụng JavaScript [...] Mã hóa trong Đóng có nghĩa là suy nghĩ với các nguyên tắc hướng đối tượng trong tâm trí, tạo một số tệp js, mỗi tệp đại diện cho một lớp duy nhất, tổ chức kiến ​​trúc ứng dụng thành các gói và cuối cùng triển khai nó bằng các công cụ được cung cấp , có được một tệp JavaScript duy nhất, được nén và an toàn [...] "
Alex

7

Có thể tôi không nhận được jQuery, nhưng tôi chưa thấy bộ sưu tập widget UI thực sự ở đó (có plugin, vâng, nhưng bạn không bao giờ biết chúng được kiểm tra tốt như thế nào và thường không có người chiến thắng rõ ràng và / hoặc plugin thiếu tài liệu).

Đóng cửa, trong số những thứ khác, một bộ sưu tập vật dụng (xem tab trình diễn), bao gồm, nói, các nút không tưởng tượng được sử dụng trong gmail.

Tổng quát hơn, nó có nhiều chức năng được triển khai như một phần của bản phát hành. Nó có thể không phải là một vấn đề lớn, nhưng tôi cảm thấy khó chịu với biển plugin jQuery khi tôi đang tìm kiếm thứ gì đó đơn giản như mô-đun lịch sử ajax hoặc tự động hoàn thành.

Nhìn chung, đó là một thư viện khổng lồ + bộ công cụ và tôi sẽ làm quen với nó chỉ để biết những gì có sẵn.


2
jqueryui.com là bộ sưu tập widget ui chính thức
Jourkey

1
vâng, đánh giá từ trang web này có 6 widget: Hộp thoại Accordion Datepicker Dialbar Slider Tab
Nickolay

3
Tôi đã sử dụng jQueryUI và tôi nghĩ rằng nó rất yếu. Nó hầu như không được phát triển. Lần cuối cùng một widget mới được thêm vào là khi nào. Nó có thể là bộ sưu tập widget chính thức, nhưng bất cứ ai đang tìm kiếm một widget để sử dụng với jQuery thì tốt hơn hết là chỉ cần tìm kiếm các widget jQuery của bên thứ ba.
Nosredna

2
jQueryUI không chỉ là một bộ widget javascript, nó còn có khung css tuyệt vời. Nó là một công cụ tuyệt vời cho tôi trong việc tạo kiểu trang CRUD / admin. Ngoài ra, nhiều trong số các "Widgets" đóng cửa đó là 1-2 lớp lót trong jQuery, thậm chí không đáng để viết một plugin cho.
Jace Rhea

2
Sự hấp dẫn của JQuery không phải là các widget được tạo sẵn. Nó đang tạo các vật dụng tùy chỉnh của riêng bạn trong thời gian kỷ lục. Tôi hiếm khi chạm vào các trình cắm, bao gồm cả giao diện người dùng.
Erik Reppen

1

Tôi đánh giá cao hầu hết các đóng góp của Google cho cộng đồng nguồn mở và tôi chắc chắn rằng nó có một số thứ hay ho nhưng nhìn chung tôi thấy Đóng cửa cồng kềnh, quá tải và không phù hợp. Nếu bạn phải biến mọi thứ thành Java, tôi cho rằng nó hoàn toàn khó hiểu.

Biên tập:

Đủ công bằng. Tôi đã không thực sự so sánh. Đóng cửa giống như một nhà kho khổng lồ với mọi công cụ có thể bạn có thể muốn đặt ... ở đâu đó. Sắp xếp giống như .NET hoặc một thư viện Java đồ sộ. Một khi bạn tìm thấy những gì bạn cần, bạn có thể tìm thấy những thứ rất cụ thể làm những công việc đặc biệt cao. Và sau đó để sản xuất, bạn có thể loại bỏ tất cả các cruft.

JQuery, mặt khác, là một tuốc nơ vít âm thanh dễ dàng sửa đổi.


1
Tôi muốn tìm hiểu thêm về phiên bản Đóng cửa Java. Bạn đã có một liên kết cho điều này. Cảm ơn
Yazz.com

Tra cứu 'thẻ trớ trêu.' Bạn sẽ tìm thấy câu trả lời ở đó.
Erik Reppen

0

Thư viện đóng cửa của Google cho phép bạn biên dịch và tối ưu hóa JavaScript của mình. Nó không phải là một thư viện như jQuery. jQuery là một cái gì đó cung cấp cho bạn các hàm cho phép bạn viết javascript của riêng bạn nhanh hơn.

Google Clos sẽ giúp bạn giảm thiểu mã javascript để cho phép phân phối nhanh hơn qua Internet.

Tóm lại, Google Clos là một công cụ trong khi jQuery là một thư viện tương tự như Prototype.


6
Điều đó không chính xác. Google Closures cũng đi kèm với thư viện riêng tương tự jQuery và cung cấp các chức năng và tiện ích để viết mã của riêng bạn: code.google.com/clenses/l
Library / docs / tutorial.html

2
À được rồi! Cảm ơn vì đã sửa tôi!
Tereno

2
+1 Để cố gắng trở nên hữu ích :)
Andomar
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.