มีข้อดีของ SASS มากกว่า LESS หรือไม่? [ปิด]


36

ฉันพยายามค้นคว้าเกี่ยวกับ css preprocessors เหล่านี้

มีข้อดีของการใช้ sass น้อยกว่าในฐานะ preprocessor css หรือไม่ ปัจจัยที่ฉันกำลังมองหารวมถึงขนาดชุมชนการกำหนดโครงการซอฟต์แวร์ ฯลฯ

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

ปรับปรุง

ดูเหมือนว่าbootstrap ตอนนี้ผ่านไปแล้วเพื่อใช้ Sass

คำตอบ:


32

คริส Coyier มีบทสรุปที่น่ากลัวของ SASS VS น้อยมากกว่าที่css-tricks.com มันคุ้มค่าที่จะอ่าน

สำหรับคำถามเฉพาะบางข้อของคุณ:

ชุมชน

ฉันทำงานกับ SASS / Compass ทั้งหมดดังนั้นฉันจึงไม่คุ้นเคยกับชุมชนของ LESS แต่อย่างใด แต่ฉันก็ไม่ต้องการชุมชน SASS จริงๆ เอกสารของพวกเขายอดเยี่ยมและได้แก้ไขปัญหาใด ๆ ที่ฉันพบมา

สำหรับสิ่งที่คุ้มค่านี่คือสถิติ SASS vs LESS ที่ Chris มีในโพสต์ของเขาซึ่งฉันได้อัปเดตสำหรับหมายเลขปัจจุบัน:

จำนวนของปัญหาเปิดใน LESS: 121
จำนวนของปัญหาเปิดบน Sass: 87

คำขอดึงที่ค้างอยู่ใน LESS: 13
คำขอดึงที่รอดำเนินการใน Sass: 8

จำนวนการคอมมิทในเดือนที่ผ่านมาในจำนวนน้อย: 49
จำนวนการคอมมิทในเดือนสุดท้ายใน Sass: 7

โปรดสังเกตว่าตัวเลขเหล่านี้พลิกฟุบประมาณการเขียนของคริสในเดือนพฤษภาคม 2012 สิ่งนี้บอกกับฉันว่าพวกเขาทั้งคู่ค่อนข้างเท่าเทียมกันเกี่ยวกับกิจกรรมการพัฒนา

วุฒิภาวะ

เทคนิคการพูด Sass แก่กว่า มันออกมาในปี 2007 ในขณะที่ LESS ออกมาในปี 2009 ที่กล่าวว่าการเปรียบเทียบที่ฉันได้เห็นทำให้ทั้งคู่มีระดับ "วุฒิภาวะ" ในระดับเดียวกันโดยคำนึงถึงคุณสมบัติและสิ่งที่ไม่เกี่ยวข้อง

ทั้งสองยังมีเฟรมเวิร์กที่นำเครื่องมือมาให้เพิ่มเติม LESS มี Framework ที่น้อยลงและ Centage (นอกจากนี้ Bootstrap Twitter ถูกสร้างขึ้นด้วย LESS) Sass มี Compass, Gravity และ Susy ทั้งคู่อาจมีมากกว่านี้หากคุณขุดหาพวกเขา แต่สิ่งเหล่านี้คือสิ่งแรกที่เกิดขึ้นเมื่อคุณค้นหา

ดังนั้นมีความแตกต่างที่แท้จริง?

เมื่อมันมาถึงการเขียนมันไม่ได้จริงๆ หากคุณใช้ไวยากรณ์ SCSS เหมือน CSS ใน Sass (แทนที่จะเป็นไวยากรณ์ SASS เหมือน Python) คุณมีเพียงความแตกต่างของไวยากรณ์ทั่วไปเล็กน้อย ( @vs $) แต่โดยส่วนใหญ่แล้วพวกเขาจะเหมือนกัน

ความแตกต่างที่ใหญ่ที่สุดสองข้อในการเขียนโค้ดที่ฉันพบคือก) วิธีจัดการหน่วยเมื่อใช้คณิตศาสตร์และข) วิธีจัดการมรดก เมื่อได้รับสิ่งที่คล้าย20px + 2emน้อยลงจะลดหน่วยที่สองและคิดว่าคุณหมายถึงแรก (เย่อหยิ่ง22px) ในขณะที่ Sass จะโยนข้อผิดพลาด (โดยทั่วไปพิมพ์ไม่ตรงกัน) ด้วยการสืบทอดน้อยกว่าปฏิบัติต่อมันเหมือนมิกซ์อิน (ฉันไม่สามารถอธิบายได้ดีนักดังนั้นโปรดดูหัวข้อการสืบทอดของบทความ Tuts +สำหรับรายละเอียด)

ไม่ว่าใครจะดีกว่าประเภทอื่น ๆ ขึ้นอยู่กับวิธีที่คุณต้องการให้จัดการกับสิ่งต่าง ๆ

ความแตกต่างที่ใหญ่ที่สุดอื่น ๆ ที่ฉันรู้คือวิธีการที่แต่ละคนรวบรวมโดยค่าเริ่มต้น Sass ใช้ Ruby และคอมไพล์บนเซิร์ฟเวอร์ช่วยให้คุณจัดเก็บและส่งไฟล์ CSS ที่คอมไพล์ไปยังไคลเอนต์ น้อยกว่าเริ่มต้นที่จะใช้สคริปต์ less.js เพื่อรวบรวม CSS ได้ทันที อย่างไรก็ตามด้วยการใช้ Node.js LESS สามารถรวบรวมบนฝั่งเซิร์ฟเวอร์ในลักษณะเดียวกับที่ Sass ทำ

