ข้อดีของการใช้จาวาสคริปต์แท้ผ่าน JQuery


86

อะไรคือข้อดีของการใช้ Javascript อย่างเดียวเมื่อเทียบกับการใช้ JQuery เท่านั้น?

ฉันมีประสบการณ์ จำกัด เกี่ยวกับการเข้ารหัส JavaScript และ JQuery ฉันได้เพิ่มบิตและตัวอย่างของแต่ละหน้าไปยังหน้า HTML แต่ฉันส่วนใหญ่เขียนสิ่งฝั่งเซิร์ฟเวอร์ในภาษาอื่น ๆ ฉันสังเกตว่าในขณะที่คุณสามารถทำสิ่งเดียวกันในทางทฤษฎีโดยใช้วิธีใดวิธีหนึ่งจากสองวิธี (และแน่นอนว่าคุณสามารถผสม 'em up ในโครงการเดียวกัน) ดูเหมือนว่ามีแนวโน้มที่จะเริ่มใช้ JQuery ตั้งแต่ต้น ไม่ว่าโครงการนั้นต้องการอะไร

ดังนั้นฉันเพียงแค่สงสัยว่ามีประโยชน์ตรงเวลาที่จะไม่ใช้ JQuery เท่านั้น แต่แทนที่จะใช้ JavaScript เก่าธรรมดา?

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


ตามความคิดเห็นของ scrwtp ฉันไม่ได้อ้างถึงเฉพาะในส่วนการจัดการ DOM คำถามของฉันค่อนข้าง: JQuery เป็นห้องสมุด สำหรับ Javascript สิ่งที่ฉันแปลกเกี่ยวกับห้องสมุดนี้เมื่อเทียบกับห้องสมุดอื่น ๆ สำหรับภาษาอื่นคือในกรณีของ JQyery ดูเหมือนว่าจะได้รับการออกแบบให้สามารถใช้งานได้เฉพาะและไม่จำเป็นต้องสัมผัส Javascript โดยตรง ตรงข้ามกับสมมติว่า Hibernate และ SQL ซึ่งแม้ว่าไลบรารี่ (หรือเฟรมเวิร์กในกรณีนี้ แต่ฉันคิดว่าการเปรียบเทียบยังคงใช้อยู่) จะจัดการกับแง่มุมมากมายคุณยังคงใช้ SQL เมื่อใช้งาน อย่างน้อยก็ในบางกรณี อย่างไรก็ตามในกรณีของ JQuery & Javascript คุณสามารถทำสิ่งใดก็ได้ที่คุณทำกับ Javascript โดยใช้ JQuery เท่านั้น (หรืออย่างน้อยก็เป็นแบบที่ฉันเห็น)


ตามความคิดเห็นของ Stargazer712: ใช่ฉันเห็นด้วยกับคุณคำถามที่นี่คือในขณะที่คุณวางไว้ "เพียงไม่กี่วิธีที่คุณจะใช้จาวาสคริปต์" นั่นคือสิ่งที่ฉันกำลังเจริญรุ่งเรืองที่จะถามจริง ๆ แต่ฉันได้ทำสูตรที่ไม่ดีบางอย่าง นี่คือการเปรียบเทียบอื่น: ภาษา Spring Expression. มันเป็นห้องสมุด Java คุณไม่สามารถใช้งานได้หากไม่มี Java มันขึ้นอยู่กับ Java และใช้ทุกอย่างที่คุณยังคงได้รับจากการใช้ Java แต่ในทางปฏิบัติสิ่งที่คุณทำได้คือเพิ่มไลบรารีนี้ลงในโปรเจ็กต์ Java จากนั้นเขียนโค้ดทั้งหมดของคุณโดยใช้ภาษาการแสดงออกของ Spring EL ซึ่งทำให้โค้ดของคุณไม่เหมือนกับ Java เลยอย่างมีประสิทธิภาพและมันก็เป็นกระบวนทัศน์ที่เปลี่ยนไป การบังคับใช้ประเภทที่รัดกุมเมื่อใช้สิ่งนี้) ในขณะที่ฉันเข้าใจว่า JQuery เป็นเพียงไลบรารี JS สำหรับฉันดูเหมือนว่าในทางปฏิบัติแล้วจะมีผลเช่นเดียวกับ Spring EL ที่มีกับ Java นั่นคือคุณสามารถใช้ API ของโครงการได้ตลอดและหลีกเลี่ยง API ของ JavaScript และฉันก็สงสัยว่าเป็นสิ่งที่ดีที่จะทำสิ่งที่อาจเป็นข้อผิดพลาด ฯลฯ

