Google Closure Library มีอะไรมากกว่า jQuery [ปิด]


190

พิจารณา

  • พื้นหลังธุรกิจ
  • การสนับสนุนจากชุมชน
  • ส่วนขยายที่มีอยู่
  • ชุดคุณสมบัติเริ่มต้น
  • ความเรียบง่ายในการใช้งาน
  • และความน่าเชื่อถือ

ทำไมคุณถึงชอบมากกว่ากัน


1
ฉันคิดว่ามันยากที่จะบอกว่าทำไมคนหนึ่งถึงชอบมากกว่าคนอื่น ๆ จนกว่าผู้คนจะได้ทดลองกับแอปพลิเคชันและดูว่าข้อ จำกัด ของการปิดคืออะไร
James Black

3
การเปรียบเทียบไวยากรณ์บางอย่างที่นี่: derekslager.com/blog/posts/2010/06/…
user194743

4
บทความนี้อาจช่วยในการตัดสินใจ บทเรียนสำคัญ: “ การปิดเป็นระบบนิเวศ มันไม่เหมือนกับ jQuery ที่คุณเพิ่งใช้ที่นี่และที่นั่นเพื่อทำให้การเข้าถึงหรือจัดการ DOM ง่ายขึ้น ถ้าคุณต้องการใช้การปิดอย่างแท้จริงคุณต้องให้คำมั่นที่จะใช้มันอย่างแท้จริง”
Dan Abramov

2019การปิดของ Google คืออะไร : D
evilReiko

คำตอบ:


176

ฉันจะพยายามเพิ่มข้อมูลของฉัน

มากกว่า JS lib อื่น

ดังที่ฉันเข้าใจแล้ว Google ทำการปิดไม่ได้เป็นเพียงไลบรารี JS อื่น แต่เป็นชุดเครื่องมือที่จะช่วยให้คุณสามารถปรับรหัส JS ของคุณได้อย่างเหมาะสม การทำงานกับ jQuery ให้เครื่องมือที่ดีและไลบรารี่ที่มีน้ำหนักเบา แต่ก็ไม่ได้ทำให้โค้ดของคุณเล็กลง ปิดคอมไพเลอร์ประสงค์ สารวัตรปิดนอกจากนี้ยังอาจจะมีประโยชน์เช่นรหัสบางครั้ง minified มีพฤติกรรมที่แตกต่างกว่าเดิมและเป็นความเจ็บปวดที่จะแก้ปัญหา มันทำงานร่วมกับFirebugและสนับสนุนการทดสอบหน่วยซึ่งเป็นเพื่อนที่ดีที่สุดของนักพัฒนาในปัจจุบัน

เอกสาร

ฉันเดาว่าไลบรารีใหม่ VS ที่สร้างมาอย่างดีนั้นจะขาดความพร้อมของส่วนขยายและการสอนที่ jQuery มีอยู่มากมาย อย่างไรก็ตามการถูกผลักดันโดย Google ควรตรวจสอบให้แน่ใจว่าการสนับสนุนและความน่าเชื่อถือนั้นดีทั้งคู่ เอกสารและบทแนะนำปัจจุบันทั้งสองก็ดูดีมากเช่นกัน

คุณสมบัติ

ถึงแม้ว่าคุณสมบัติของการปิดจะดูดีและสถาปัตยกรรมแบบแยกส่วนก็มีแนวโน้มเช่นกัน ฉันเดาว่า Google ใช้งานภายในเป็นเวลานานซึ่งหมายความว่าคุณสามารถคาดหวังว่าจะสามารถใช้งานคุณสมบัติพื้นฐานทั้งหมด (และอื่น ๆ ) และอาจเป็นวิธีที่ปรับให้เหมาะสมและปรับขนาดได้ พวกเขาพยายามนำเสนอเป็น STL ของ JavaScript ดังนั้นควรขัดมัน