อันไหน?

คุณควรใช้อันไหนดี? ถ้าคุณไม่ชอบไวยากรณ์ SASS ที่เหมือนงูหลามจริงๆหรือคิดว่าการรวบรวมฝั่งไคลเอ็นต์เป็นวิธีที่จะไปหรือคุณชอบมรดกที่เรียกคนอื่นมามากก็จะเป็นเรื่องสำคัญมากกว่าไม่ว่าคุณจะชอบ (หรือ มีอยู่แล้ว) ติดตั้ง Ruby หรือ Node.js


2
+1 สรุปที่ดี หากไม่มีการเพิ่มเข้ามาเมื่อเร็ว ๆ นี้ LESS จะไม่มีสิ่งใดเทียบได้กับSass's @extend
steveax

ดูเหมือนว่าการพัฒนาของ LESS จะเพิ่มขึ้นช้ามาก พวกเขากำลังเพิ่มไวยากรณ์ @extend ใน 1.5.0 (: ส่วนขยาย () ไวยากรณ์) พวกเขายังเพิ่มแผนที่แหล่งที่มาท่ามกลางสิ่งอื่น ๆ
WraithKenny

WraithKenny - ที่ยังคงวางเทคนิคไว้เบื้องหลัง Sass แผนที่แหล่งที่มามาตรฐานอยู่ในสาขาการทดสอบในขณะนี้ (และพวกเขามี "ซอร์สแผนที่" ที่ไม่เป็นมาตรฐานพร้อมด้วย--debug-infoและความคิดเห็นในบรรทัดสำหรับ Firebug และ Chrome สองสามเวอร์ชันย้อนกลับไปสักพักก่อนที่จะมีมาตรฐานออกมา) ตัวยึดตำแหน่ง (โดยทั่วไป @extend โดยไม่ต้องเขียนชั้นที่จะขยาย) เป็นรุ่นล่าสุด
Shauna

@Shauna ไม่แน่ใจว่ามันเป็น "เทคนิค" เบื้องหลัง ... LESS มี "ซอร์สแผนที่" ที่ไม่ได้มาตรฐานมาตั้งแต่ปีที่แล้วและมีแผนที่แหล่งมาตรฐานในโครงสร้างที่เสถียรล่าสุดซึ่งแตกต่างจาก Sass ในปัจจุบัน
ก่อกวนเมื่อ

@subhaze - ในขณะที่ความคิดเห็นก่อนหน้านี้น้อยลงไม่ได้มีการขยายไวยากรณ์ดังนั้นจึงยังคงอยู่ในด้านนั้น นอกจากนี้ Sass ยังได้เพิ่มคุณสมบัติ "ตัวยึด" ในโครงสร้างที่มั่นคงล่าสุด ที่กล่าวว่าฉันจะไม่ทำภาคผนวกทุกสองสามเดือนเปรียบเทียบคุณสมบัติที่ทันสมัยที่สุดของแต่ละชุด อย่างที่ฉันพูดไว้ในคำตอบของฉันพวกเขาทั้งคู่ต่างก็เหมือนกันและเมื่อมีคนหนึ่งเพิ่มคุณสมบัติอื่น ๆ ที่ไม่ได้มีคนอื่นมักจะอยู่ไม่ไกล
Shauna

6

ฉันเชื่อว่าตัวเลือกของคุณอาจขึ้นอยู่กับสิ่งที่คุณกำลังทำหรือใช้อยู่ ฉันทำงานกับ Rails เป็นหลักและรองรับ Sass สำหรับ CSS จนถึงจุดที่มันรวมอยู่ในการสร้างโครงการใหม่ หากคุณต้องการใช้บางอย่างเช่น Bootstrap ยอดนิยมซึ่งใช้น้อยลงตามค่าเริ่มต้นคุณไม่ต้องกลัวเพราะมีอัญมณียอดนิยมมากมายเช่นbootstrap-sassซึ่งช่วยให้คุณสามารถใช้มันในโครงการของคุณ

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

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


เห็นด้วยถ้าคุณเป็น Ruby อยู่แล้ว SASS ก็สมเหตุสมผลดี ฉันเป็นคนจาวาสคริปต์มากกว่าดังนั้นน้อยสำหรับฉัน!
WraithKenny

5

ฉันไม่แน่ใจว่า Less มีอะไรที่เทียบเคียงได้ แต่ข้อดีอย่างหนึ่งของ Sass คือไลบรารี่Compassซึ่งให้คุณใช้สำนวน CSS ทั่วไปจำนวนมากแฮ็กมาตรฐานที่จำเป็นสำหรับเบราว์เซอร์รุ่นเก่าและฟังก์ชัน CSS3 โดยไม่จำเป็นต้องใช้คำนำหน้าเบราว์เซอร์ พูดถึงการสร้าง CSS อัตโนมัติสำหรับรูปภาพสไปรท์

ข้อดีอีกอย่าง - สำหรับฉันอย่างน้อยก็คือ Sass อนุญาตให้ใช้ไวยากรณ์แบบ Python ที่ฉันพบว่าสามารถอ่านได้มากขึ้น


เปรียบได้กับเข็มทิศหรือไม่ ฉันไม่รู้ แต่พวกเขาก็มี Bootstrap ของ Twitter
WraithKenny

พวกมันเป็นสัตว์ร้ายต่างกัน Bootstrap เป็นชุดของการประชุมและวิดเจ็ตในขณะที่ Compass os มีการรวบรวมมิกซ์อินที่นำกลับมาใช้ใหม่ได้
Andrea

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