Vue CLI CSS ön işlemci seçeneği: dart-sass VS düğüm-sass?


109

CLI (v3.7.0) ile yeni bir proje oluştururken, dart-sassveya node-sassderleyici arasında seçim yapma seçeneği vardır .

Vue belgelerinde belirtilenden daha spesifik olmak üzere bunlar birbirleriyle nasıl karşılaştırılır ?

Sass Performansı Üzerine Bir İpucu

Dart Sass kullanılırken, zaman uyumsuz geri aramaların ek yükü nedeniyle senkronize derlemenin varsayılan olarak eşzamansız derlemeden iki kat daha hızlı olduğunu unutmayın. Bu ek yükü önlemek için, eşzamanlı kod yolundan eşzamansız ithalatçıları çağırmak için lifler paketini kullanabilirsiniz. Bunu etkinleştirmek için, fiberleri bir proje bağımlılığı olarak kurmanız yeterlidir:

npm install -D fibers

Yerel bir modül olduğu için, işletim sistemine ve derleme ortamına göre uyumluluk sorunları olabileceğini lütfen unutmayın. Bu durumda npm uninstall -D fiberssorunu çözmek için lütfen çalıştırın .

? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): (Use arrow keys)
❯ Sass/SCSS (with dart-sass)
  Sass/SCSS (with node-sass)
  Less
  Stylus

2020/01 DÜZENLEME: Vue CLI 4.2.2 yeni proje oluşturma hala daha dart-sassönce ilk seçenek olarak öneriliyornode-sass . Yine de burada node-sassdaha performanslı bir seçim olduğu tespit edilmiştir ve neredeyse hiç kimse dart sass (ccleve'in yorumu) kullanmaz.

DÜZENLEME 2020/09: As Ali Bahrami yaptığı kapsamlı cevabı güncellenen, dart-sasstercih edilen bir seçimdir olarak node-sasskullanım dışı olarak işaretlenmiş ediliyor .

Çok kötü dart-sassİçinde JS-derlenmiş sürümü zayıf performansa sahiptir var. Ancak, geliştiricileri bunun farkındadır ve bu sayıda belirtildiği gibi daha yüksek performans için çalışmaktadır .


4
Şubat 2020 itibariyle, hiç kimse dart-sass kullanmıyor gibi görünüyor: npmtrends.com/dart-sass-vs-node-sass . Haftada 3,5 milyon indirme, dart için 16.000.
ccleve

3
@ccleve Bunun nedeni, en yoğun kullanılan dart-sass dağıtımının, şu anda Mayıs 2020 itibarıyla
sebu

1
Npm'de neden iki dart sass uygulaması olduğunu merak ediyorum. sass şu anda en yenisi, v 1.26.5'te, dart-sass ise 1.25'te . Ne olursa olsun düğüm-sass, bu ikisini bir araya getirerek cüceleştirmeye
orionrush

Yanıtlar:


113

Güncelleme 09/17/2020 :

Bu cevap her geçen gün artıyor, belki de bu konuya daha derin dalmaya değer diye düşündüm.


Düşünüldüğünde küstahlık-lang web sitesi :

Dart Sass, Sass'ın birincil uygulamasıdır, yani başka herhangi bir uygulamadan önce yeni özellikler alır. Hızlıdır, kurulumu kolaydır ve saf JavaScript ile derlenir , bu da modern web geliştirme iş akışlarına entegre etmeyi kolaylaştırır.

Dart-Sass hızlıdır, ancak JS'nin derlenmiş versiyonu değildir . Pratik olarak Dart-Sass dediğimizde iki seçenek vardır:

  • Dart-VM'de Dart-Sass
  • Dart-Sass on NPM üzerinde saf JS derlenmiş versiyonu

Bootstrap 4 Sass dosyasını Node-Sass, Dart-Sass ve Dart-Sass (JS) ile CSS'ye derledim ve aşağıdaki sonucu görebilirsiniz:

Node-Sass ve Dart-Sass karşılaştırması - kaynak: https://itnext.io/the-css-preprocessor-dilemma-node-sass-or-dart-sass-32a0a096572?source=friends_link&sk=3c465b78a0e1bc98379afd818546fcf4

  • Bu özel durumda, iki saniye çok önemli değil; ancak Dart-Sass'ın (JS), Dart-Sass'tan (Dart VM) dokuz kat ve node-sass'tan üç kat daha yavaş olduğunu düşünün.
  • +20 temalı bir projem vardı, node-sass ile 30 saniye sürdü ama Dart-Sass (JS) kullanmaya çalıştım ve bir asır sürdü!
  • Dart-Sass (Dart VM) en hızlısı olmasına rağmen, onu kurmak veya entegre etmek biraz zor.
  • Ve Node-Sass kullanımdan kaldırılmış kabul edilir .

Burada blog yazdım , buradan daha fazla bilgi edinebilirsiniz.


1
Son satırda, dart-sassdaha hızlı mı demek istiyorsun ?
Saksham

1
Üzgünüm, başka bir cevaba yorum yapmak istedim, bir şekilde yanlış cevap
yazmış olmalıyım

6

node-sass, dart-sass'tan daha hızlı olabilir, ancak bu dart-sass yazılırken, @usekuralı uygulayan tek kitaplıktır ve şiddetle tavsiye edilir @import. Resmi sass-lang web sitesine göre :

Neyin Yanlış @import? @importKural ciddi sorunların bir numarası vardır:

  • @importtüm değişkenleri, karışımları ve işlevleri küresel olarak erişilebilir hale getirir. Bu, insanların (veya araçların) herhangi bir şeyin nerede tanımlandığını söylemesini çok zorlaştırır.

  • Her şey küresel olduğu için, kitaplıkların ad çakışmalarını önlemek için tüm üyelerine önek olması gerekir.

  • @extend kurallar da küreseldir, bu da hangi stil kurallarının genişletileceğini tahmin etmeyi zorlaştırır.

  • Her stil sayfası çalıştırılır ve her düzenlendiğinde CSS'si yayınlanır @import, bu da derleme süresini artırır ve şişirilmiş çıktı üretir.

  • Alt yöndeki stil sayfalarına erişilemeyen özel üyeleri veya yer tutucu seçicileri tanımlamanın bir yolu yoktu.

Yeni modül sistemi ve @usekural tüm bu sorunları ele almaktadır.

Ayrıca, @importolacak zaman içerisinde terk önümüzdeki birkaç yıl içinde ve sonunda tamamen dilden kaldırıldı.

Sass'taki en iyi uygulamalardan haberdar olmak için şimdilik dart sass (yani sass ) kullanmalısınız.


1
Ayrıca, dart-sass ve node-sass arasındaki popülerliğin karşılaştırılması, çoğu insanın her ikisi de Dart Sass dağıtımları olan dart-sass yerine sass kullandığı düşünüldüğünde son derece samimiyetsizdir .
rasnauf

Çok ilginç @rasnauf, bunu işaret ettiğiniz için çok teşekkürler! Büyük kütüphanelerin .scss dosyalarını içe bazı projelerle, yavaş bir .scss dosyaya bile küçücük bir değişiklik yapmak ve ben yaklaşık okuduklarıma için ... tüm dosyalar yeniden almak olduğunu beklemek zorunda için özenle olmuştur @useşuna nokta, bu, dev yaparken artımlı derlemelerle yeniden inşa sürelerini önemli ölçüde iyileştirebilir :)
ux.engineer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.