หลังจากดูที่ฟีเจอร์อย่างละเอียดยิ่งขึ้นดูเหมือนว่านี่อาจเป็นขั้นตอนต่อไปสำหรับการพัฒนาเว็บแอปพลิเคชันเมื่อเทียบกับไลบรารีที่มีอยู่ในรูปแบบ jQuery มันเดาว่าเป็นประโยชน์ต่อการพัฒนาภายในของ Google แต่สิ่งต่าง ๆ เช่นการตรวจจับสถานะออนไลน์ (ดูgoog.eventsOnlineHandler ) การรวมคำขอ AJAX และการกระทำ JS ในประวัติเบราว์เซอร์ได้ง่าย (ดูgoog.History ) หรือเครื่องมือมากมาย พวกเขาให้ (ดูแพ็คเกจ goog.ui ) อาจช่วยเราทุกคนในการสร้าง webapps ที่ยอดเยี่ยมยิ่งขึ้น;)!

มันมาพร้อมกับคุณสมบัติแม่แบบที่ทำงานร่วมกับ Java (ใครบอกว่าGWT ?) ดังนั้นนี่อาจเป็นอีกข้อดีหนึ่งของการปิด

สะดวกในการใช้

ในที่สุดมันก็ดูใช้งานง่าย ไวยากรณ์อาจเป็น verbose มากกว่าฟังก์ชั่นการ $ jQuery สั้น ๆ แต่ด้วย IDE และการทำให้สมบูรณ์อัตโนมัติมันไม่ใช่ปัญหาจริง ยิ่งกว่านั้นฉันบอกว่าเราสามารถคาดหวังว่าการรวมที่ดีใน IDEs เช่น Eclipse มาจาก Google

แก้ไข: ตามที่ขอฉันขอพูดสองสามคำเกี่ยวกับการอ้างอิง GWT Google Web Toolkit เป็นห้องสมุด Java ที่อนุญาตให้สร้างส่วนต่อประสานกับเว็บที่เปิดใช้งาน AJAX และสร้างรหัส JavaScript ที่จำเป็น (และปรับให้เหมาะสม) เนื่องจาก Google Closure อนุญาตให้สร้างเทมเพลตที่สามารถใช้ได้ทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ (โดยใช้ JavaScript และ Java) ฉันเดาว่ามันจะเป็นไปได้ที่จะใช้พวกเขาร่วมกันได้ในไม่ช้า (ถ้าไม่ใช่กรณีนี้)


5
คำตอบอย่างละเอียดและมีความหมายขอบคุณ คุณช่วยอธิบายการอ้างอิงถึง GWT ได้ไหม? ฉันเกรงว่าฉันไม่เข้าใจ
pestaa

1
ฉันคิดว่าคุณควรพูดถึงเทมเพลตไลบรารี (ซอย) ในส่วน "มากกว่า" ของคุณ ไฟล์เทมเพลตเดียวกันสามารถใช้ได้ทั้งฝั่งเซิร์ฟเวอร์ (Java) และฝั่งไคลเอ็นต์ การใช้งานที่ดีจริงๆ IMO หมายความว่าเราสามารถส่ง JSON ลงในแบบสอบถาม AJAX แทนที่จะส่ง HTML - ประหยัดแบนด์วิดท์
Frank Krueger

1
ฉันเพิ่งค้นพบคำวิจารณ์ต่อการปิด แต่บางทีมันอาจเป็นเพียงแค่ FUD: sitepoint.com/blogs/2009/11/12/…
nalply

7
คำติชมไม่ใช่ FUD และขอบคุณสำหรับลิงค์ คำวิจารณ์นั้นมุ่งเน้นไปที่วิธีการที่รหัสจาวาสคริปต์นั้นไม่เหมาะสมในทุกที่ สิ่งนี้อาจถูกต้อง แต่พลาดจุดที่ใหญ่กว่า ตามที่ฉันเข้าใจแล้วการปิดเป้าหมายมีความซับซ้อนจริง ๆ แอปพลิเคชั่น JS (ตามขนาดของ GMail) และนั่นมีผลกระทบบางอย่างเช่นไม่ใช่ทุกบรรทัดที่เหมาะสมเนื่องจากทุกอย่างไม่ได้ถูกเขียนด้วย coder ที่ยอดเยี่ยม แต่ในทางกลับกันมันอาจขยายเพิ่มขึ้นเป็นกรอบวิศวกรรมซอฟต์แวร์
Peter S Magnusson

