jquery เป็นไลบรารี javascript หรือกรอบหรือไม่ [ปิด]


121

ที่นี่ jquery ถูกกล่าวถึงภายใต้หมวดหมู่กรอบ: http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks

jquery เป็นไลบรารี javascript หรือกรอบหรือไม่


40
ห้องสมุดของคนหนึ่งเป็นกรอบของคนอื่น
nnnnnn

1
สิ่งนี้ไม่ตรงประเด็นเพราะทุกคำตอบมีความถูกต้องเท่าเทียมกัน:“ ______ ที่คุณชอบที่สุดคืออะไร” . นอกจากนี้มันจะสำคัญอะไรถ้าเราทุกคนเป็นไลบรารีหรือกรอบงาน?
EJoshuaS - คืนสถานะ Monica

คำตอบ:


169

ห้องสมุด. ตามหน้าแรกและที่ฉันเห็นด้วย

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


55
+1 ไลบรารีคือสิ่งที่คุณเรียกใช้จากโปรแกรมของคุณ เฟรมเวิร์กคือสิ่งที่เรียกเข้าสู่โปรแกรมของคุณ
Thilo

1
สำหรับการเปรียบเทียบไลบรารีเทียบกับเฟรมเวิร์กโปรดดู "Inversion of Control" stackoverflow.com/a/3057818/2144912
cheshireoctopus

30

14
ในขณะที่ฉันเห็นด้วยชื่อ / สโลแกนที่ตั้งเองไม่ได้พิสูจน์อะไร มีหลายพันสิ่งที่เรียกว่า "เฟรมเวิร์ก" ซึ่งจริงๆแล้วมีห้องสมุด
kapex

@Kapep แต่กรณีที่ย้อนกลับนั้นพบได้น้อยกว่า: เฟรมเวิร์กจำนวนไม่มากเรียกตัวเองว่า "ไลบรารี" ฉันเดาว่าคำว่า "กรอบ" ฟังดูเซ็กซี่กว่าสำหรับบางคน…
Franklin Yu

19

แน่นอนว่ามันเป็นไลบรารีจาวาสคริปต์ แต่เรื่องการเป็นกรอบหรือไม่ฉันแค่คิดว่ามันไม่ใช่กรอบ ดูคำจำกัดความของซอฟต์แวร์เฟรมเวิร์กของวิกิพีเดีย :

เป็นชุดของไลบรารีซอฟต์แวร์ที่จัดเตรียมอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันที่กำหนดไว้

และ jQuery เป็นเพียงไลบรารีเดียว หลังจากนั้นก็พูดว่า:

เฟรมเวิร์กมีคุณสมบัติการแยกแยะที่สำคัญที่แยกออกจากไลบรารีปกติ:

  1. การผกผันของการควบคุม - ในกรอบซึ่งแตกต่างจากในไลบรารีหรือแอปพลิเคชันผู้ใช้ทั่วไปขั้นตอนการควบคุมโดยรวมของโปรแกรมไม่ได้ถูกกำหนดโดยผู้เรียก แต่เป็นกรอบงาน

ดังนั้นฉันคิดว่ามันไม่ใช่กรอบ


9

อ้างอิงจากเว็บไซต์ angularjs

  • ไลบรารี - ชุดของฟังก์ชันที่มีประโยชน์เมื่อเขียนเว็บแอป รหัสของคุณเป็นผู้รับผิดชอบและจะเรียกเข้าห้องสมุดเมื่อ
    เห็นสมควร เช่น jQuery
  • เฟรมเวิร์ก - การใช้งานเว็บแอปพลิเคชันโดยเฉพาะโดยที่โค้ดของคุณกรอกรายละเอียด เฟรมเวิร์กมีหน้าที่รับผิดชอบและเรียกเข้าสู่โค้ดของคุณเมื่อต้องการบางแอพเฉพาะ เช่น durandal ถ่าน ฯลฯ

5

Framework และ libarry ไม่จำเป็นต้องมีเงื่อนไขพิเศษร่วมกัน โดยทั่วไป Framework เป็นไลบรารีหรือกลุ่มของไลบรารี

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

หนึ่งในคุณสมบัติที่กำหนดของเฟรมเวิร์กซอฟต์แวร์คือโค้ดของมันได้รับการปกป้องจากการดัดแปลง ใน JavaScript นี่ไม่ใช่กรณีอย่างชัดเจน ไลบรารีหรือเฟรมเวิร์กใด ๆ ที่สามารถเรียกเข้าไปในโค้ดฝั่งไคลเอ็นต์ของคุณสามารถแก้ไขได้แม้ว่าจะขัดกับแนวทางปฏิบัติที่ดีที่สุดในการแก้ไขก็ตาม ดังนั้นหากอนุญาตให้เรียก Bootstrap หรือ AngularJS framework ได้ก็ไม่มีเหตุผลว่าทำไม jQuery จึงไม่สามารถเรียกว่า framework ได้ ลิงค์นี้มีคำอธิบายโดยละเอียดเพิ่มเติมว่า jQuery ตรงตามเกณฑ์ที่เรียกว่ากรอบงานได้อย่างไร

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


2

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

ตัวอย่าง: มีโปรเจ็กต์ที่สร้างขึ้นบน jQuery ที่กำหนดเป็นเฟรมเวิร์ก: jQuery Mobile: Touch-Optimized Web Framework , JavaScriptMVCและsammy.jsเพื่อตั้งชื่อไม่กี่

นอกจากนี้ยังมีไลบรารีอื่น ๆ ที่สร้างขึ้นบน jQuery เช่นjQuery UI

บางส่วนดูเหมือนว่าความหมายเมื่อกำหนดว่าไลบรารีคืออะไรกับเฟรมเวิร์ก แต่ตัวอย่างเหล่านั้นช่วยขีดเส้นให้ฉัน


1

ถ้าเราพูดถึง Inversion of control ซึ่งเกือบทุกคนในกระทู้ข้างบนพูดถึง jQuery ก็คือ FRAMEWORK

มันมี IOC เช่นเมื่อเราเขียนฟังก์ชัน$ (document) .ready {} ... มันคือคอนเทนเนอร์ที่เรียกเมธอดนี้และเราใส่รหัสของเราไว้ในวงเล็บปีกกา เราไม่ใช่ผู้เรียกใช้วิธีนี้และด้วยเหตุนี้ "Inversion of Control"

วิธีนี้ jQuery เป็น FRAMEWORK


1
Meh ไลบรารีที่มีขนาดใหญ่ที่สุดมีวิธีการเรียกกลับแบบคลุมเครือสำหรับวัตถุประสงค์บางอย่าง คุณสามารถเขียนโค้ด jQuery ได้มากมายโดยไม่ต้องพึ่งready().
Nathan Tuggy

@NathanTuggy เหตุใดแม้แต่การอภิปรายโดยละเอียดเกี่ยวกับ Framework เทียบกับ Lib จึงพูดถึง IOC ถ้ามีมันก็อยู่ที่นั่น ทำไมต้องพูดถึง "พึ่ง" หรือ "ไม่พึ่ง".
pinkman

เนื่องจาก IoC แบบเฟรมเวิร์กมีลักษณะความจำเป็นในการใช้งาน ไม่ใช่ความเป็นไปได้ในการใช้งานตามที่ต้องการในรูปแบบเฉพาะอาหารตามสั่ง ในกรอบคุณไม่มีทางเลือก: การควบคุมจะกลับด้าน
Nathan Tuggy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.