Underscore.js และ jQuery เสริมซึ่งกันและกันหรือไม่ [ปิด]


92

ฉันเพิ่งเริ่มที่จะเรียนรู้ JavaScript และสะดุดUnderscore.jsและjQuery ขีดล่างดูดีมาก แต่ฉันสงสัยว่า jQuery ยังไม่มีฟังก์ชันที่คล้ายกับขีดล่าง แล้วมันคุ้มไหมที่จะใช้ทั้งสองอย่าง?


6
ย่อหน้าแรกในโฮมเพจของพวกเขาระบุว่า - "มันเป็นสิ่งที่ต้องทำควบคู่ไปกับ tux ของ jQuery และสายรัดของ Backbone.js"
Anurag

12
ใช่ แต่ฉันคิดว่าสิ่งที่ op บ่งบอกด้วยคำว่า "complement" ก็คือเนื่องจากฟังก์ชันหลายอย่างทับซ้อนกันจึงทำให้ทั้งสองกรอบมีความหมายร่วมกัน ตัวอย่างเช่นความแตกต่างระหว่าง $ .each และ _.e แต่ละอย่างละเอียดอ่อนมากพอที่จะทำให้ทุกคนสับสนเมื่อพยายามผสมและจับคู่ระหว่างกัน
BishopZ

1
ถ้าคุณชอบขีดล่างคุณควรใช้lodash.com จริงๆ
นีล

คำตอบ:


78

นำมาจากไซต์ขีดล่าง :

มันเป็นความสัมพันธ์กับ tux ของ jQuery และสายรัดของ Backbone.js

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


53
ที่กำหนดเองมากชุดกรอบ: P
อนุรักษ์


68
  • jQuery จะดูแลการจัดการโดเมนส่วนใหญ่ของคุณ
  • backbone.js จะช่วยคุณจัดระเบียบโค้ดทั้งหมดและให้โครงสร้างแอปพลิเคชัน js ของคุณ (รูปแบบ mvc)
  • underscore.js จะให้ยูทิลิตี้ระดับต่ำที่มีประโยชน์มาก ฉันไม่เคยต้องการไลบรารีนี้จนกว่าฉันจะเข้าสู่แอพ js จริงๆ (มันเป็นข้อกำหนดสำหรับ backbone.js ด้วย)

39

ขีดล่างมีฟังก์ชันทั้งหมด 60 ฟังก์ชันสำหรับการประมวลผลข้อมูล / รหัส เป็นที่ตกลงกันว่าฟังก์ชันหลายอย่างมีอยู่ในไลบรารีอื่น ๆ เช่น jQuery, Prototype หรือ script.aculo.us ตัวอย่างเช่นฟังก์ชั่นเช่น each, map, find, filter หรือ toArray มีอยู่ใน jQuery ซึ่งอยู่ในเครื่องหมายขีดล่างด้วย นี่คือการทำให้ไลบรารีเป็นอิสระจาก jQuery

ควรใช้ขีดล่างเมื่อใด:

ปัจจุบันมีการใช้ Backbone.js อย่างแพร่หลายในการใช้สถาปัตยกรรม MVC สำหรับสร้างเว็บแอป Javascript แบบหน้าเดียว ความสามารถที่สำคัญที่สุดของ underscore.js คือความสามารถในการสร้างเทมเพลต (ซึ่ง jQuery ไม่สามารถทำได้) ไลบรารีนี้มีฟังก์ชันที่มีประโยชน์อื่น ๆ อีกมากมายซึ่งไม่ขึ้นอยู่กับไลบรารี Javascript อื่น ๆ

ค้นหาด้านล่างรายการฟังก์ชันที่มีให้โดยขีดล่าง:

คอลเลกชัน: แต่ละแผนที่ลดลดขวาค้นหากรองปฏิเสธทั้งหมดใด ๆ รวมเรียกถอนสูงสุดขั้นต่ำ sortBy groupBy sortedIndex สับเปลี่ยน toArray ขนาด

อาร์เรย์: แรกเริ่มต้นสุดท้ายส่วนที่เหลือกระชับแบนโดยไม่ต้องสหภาพจุดตัดความแตกต่าง uniq ซิป indexOf lastIndexOf ช่วง

ฟังก์ชัน: ผูก, bindAll, บันทึก, หน่วงเวลา, เลื่อน, เค้น, debounce, ครั้งเดียว, หลังจาก, ห่อ, เขียน

วัตถุ: คีย์ค่าฟังก์ชันขยายค่าเริ่มต้นโคลนแตะ isEqual isEmpty isElement isArray isArguments isFunction isString isNumber isBoolean isDate isRegExp isNaN isNull isUndefined

Utitity: noConflict, identity, times, mixin, uniqueId, escape, template


3
สวัสดี Umesh เนื่องจาก _.template เป็นเพียงฟังก์ชันขีดล่างหนึ่งใน 60 ฟังก์ชันเพียงพอที่จะทำให้คุ้มค่าหรือไม่?
tim peterson

@timpeterson ฉันเข้าใจสิ่งนี้ แต่เราไม่เพียงใช้ _.template เท่านั้นยังมีฟังก์ชั่นอื่น ๆ อีกมากมายเช่น bind, bindAll, each, map และอื่น ๆ เราสามารถใช้ฟังก์ชันต่างๆได้มากที่สุด
Umesh Patil

3
แต่ผูกแต่ละแผนที่อยู่ใน jQuery จึงดูเหมือนซ้ำซ้อนใช่ไหม
ทิมปีเตอร์สัน

2
การลด (ซึ่งjQuery จะไม่เพิ่ม ) อาจทำให้คุ้มค่าด้วยตัวมันเอง!
Rob Grant

9

หากคุณกังวลเกี่ยวกับการทับซ้อนกันและไม่ต้องการสิ่งต่างๆเช่น JQuery AJAX คุณอาจพิจารณาใช้เพียงเครื่องมือเลือก JQuery ชื่อ Sizzle

http://sizzlejs.com/

โปรดทราบว่านี่ไม่ใช่สำหรับทุกโครงการการใช้ Sizzle และ Underscore คุณจะสูญเสียฟังก์ชัน JQuery บางอย่าง (เช่น AJAX) คุณต้องพิจารณาสิ่งที่คุณต้องการสำหรับแอปพลิเคชันเฉพาะของคุณ


2
project.jga.me/jquery-builderเครื่องมือนี้สามารถช่วยคุณลบโค้ด jQuery ที่ไม่จำเป็น นอกจากนี้โมดูล lodash ยังมีอยู่ใน NPM
DigitalDesignDj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.