3
@nalpy ตามที่แนะนำโดยความคิดเห็นบทความนี้ไม่ได้กล่าวถึงว่าห้องสมุดมี gots คอมไพเลอร์ (ไม่ใช่ minifier) ​​ซึ่งอาจเพิ่มประสิทธิภาพปัญหาการเข้ารหัสเหล่านี้
Ant

30

ในช่วงสั้น ๆ ของฉันที่ API ฉันพบความแตกต่างระหว่าง jQuery และการปิดจะโดดเด่น

jQuery นั้นเป็นเพียงวิธีที่ง่ายขึ้นในการดำเนินการหลายอย่างเป็นประจำในแบบข้ามเบราว์เซอร์

การปิดเป็นกรอบงานที่ใหม่มากซึ่งเป็นวิธีการข้ามเบราว์เซอร์ในการใช้<canvas>แท็กตัวอย่างเช่นและพวกเขาได้เพิ่มกิจกรรมใหม่

ดังนั้นนี่คือการเพิ่มลงในสิ่งที่เรามักจะทำกับจาวาสคริปต์พวกเขากำลังดำเนินการหลายอย่างที่ผู้คนต้องการทำและวางลงใน API

ตัวอย่างเช่นพวกเขามีเหตุการณ์ที่จะบอกว่าสถานะออนไลน์มีการเปลี่ยนแปลง ดังนั้นคุณสามารถบอกได้ว่าระบบออนไลน์

พวกเขามีฟังก์ชั่นจาวาสคริปต์ที่ใช้เครื่องมือเช่น Google Gears ซึ่งต่อเนื่องกับข้อเท็จจริงที่ว่าพวกเขาได้ขยายสิ่งที่สามารถทำได้ด้วย Javascript

ฉันใช้เวลาสองสามวันในการย่อยการเปลี่ยนแปลงทั้งหมด แต่ฉันเห็นได้ว่านี่อาจส่งผลกระทบอย่างใหญ่หลวงต่อเว็บแอปพลิเคชันที่สามารถพัฒนาได้


25

ข้อได้เปรียบที่ใหญ่ที่สุดของห้องสมุดปิดคือที่ออกแบบมาสำหรับการปิดคอมไพเลอร์ นี่เป็นการเปิดโอกาสใหม่สำหรับการพัฒนา JavaScript ...

คอมไพเลอร์มีคุณสมบัติเจ๋ง ๆ มากมาย:

  • มันรวบรวม JavaScript ที่อ่านได้เป็น JavaScript ที่สามารถอ่านได้เครื่องที่บีบอัด - มันมีอัตราส่วนการบีบอัดที่ดีที่สุดในโหมด "ADVANCED"
  • เอกสารประกอบของรหัสที่มีแท็ก JSDoc มีความสำคัญ: คอมไพเลอร์อ่านมันและคุณได้รับคำเตือนในระหว่างการรวบรวมสำหรับการพิมพ์ผิดในเอกสารประกอบการใช้ที่ไม่ถูกต้องของ @constructor ชนิดของตัวแปรที่ไม่ถูกต้อง เป็นต้น
  • หากคุณเขียนไลบรารี JavaScript ที่ใช้ซ้ำได้เช่น OpenLayers หรือ Google Maps คุณจะส่งออก API สาธารณะอย่างเป็นทางการและคอมไพเลอร์จะปรับรหัสภายในให้เหมาะสม
  • แอปพลิเคชันสิ้นสุดสามารถรวบรวมพร้อมกับไลบรารี - จากนั้นส่วนที่ไม่ได้ใช้ของไลบรารีจะถูกลบออกจากรหัสที่ผลิต คอมไพเลอร์แก้ไขได้โดยอัตโนมัติ
  • คอมไพเลอร์ยอมรับค่าคงที่เพื่อลบฟังก์ชันการทำงานที่ไม่พึงประสงค์ - อนุญาตให้รวบรวมเฉพาะเบราว์เซอร์เช่น Mobile WebKit สำหรับโหมด Quirks หรือ Strict โหมดเดียวการคอมไพล์โดยไม่รองรับ IE6 เป็นต้น
  • การดีบักด้วย FireBug เป็นไปได้แม้ในเวอร์ชั่นที่คอมไพล์ของซอร์สโค้ด
  • คอมไพเลอร์รองรับการสร้างโมดูลที่โหลดได้แบบไดนามิกซึ่งสามารถเพิ่มความเร็วในการโหลดแอพพลิเคชั่นได้อย่างมีนัยสำคัญเนื่องจากโค้ดสำหรับการทำงานขั้นสูงสามารถโหลดได้เมื่อจำเป็นเท่านั้น