(และใช่หลังจากอ่านคำตอบของทุกคนฉันเข้าใจว่า:

คำถามของฉันค่อนข้างตรงไปตรงมา

ข แม้ว่าคำถามจะถูกต้องสมบูรณ์คำตอบนั้นจะค่อนข้างมาก "ไม่คุณไม่สามารถใช้ JQuery เพียงอย่างเดียวตลอดเวลา)


25
ไม่ถูกต้องที่จะพูดว่า "ใช้ JQuery เท่านั้น" _ JQuery เป็นห้องสมุด JavaScript
superM

4
ไม่มีในหรือในขณะที่ลูปไม่มีตัวแปรไม่มีฟังก์ชั่น? ทั้งหมดนั้นคือ JavaScript
superM

2
โดย 'ธรรมดาเก่า JavaScript' คุณน่าจะหมายถึง JavaScript DOM API คุณอาจต้องการตรวจสอบและแก้ไขคำถามเพื่อหลีกเลี่ยงความสับสน
scrwtp

4
การทำงานร่วมกันข้ามเบราว์เซอร์ไม่สมเหตุสมผลเพียงพอหรือไม่
Simon Whitehead

10
"ดูเหมือนว่ามัน (jquery) ถูกออกแบบมาเพื่อให้สามารถใช้งานได้เฉพาะและไม่จำเป็นต้องสัมผัส Javascript โดยตรง" นั่นเป็นเพียงความจริงที่ไม่ถูกต้อง jQuery เป็นเพียงชุดของฟังก์ชั่น JavaScript (แม้ว่าจะมีชื่อแปลก ๆ เช่น "$") หนึ่งในส่วนสำคัญของความเข้าใจ jQuery คือการทำให้เกิดความเข้าใจนี้ ฟังก์ชั่นเสริม JUST มันที่จัดการการจัดการ DOM และการวนซ้ำ
เกรแฮม

คำตอบ:


113

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

ข้อได้เปรียบหลักในการเพิ่ม jQuery ในแถบเครื่องมือของคุณคือ:

  • ความเข้ากันได้ของเบราว์เซอร์ - การทำบางอย่างเช่น .attr () นั้นง่ายกว่าตัวเลือกอื่น ๆ และจะไม่ทำลายในเบราว์เซอร์
  • การทำให้เข้าใจง่ายของการดำเนินการที่ซับซ้อน - หากคุณต้องการดูวิธีการ XHR ที่เข้ากันได้ดีกับเบราว์เซอร์รุ่นที่เขียนได้ดีลองดูที่แหล่งที่มาสำหรับ $ .ajax - สำหรับวิธีนี้เพียงอย่างเดียว
  • การเลือก DOM - สิ่งง่าย ๆ เช่นเหตุการณ์ที่มีผลผูกพัน & การเลือกองค์ประกอบ DOM อาจซับซ้อนและแตกต่างกันไปตามแต่ละเบราว์เซอร์ หากไม่มีความรู้จำนวนมากพวกเขาสามารถเขียนได้ง่ายไม่ดีและทำให้หน้าของคุณช้าลง
  • การเข้าถึงคุณสมบัติในอนาคต - .indexOf และ. ผูกเป็น javascript ดั้งเดิม แต่ยังไม่รองรับเบราว์เซอร์จำนวนมาก อย่างไรก็ตามการใช้ jQuery เวอร์ชันของวิธีการเหล่านี้จะช่วยให้คุณรองรับข้ามเบราว์เซอร์ได้

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

  • คุณภาพของรหัส - jQuery มีชุมชนขนาดใหญ่และมีการเรียนรู้ที่ต่ำ นี่เป็นพายุที่สมบูรณ์แบบสำหรับปลั๊กอินโอเพนซอร์สที่เขียนไม่ดีจำนวนมาก
  • inefficiency - jQuery ง่ายต่อการเขียนอย่างไม่มีประสิทธิภาพ ตัวอย่างเช่นการใช้ jQuery แต่ละรายการแทนที่จะเป็นลูปนั้นไม่จำเป็นและอาจส่งผลกระทบต่อประสิทธิภาพในบางกรณี ข้อมูลที่ดีมากมายเกี่ยวกับสิ่งนี้ที่JSPerf
  • bloat - jQuery เป็นห้องสมุดขนาดใหญ่ บ่อยครั้งที่คุณจะใช้ฟีเจอร์ย่อย ๆ ของมันแล้วคว้าไลบรารี่ทั้งหมด มีทางเลือกที่ยอดเยี่ยมที่จะให้ฟีเจอร์ย่อยเช่น zepto.js และ underscore.js ขึ้นอยู่กับสถานการณ์ของคุณคุณสามารถบันทึกไบต์จำนวนหนึ่งโดยเลือกไลบรารีที่เหมาะสมกับความต้องการของคุณ

ในที่สุด jQuery เป็นห้องสมุดที่มีประโยชน์และเป็นประโยชน์อย่างเหลือเชื่อเมื่อใช้อย่างถูกต้อง อย่างไรก็ตามไม่ใช่ทางเลือกอื่นสำหรับ javascript มันเป็นห้องสมุดเช่นเดียวกับzepto.js , YUI , Dojo , MooToolsและPrototypeซึ่งหนึ่งในนั้นอาจเป็นตัวเลือกที่ดีกว่ามากสำหรับโครงการปัจจุบันของคุณ

Javascript เป็นภาษาที่เข้าใจผิดและเพิ่งถูกมองว่าเป็นสิ่งที่มากกว่าภาษาสคริปต์ของคนส่วนใหญ่ ฉันขอแนะนำให้อ่านข้อมูลเพิ่มเติมต่อไปนี้เป็นสถานที่ที่ดีสำหรับการเริ่มต้น:

แก้ไข 07/2014 - ฉันสังเกตเห็นโพสต์นี้ยังคงได้รับความสนใจดังนั้นฉันจึงเพิ่มลิงก์จำนวนมาก สิ่งเหล่านี้ไม่เรียงตามลำดับ แต่ควรมีประโยชน์

  • บล็อกของ Ben Alman - แนวปฏิบัติที่ดีที่สุดมากมายที่นี่ ฉันไม่เห็นด้วยกับพวกเขาทั้งหมด แต่ฉันได้เรียนรู้สิ่งใหม่ ๆ จากบล็อกของเขาตลอดเวลา
  • Code Academy - จาวาสคริปต์พื้นฐานและการฝึกอบรม jQuery บางครั้งการกลับไปสู่พื้นฐานช่วย
  • Javascript Garden - โพสต์เกี่ยวกับคุณสมบัติเพิ่มเติมที่ซับซ้อนหรือเข้าใจผิดของจาวาสคริปต์ โปรดอ่านสิ่งนี้เป็นครั้งคราวจนกระทั่งทุกอย่างเข้าท่า
  • Bocoup - นี่คือคลาสฝึกอบรม หากคุณอยู่ใกล้หนึ่งไปที่มัน ผู้สอนและอาจารย์ JS ที่เก่งที่สุดหลายคนสอนสิ่งเหล่านี้
  • บล็อกของ Paul Irish - ไม่ใช่ JS อย่างเคร่งครัด แต่มีแนวทางปฏิบัติที่ดีมากมายเขียนไว้ที่นี่ ฟีดทวิตเตอร์ของเขาและเบ็นนั้นยอดเยี่ยมมาก
  • Javascript: The Good Parts - มักจะถูกเรียกว่า 'The Javascript Bible' หนังสือเล่มนี้ของ Douglas Crockford เป็นสถานที่ที่น่าทึ่งในการเริ่มทำความเข้าใจกับจาวาสคริปต์
  • Isaac Schlueter's Blog - Isaac เป็นผู้สร้างของ npm และทำงานบนโหนดหลัก เขาเขียนเกี่ยวกับชุมชนจาวาสคริปต์มากกว่าเกี่ยวกับระเบียบรหัส แต่ถ้าคุณเข้าสู่ js จริงๆมันเป็นการอ่านที่ยอดเยี่ยม
  • Javascript ของ Douglas Crockford - หาก Brendan Eich เป็นบิดาของ javascript Douglas จะเป็นลุงของ javascript อย่างเปิดเผย เขาเป็นผู้เขียนข้อมูลจำเพาะ JSON พระคัมภีร์จาวาสคริปต์และโพสต์ที่น่าทึ่งมากมายเกี่ยวกับนิสัยใจคอจาวาสคริปต์และการเพิ่มขึ้นของอุตุนิยมวิทยา
  • บล็อกของเบรนแดน Eich - เบรนแดนเป็นผู้สร้างจาวาสคริปต์ - เขาเขียนเกี่ยวกับสิ่งที่โง่ ๆ ในบล็อกของเขาและในขณะที่เขามีข้อบกพร่องในฐานะบุคคลโพสต์ของจาวาสคริปต์ก็มีค่า
  • บล็อกของ James Halliday (@substack) - Substack นั้นเป็นผู้พัฒนา node.js ที่สำคัญที่สุดในชุมชน - ด้วยโมดูล npm ประมาณ 400 (และการเติบโตทุกวัน) และแนวทางการชี้นำของโมดูลขนาดเล็กเหมือนยูนิกซ์ทุกสิ่งที่เขาเขียนนั้นมีค่า การอ่าน
  • บล็อกของ Max Ogden Max Ogden เป็นผู้เขียน node.js ที่มีความอุดมสมบูรณ์อีกทั้งยังยอดเยี่ยมในการเขียนบทความในบล็อกที่สอนคุณบางอย่าง เขายังเป็นผู้แต่ง (กับคนอื่นที่ฉันเชื่อ) ของ javascript สำหรับแมว
  • Javascript for Cats - นี่คือบทแนะนำสั้น ๆ ที่จะนำคุณผ่านพื้นฐานของ javascript จากมุมมองของแมว หากคุณเป็นผู้เริ่มต้นอ่านสิ่งนี้ มันสนุกและสอนในหนึ่งชั่วโมงว่าหนังสือหลายเล่มใช้เวลาสื่อสารกันหลายสัปดาห์
  • นิโคลัส Zakas' บล็อกนิโคลัสเป็นผู้เขียนหนังสือสองสามเล่มจาวาสคริปต์ที่ยอดเยี่ยม: เขียนโปรแกรมเชิงวัตถุใน Javascript , Maintainable Javascript , มืออาชีพ Javascript สำหรับนักพัฒนาเว็บและHigh Performance Javascript เขามุ่งเน้นไปที่ลูกค้าเป็นหลัก แต่มีแนวทางปฏิบัติที่ดีที่สุดและเคล็ดลับประสิทธิภาพ
  • บล็อกของ Guillermo Rauch - Guillermo เป็นอีกโหนดหนึ่งที่อุดมสมบูรณ์ node.js ซึ่งส่วนใหญ่มีชื่อเสียงสำหรับ Socket.io และ Mongoose บล็อกของเขา (และหนังสือเล่มใหม่Smashing Node.jsเป็นแหล่งข้อมูลที่ยอดเยี่ยม

ฉันแน่ใจว่ามีแหล่งข้อมูลที่ดีมากอีกมากมายที่ฉันไม่ได้คิดหรือไม่รู้จักผู้ตอบคนอื่น ๆ ควรเพิ่มเข้าไปในรายการนั้น


3
+1 สำหรับหมายเหตุใน JS ไม่ใช่ภาษาฝั่งไคลเอ็นต์อีกต่อไปและวิธีการที่ JQuery เหมาะสมกับทั้งหมดนี้
Shivan Dragon

1
โปรดทราบว่าฟังก์ชั่นทั้งหมดเป็นวัตถุ แต่เช่นนั้นอยู่ใกล้กับทุกอย่างใน JavaScript $ อธิบายได้ดีกว่าว่าเป็นฟังก์ชั่นที่มีคุณสมบัติ "class-level" ที่ตรึงไว้กับมันเช่น ( $.ajax) ที่แยกวัตถุห่อหุ้มชุดขององค์ประกอบ dom ที่ตั้งใจจะทำให้วิธี DOM โดยทั่วไปน้อยกว่า PITA โดยทำให้รัดกุมมากขึ้น วนซ้ำอัตโนมัติกับชุดของวัตถุ dom เมื่อใดก็ตามที่เหมาะสมและแบ่งปัน API ทั่วไปที่คาดเดาได้ในเบราว์เซอร์ (ซึ่งเป็นปัญหาน้อยกว่า IE <= 8)
Erik Reppen

1
นี่เป็นโพสต์ที่ยอดเยี่ยม แต่ฉันต้องการที่จะมีปัญหากับจุดหนึ่ง - "ห้องสมุดขนาดใหญ่ ... ใช้ Zepto / Underscore" - ก่อนอื่น Underscore เป็นห้องสมุดที่แตกต่างกันอย่างสิ้นเชิง - ส่วนใหญ่สำหรับการจัดการกับอาร์เรย์ / วัตถุ - รวมถึงใช้ LoDash แทนมันเร็วกว่า ประการที่สอง Zepto มีขนาดเล็กลงเพราะมันไม่ครอบคลุมสิ่งที่ jQuery ทำ ที่อาจนำไปสู่ข้อบกพร่องที่ jQuery จะได้รับการแก้ไข สุดท้าย jQuery ไม่ใช่ว่าใหญ่ / monolythic อีกต่อไปมันประมาณ 30Kb เมื่อ gzipped และคุณสามารถบันทึกโดยใช้ 1 ภาพน้อย สำหรับฉันแล้วประสิทธิภาพของ dev ที่ได้รับนั้นคุ้มค่ากับไบต์เหล่านั้น
LocalPCGuy

1
@ LocalPC ซื้อบางจุดที่ดีแน่นอน โพสต์นี้คือ (แน่นอน!) 2 ปีที่ผ่านมาและสิ่งต่าง ๆ มีการเปลี่ยนแปลงอย่างแน่นอนในระบบนิเวศ js ตั้งแต่นั้นมา ตัวอย่างเช่นฉันเองใช้เบราว์เซอร์และโมดูลขนาดเล็กแทนห้องสมุดทั่วโลก namespaced ใด ๆ เลย อย่างไรก็ตามฉันคิดว่าหลักฐานขั้นพื้นฐานยังคงเป็นจริงซึ่งเป็นกรณีส่วนใหญ่ (ส่วนใหญ่) ห้องสมุดอ่างครัวไม่ค่อยจำเป็น ฉันจะนำไปใช้กับนักพัฒนาซอฟต์แวร์ส่วนใหญ่เพื่อให้แน่ใจว่าพวกเขาแสดงให้เห็นถึงต้นทุนขนาดห้องสมุดที่เหมาะสมก่อนที่จะตัดสินใจใช้เพราะจะทำให้ง่ายกว่าการระบุเฉพาะสิ่งที่คุณต้องการ
Jesse

1
ตอบสนองทุกสิ่งฉันพูดถูก!?!?! / sarcasm - วิธีเลือกเครื่องมือที่เหมาะสมสำหรับงาน @Andy และมันไม่ได้ตอบสนองเสมอไป ฉันคิดว่า React กำลังทำสิ่งที่ดีบางอย่าง แต่อย่าคิดว่ามันเป็นการรักษาทั้งหมดสำหรับโลก JavaScript
LocalPCGuy

17

มีข้อดีอยู่บ้าง แต่ก็เป็นที่ถกเถียงกันอยู่ว่าพวกเขามีข้อเสียมากกว่า

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

สิ่งที่สองคือคุณอาจต้องการฟังก์ชั่นที่เรียบง่ายและการดาวน์โหลดและการตั้งค่า jQuery อาจใช้เวลามากกว่าการใช้สิ่งที่คุณต้องการ

และสุดท้ายคุณอาจต้องการพลิกกรอบของคุณเองซึ่งส่วนใหญ่เป็นความคิดที่ไม่ดี แต่บางคนก็มีเหตุผล

อย่างไรก็ตามหากคุณทิ้ง jQuery เพียงเพราะคุณถูกข่มขู่โดยช่วงการเรียนรู้คุณควรพิจารณาอีกครั้ง โดยเฉพาะอย่างยิ่งเพราะมันค่อนข้างอ่อนโยน


ตกลงกันโดยเฉพาะเกี่ยวกับส่วนแบนด์วิดท์ JQuery 1.8.2 มี 92Kb ในรุ่นที่ย่อเล็กสุด / ยุ่งเหยิง ตกลงด้วยว่าสิ่งเหล่านี้ไม่ใช่เหตุผลที่แข็งแกร่งมากที่จะไม่ใช้ JQuery ขอบคุณ!
Shivan Dragon

1
@ShivanDragon: คุณลืม gzip ที่ทำให้มันมากขนาดเล็ก
ThiefMaster

@ThiefMaster: จริงขอบคุณที่ชี้ให้เห็น
Shivan Dragon

10
หากคุณใช้ jQuery จาก CDN (เช่น Google) โอกาสที่ผู้ใช้จะได้รับการโหลดล่วงหน้าจากการเยี่ยมชมเว็บไซต์อื่น ๆ ดังนั้นผลกระทบต่อเวลาตอบสนองโดยเฉลี่ยของคุณ (แม้ว่าไม่สูงสุด) จะเล็กลง
Xion

1
@Phil ทำไมคุณถึงใช้งานได้เลย?!?! jQuery ไม่เคยมีและไม่จำเป็นต้องมี มันเป็นมารร้ายที่บริสุทธิ์ (รวมถึงแก๊งปีศาจที่เหลือ: ReactJS, Underscore, LoDash, Modernizr, CommonJS, AngJal, Google Analytics โดยเฉพาะ AMD ฯลฯ ) โดยส่วนตัวฉันไม่เคยรวมห้องสมุดทั้งหมด (แม้ว่าฉันจะแยกและเพิ่มประสิทธิภาพฟังก์ชั่นเฉพาะที่ฉันต้องการจากห้องสมุด) แต่ฉันจะไม่รวมไลบรารีทั้งหมดและหน้าเว็บที่ฉันสร้างขึ้นบนอินเทอร์เน็ต dial-up น้อยกว่า 11 เฟรม (1 / 59th ของวินาที)
Jack Giffin

14

เท่าที่ฉันรู้มีเพียงสองข้อได้เปรียบของการใช้วานิลลาจาวาสคริปต์กับห้องสมุดเช่นJQuery , MooToolsเป็นต้น

  • ไลบรารีมีเพย์โหลดที่กินแบนด์วิดท์ แต่เมื่อคนอื่น ๆ ได้ชี้ให้เห็นในคำตอบอื่น ๆ คุณสามารถ จำกัด สิ่งนี้ด้วยการ gzipping และแคช ถ้าคุณต้องการที่เฉพาะชุดย่อยของ jQuery ที่คุณสามารถทำอะไรกับSizzleJSและ MooTools คุณมีตัวเลือกในการเลือกที่คุณลักษณะคุณภาพที่คุณต้องการในลักษณะเช่นเดียวกับสิ่งModernizr ไม่
  • ห้องสมุดมีขนาดใหญ่และใช้เวลาในการเรียนรู้ จากนั้นอีกครั้งนี่เป็นการลงทุนครั้งเดียวสำหรับนักพัฒนา ... และมันก็ดูดีในประวัติย่อของคุณที่จะรู้ว่าห้องสมุดจาวาสคริปต์
  • (โบนัส) ไลบรารี่ไม่ใช่กระสุนเงินดังนั้นถ้าคุณต้องการสร้างวงล้อใหม่นี่เป็นวิธีที่จะไปแน่นอน

เป็นค่าที่ชี้ให้เห็นว่าทำไมคุณต้องการใช้ไลบรารี javascript ซึ่งมีมากมาย:

  • คุณไม่จำเป็นต้องเขียนกรอบงานของคุณเองเพื่อสนับสนุนการพัฒนาของคุณ หากคุณสงสัยว่าสิ่งต่าง ๆ ทำงานได้อย่างไรคุณสามารถตรวจสอบรหัสได้เนื่องจากเป็นโอเพ่นซอร์ส
  • ไลบรารีแก้ปัญหาความเข้ากันได้ของเบราว์เซอร์ ทั้ง DOM และ javascript มีความแตกต่างระหว่างเบราว์เซอร์ เชื่อใจฉันนี่เป็นครั้งใหญ่ถ้าคุณต้องแฮ็คแก้ไขด้วยตัวเอง
  • เป็นมาตรฐานอินเทอร์เน็ตอย่างแท้จริงในการใช้ไลบรารี javascript ซึ่งส่วนใหญ่มีเอกสารที่ดีในขณะนี้และนักพัฒนาเว็บส่วนใหญ่ (ผู้ที่รู้จัก javascript) รู้วิธีใช้งาน
  • คุณไม่ได้เลิกใช้จาวาสคริปต์เมื่อใช้ห้องสมุด คุณยังต้องรู้จาวาสคริปต์ด้วยประเภท, วัตถุ, วิธีการปิดการทำงาน ฯลฯ
  • ห้องสมุดส่วนใหญ่จะปรับตัวและจะไม่ใช้เวลานานในการเขียนปลั๊กอินหรือใช้จำเป็นต้องมีและรูปแบบเอเอ็มดี
  • องค์ประกอบการเลือก CSS จาก DOM เป็นความช่วยเหลือที่ยิ่งใหญ่
  • (โบนัส) คุณสามารถใช้มันกับCoffeeScript ได้เช่นกัน

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

อย่างที่ฉันบอกว่าฉันเคยทำงานที่นั่น ... มีทุ่งหญ้าสีเขียวที่อื่น ๆ : ^)


10

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

นอกจากนี้ฉันมักจะทำสิ่งที่กำหนดเอง ตามที่ทุกคนบอกว่าคุณไม่ควรคิดค้นล้อใหม่อีกครั้ง แต่เมื่อคุณขอให้คุณทำฟังก์ชั่นที่บ้าฉันมักจะพบว่ามันง่ายกว่ามากที่จะเขียนมันเองแล้วลองและแฮกปลั๊กอิน jquery ที่ใกล้เคียง แต่ไม่ใช่คู่ที่สมบูรณ์แบบ

ฉันยังได้ทำงานกับนักพัฒนาซอฟต์แวร์ที่ทำงานได้โดยไม่มีอะไรนอกจาก jquery และฉันต้องบอกว่าพวกเขาประนีประนอมกับการทำงานบ่อยกว่านั้นถ้าพวกเขาไม่สามารถหาปลั๊กอิน jquery ที่ทำในสิ่งที่พวกเขาต้องการ

เมื่อถึงจุดหนึ่งในการพัฒนาเว็บไซต์คุณจะถูกขอให้ทำสิ่งที่ไม่ได้บรรจุล่วงหน้าในห้องสมุด ดังนั้น ณ จุดนี้คุณควรแน่ใจว่าคุณเข้าใจว่าภาษาพื้นฐานทำงานอย่างไร

ดังนั้น TLDC : ใช้ทั้งสองอย่างคุณจะเสียเปรียบโดยใช้เพียงวานิลลาและคุณจะเสียเปรียบถ้าคุณไม่รู้จักวานิลลาทั้งภายในและภายนอกและยืนยันว่าใช้ jQuery เสมอ


3
วานิลลาบริสุทธิ์ js เป็นวิธีที่จะไป!
marko

Ryan รู้เพียงเล็กน้อยว่า jQuery ใช้การละเมิดdocument.querySelectorAllในทางที่ผิดเบื้องหลัง
Jack Giffin

6

สิ่งเดียวที่ฉันคิดได้ว่าคุณไม่สามารถทำได้หากไม่มี JQuery ก็คือใช้ปลั๊กอิน JQuery แม้กระทั่งตอนนี้คุณสามารถเขียนไลบรารี JS ของคุณเองที่จะให้สิ่งที่ปลั๊กอินต้องการ

ลองคิดดูสิ: JQuery เป็นไลบรารี Javascript แบบโอเพนซอร์สที่เขียนด้วย Javascript คุณสามารถดูที่มาและเรียนรู้วิธีการทำสิ่งที่มันทำ

คุณไม่สามารถใช้ JQuery โดยไม่ต้องใช้ Javascript แบบธรรมดา คุณอาจจะไม่ใช้document.getElementByIdแต่คุณจะยังคงกำหนดฟังก์ชั่นและตัวแปรในรูปแบบ Javascript มาตรฐาน คุณอาจเขียนforวนซ้ำมาตรฐาน

ประโยชน์หลักของการใช้ JQuery ก็เหมือนกับไลบรารีของบุคคลที่สามอื่น ๆ ในภาษาใด ๆ : คุณไม่ต้องเขียนโค้ดมากนักเพื่อใช้ตรรกะเฉพาะกับแอปพลิเคชันของคุณ

อย่าปล่อยให้ขนาดนั้นทำให้คุณกลัว รุ่น CDNเป็นดาวน์โหลด ~ 33k ซึ่งจะถูกเก็บไว้โดยเบราว์เซอร์ของผู้ใช้หลังจากที่ตีหน้าแรก


6

หากคุณกังวลเรื่องประสิทธิภาพคุณควรลองใช้วานิลลา js ทุกครั้งที่ทำได้ เฟรมเวิร์กไม่เพียงเพิ่มแบนด์วิดท์เหนือศีรษะ แต่ยังประมวลผลโอเวอร์เฮด และ jQuery ก็มาพร้อมกับความเข้ากันได้ของเบราว์เซอร์สำหรับเบราว์เซอร์ที่ค่อนข้างเก่าเช่นกัน

หากคุณกำลังทำงานกับแอพมือถือหรือเกม (หรือทั้งสองอย่างรวมกัน) คุณต้องมีประสิทธิภาพและประสิทธิภาพก่อน

jQuery และปลั๊กอินอาจเพิ่มความเร็วในการพัฒนาของคุณ แต่โดยเฉพาะอย่างยิ่งถ้าคุณพึ่งพาปลั๊กอิน jquery บุคคลที่สามคุณควรรู้ว่าสิ่งที่พวกเขากำลังทำอยู่ภายใน จำนวนมากเป็นตัวอย่างที่ไม่ดีของคุณภาพและประสิทธิภาพของโค้ด

jQuery สามารถช้ากว่า JavaScript แบบดั้งเดิม 2 ถึง 10 เท่า และมันสามารถกระตุ้นให้นักพัฒนาไม่สามารถออกแบบอินเตอร์เฟสได้อย่างถูกต้องและพึ่งพาตัวเลือก jQuery มากเกินไปซึ่งช้ากว่าเนทีฟมาก


+1, ฉันเห็นด้วยกับคุณในการสร้างเกมเป็นเหตุผลที่ดีในการทิ้ง JQuery ให้กับ Vanilla JS เนื่องจากเหตุผลด้านประสิทธิภาพ นี่เป็นเรื่องจริงสำหรับภาษาส่วนใหญ่เมื่อพูดถึงการทำเกมกับพวกเขา ตัวอย่างเช่นคน Google แนะนำในเอกสาร Android ของพวกเขาไม่เพียง แต่จะทิ้งไลบรารีเมื่อทำเกม (ใน Java, สำหรับ Android) แต่ยังทิ้งแนวทางปฏิบัติที่ดีในการเข้ารหัสด้วยความเร็ว
Shivan Dragon

... ถ้าคุณรู้ว่า DOM มีประสิทธิภาพมากพอ ๆ กับคนที่เขียน jQuery ใช่
Erik Reppen

@ErikReppen โปรดตรวจสอบซอร์สโค้ดที่แท้จริงจาก "folks ที่เขียน jQuery" ฉันถูกตาบอดเกือบเดือนจากความน่ากลัวที่ฉันเห็นในเวลาเพียง 23 บรรทัดแรก
Jack Giffin

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