สำหรับรายละเอียดดูได้ที่: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html


20

แก้ไข : ดูวิดีโอ youtube นี้ซึ่งอาจตอบคำถามบางอย่างเกี่ยวกับ Google Closure ได้ดียิ่งขึ้น

น่าจะเป็นแหล่งข้อมูลที่ดีที่สุดในการปิด google คือกลุ่มสนทนาโครงการ, หน้า wiki, เอกสาร doc, การสาธิตและหนังสือที่ยังไม่เสร็จโดย Michael Bolinซึ่งขณะนี้มีให้บริการจากไซต์หนังสือซาฟารี

สิ่งหนึ่งที่ฉันสามารถบอกได้ทันที - มีเส้นโค้งการเรียนรู้ที่ชันกว่าสำหรับclosureVS jQueryแต่มันอาจจะคุ้มค่ามากเพราะห้องสมุดมีความกว้างใหญ่การจัดระเบียบที่ชัดเจนและประโยชน์ของการใช้มันพร้อมกับคอมไพเลอร์และเครื่องมือสร้างเทมเปิ

closureห้องสมุดในแง่นั้นเป็นอะไรที่dojoมากกว่าjQueryและแนวคิดบางอย่างถูกยืมมาจากdojoMichael Bolin

คอมไพเลอร์ปิดของ Google ใช้JSDocระบบเอกสารซึ่งพร้อมกัน (หากสร้างโดยโปรแกรมเมอร์อย่างถูกต้อง) ให้เอกสารและช่วยให้จับข้อผิดพลาดมากมายในเวลารวบรวม

ในขณะที่ชื่อฟังก์ชั่นนั้นละเอียดกว่าjQueryคอมไพเลอร์จะย่อขนาดโค้ด (โดยใช้กลยุทธ์การเพิ่มประสิทธิภาพที่หลากหลาย) และการตรวจสอบประเภทจะช่วยประหยัดเวลาในการดีบักรหัสเป็นจำนวนมากดังนั้นการพิมพ์เวลาในชื่อที่ยาวขึ้นอาจไม่เป็นปัญหา ในเวลาเดียวกันชื่ออีกต่อไปเพิ่มความสามารถในการอ่าน

ไลบรารีรองรับเบราว์เซอร์ที่ทำงานในโหมด quirks เพื่อให้สคริปต์สามารถฝังโดยเว็บไซต์อื่น ๆ โดยใช้ "quirky" html

library ทำงานร่วมกับ (แต่ไม่ได้ขึ้นอยู่กับ) ระบบการสร้างเทมเพลต javascript soyที่ช่วยให้การกรอกเอกสารด้วยเนื้อหาง่ายขึ้น

like jQuerygoogle closureอนุญาตให้ใช้โครงสร้างการสำรวจภายในด้วยข้อความค้นหาแบบสตริงโดยใช้ส่วนประกอบเฉพาะของห้องสมุด

closureไลบรารี่ขึ้นอยู่กับเนมสเปซที่มีการคั่นด้วยจุดมากกว่าJavaซึ่งเป็นคุณลักษณะที่แข็งแกร่งขององค์กร

การใช้เนมสเปซดังกล่าวจะมีค่าใช้จ่ายในโค้ดที่ไม่ได้คอมไพล์ แต่ในโค้ดที่คอมไพล์แล้วสิ่งเหล่านั้นจะถูกแทนที่ด้วยชื่อตัวแปรแบบสั้น


1
ฉันกำลังมองหาอย่างอื่นและลงเอยด้วยการมาที่นี่ แต่สิ่งที่ควรรู้like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.คุณช่วยลิงค์ฉันไปที่เอกสารที่เกี่ยวข้องได้ไหม
IsmailS

@iSid: ฉันเชื่อว่าเขาพูดถึงgoog.dom.DomHelperแต่ฉันเองไม่เห็นฟังก์ชันการสืบค้นเทียบเท่ากับ jQuery @Evgeny: คุณให้รายละเอียดเพิ่มเติมกับเราได้ไหม
exhuma

@iSid: การทำงานนั้นมีให้โดยgoog.dom.queryซึ่งไม่ได้รับการบันทึกรวมถึงส่วนที่เหลือของเนมสเปซ goog.dom
bkirkbri

8

ฉันเพียงแค่โพสต์บทความหมดจดสวยเกี่ยวกับ Google ปิดที่ตอบคำถามนี้ในinsideRIA

... ปิดกฏ! ^ _ ^


4
เปรียบเทียบกับ jQuery: "[... ] jQuery ทำงานได้ดีมากและทำสิ่งที่ดีที่สุดโดยไม่ต้องใช้ความพยายามและรวดเร็วดังนั้น" สัญญา "ของการปิดไม่ให้อัลกอริทึมที่ดีกว่า แต่ดีกว่าจริงๆวิธีการจัดระเบียบและการบำรุงรักษาของการปรับใช้งานแอปพลิเคชัน JavaScript [... ] การเข้ารหัสในการปิดหมายถึงการคิดด้วยหลักการเชิงวัตถุในใจสร้างไฟล์ js หลายคนแต่ละคนเป็นตัวแทนของชั้นเดียวจัดระเบียบสถาปัตยกรรมโปรแกรมลงในแพคเกจ รับไฟล์ JavaScript เดียวที่ถูกบีบอัดและปลอดภัย [... ] "
อเล็กซ์

7

บางทีฉันอาจไม่ได้รับ jQuery แต่ฉันไม่เห็นคอลเล็กชันวิดเจ็ต UI จริงที่นั่น (มีปลั๊กอินใช่ แต่คุณไม่เคยรู้เลยว่ามันผ่านการทดสอบอย่างดีและบ่อยครั้งที่ไม่มีผู้ชนะที่ชัดเจนและ / หรือปลั๊กอินขาด เอกสาร)

การปิดมีชุดเครื่องมือ (ดูที่แท็บการสาธิต) รวมถึงปุ่มปิดที่ใช้งานไม่ได้ใน gmail

โดยทั่วไปแล้วมันมีฟังก์ชั่นการใช้งานมากขึ้นซึ่งเป็นส่วนหนึ่งของการเปิดตัว มันอาจจะไม่ใช่เรื่องใหญ่ แต่ฉันก็รู้สึกรำคาญกับปลั๊กอินของ jQuery เมื่อฉันกำลังมองหาบางอย่างที่ง่ายเหมือนโมดูลประวัติ ajax หรือเติมข้อความอัตโนมัติ

โดยรวมแล้วมันเป็นห้องสมุดขนาดใหญ่ + ชุดเครื่องมือและฉันจะทำความคุ้นเคยกับมันเพื่อรู้ว่ามีอะไรให้บ้าง


2
jqueryui.com อย่างเป็นทางการของคอลเลกชันวิดเจ็ต UI
Jourkey

1
ใช่ดีตัดสินจากเว็บไซต์มันมี 6 เครื่องมือ: Accordion Datepicker โต้ตอบ Progressbar Slider Tabs Tabs
Nickolay

3
ฉันใช้ jQueryUI และฉันคิดว่ามันอ่อนแอมาก ดูเหมือนว่าแทบจะไม่ได้อยู่ระหว่างการพัฒนา เมื่อใดเป็นครั้งสุดท้ายที่มีการเพิ่มวิดเจ็ตใหม่ อาจเป็นคอลเลกชันวิดเจ็ตอย่างเป็นทางการ แต่ทุกคนที่กำลังมองหาวิดเจ็ตที่จะใช้กับ jQuery ดีกว่าเพียงแค่ googling สำหรับวิดเจ็ต jQuery บุคคลที่สาม
Nosredna

2
jQueryUI ไม่ได้เป็นเพียงชุดของ javascript widgets แต่ก็มี css framework ที่ยอดเยี่ยมเช่นกัน มันเป็นเครื่องมือที่ยอดเยี่ยมสำหรับฉันในการออกแบบหน้า CRUD / admin บวกกับการปิด "วิดเจ็ต" จำนวนมากคือ 1-2 liners ใน jQuery ซึ่งไม่คุ้มที่จะเขียนปลั๊กอิน
Jace Rhea

2
การอุทธรณ์ของ JQuery ไม่ใช่เครื่องมือที่สร้างไว้ล่วงหน้า มันกำลังสร้างวิดเจ็ตที่กำหนดเองของคุณเองในเวลาที่บันทึก ฉันไม่ค่อยได้สัมผัสปลั๊กอินรวมถึง UI
Erik Reppen

1

ฉันซาบซึ้งกับการมีส่วนร่วมของ Google ในชุมชนโอเพ่นซอร์สและฉันแน่ใจว่ามันมีอะไรเจ๋ง ๆ หากคุณต้องเปลี่ยนทุกอย่างให้เป็น Java ฉันคิดว่ามันช่างสุดยอดจริงๆ

แก้ไข:

ยุติธรรมพอสมควร ฉันไม่ได้เปรียบเทียบจริงๆ การปิดเป็นเหมือนโกดังขนาดใหญ่ที่มีเครื่องมือที่เป็นไปได้ทุกอย่างที่คุณต้องการตั้งอยู่ที่ไหนสักแห่ง เรียงจากชอบ. NET หรือห้องสมุด Java ขนาดใหญ่ เมื่อคุณพบสิ่งที่คุณต้องการคุณสามารถค้นหาสิ่งที่มีความเฉพาะเจาะจงสูงซึ่งทำงานเฉพาะอย่างสูง และสำหรับการผลิตคุณสามารถลบ cruft ทั้งหมดได้

ในทางตรงกันข้าม JQuery เป็นไขควงโซนิคที่ดัดแปลงได้ง่ายกว่า


1
ฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการปิดเวอร์ชัน Java คุณมีลิงค์สำหรับสิ่งนี้หรือไม่ ขอบคุณ
Yazz.com

ค้นหา 'แท็กประชด' คุณจะพบคำตอบที่นั่น
Erik Reppen

0

Google Closure Library ช่วยให้คุณสามารถรวบรวมและเพิ่มประสิทธิภาพ JavaScript ของคุณ ไม่ใช่ห้องสมุดอย่าง jQuery jQuery เป็นสิ่งที่ให้ฟังก์ชั่นที่ช่วยให้คุณสามารถเขียนจาวาสคริปต์ของคุณได้เร็วขึ้น

Google Closure จะช่วยให้คุณสร้างรหัสจาวาสคริปต์ของคุณเองให้น้อยที่สุดเพื่อให้สามารถส่งได้เร็วขึ้นทางอินเทอร์เน็ต

เรื่องย่อสั้น ๆ Google Closure เป็นเครื่องมือในขณะที่ jQuery เป็นห้องสมุดที่คล้ายกับ Prototype


6
นั่นไม่จริงอย่างแน่นอน Google Closures ยังมาพร้อมกับห้องสมุดของตัวเองที่คล้ายกับ jQuery และมีฟังก์ชั่นและยูทิลิตี้ในการเขียนรหัสของคุณเอง: code.google.com/closure/library/docs/tutorial.html
Wookai

2
อาโอเค! ขอบคุณสำหรับการแก้ไขฉัน!
Tereno

2
+1 สำหรับการพยายามให้เป็นประโยชน์ :)
Andomar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.