Çocuk
childSağdaki öğeyi soldakinin içine koyar.
nav>ul>li
ul>li*3 yaz, Tab'a bas. Bitti. Emmet, CSS seçicisine
benzeyen kısacık ifadeleri tam HTML ve CSS koduna dönüştüren bir
araç seti. Bu sayıda sözdizimini tek tek söküyor, sonra her şeyi
sıfırdan yazdığım kendi Emmet motorumla canlı deniyoruz.
Emmet, kod editörlerine eklenen bir kısaltma genişletme motorudur. Sen yapının tarifini yazarsın, Emmet kodunu yazar.
CSS seçici sözdizimine benzeyen kısa ifadeleri (abbreviation) anında eksiksiz HTML, XML veya CSS koduna dönüştüren; ayrıca etiket sarmalama, eşleşen etikete gitme, sayı artırma gibi düzenleme komutları sunan açık kaynaklı araç seti.
Bir web geliştiricisi CSS yazarken zaten nav ul li a gibi seçicilerle
düşünür. Emmet bu tanıdık dili tersine çevirir: seçici HTML'i
seçmek yerine HTML'i üretir.
nav > ul > li.active { color: tomato; }
Onlarca satırlık iskelet birkaç karakterle oluşur. Tekrarlı yapılarda (menü, tablo, kart listesi) kazanç katlanarak artar.
Kapanış etiketini unutmak, yanlış iç içe geçirmek, tırnak kaçırmak imkânsız hâle gelir — kodu insan değil motor yazar.
Parmaklar < / > ile boğuşmaz; zihin yapının kendisine, yani ne kurduğuna odaklanır.
Aynı sözdizimi VS Code'da, WebStorm'da, Sublime'da, CodePen'de çalışır. Bir kez öğren, her yerde kullan.
Bir blog fikri olarak başlayan proje, bugün neredeyse her editörün içinde.
HTML'i CSS seçicileriyle tarif etme fikri Vadim Makeev'in yazısıyla ortaya çıkar. Sergey Chikuyonok bu fikri Zen Coding adıyla çalışan bir araca dönüştürür.
Smashing Magazine'de yayımlanan tanıtım yazısıyla Zen Coding geniş kitlelere ulaşır; TextMate, Aptana, Notepad++ gibi editörler için eklentiler çıkar.
Kapsamı büyüyen proje yeniden yazılır ve Emmet adını alır. Sadece kısaltma değil; etiket sarmalama, eşleşen etikete atlama, görsel boyutu güncelleme gibi komutlar da eklenir.
Microsoft, modüler hâle getirilen Emmet 2.0'ı Visual Studio Code'a varsayılan olarak entegre eder. Artık kurulum gerekmez; HTML dosyası açmak yeterli.
Açık kaynak emmet npm paketi; VS Code, JetBrains IDE'leri, Sublime Text, Vim, CodePen ve daha fazlası. JSX, Vue, PHP, Pug gibi dillerde de çalışır.
Emmet'in bütün gücü bir avuç sembolde. Aşağıdaki her çıktı, bu sayfada çalışan motor tarafından canlı üretiliyor — elle yazılmadı. Kartın altındaki Dene'ye bas, playground'da oyna.
Sağdaki öğeyi soldakinin içine koyar.
nav>ul>li
Öğeleri aynı seviyede, yan yana dizer.
header+main+footer
Bir seviye yukarı çıkar. ^^ iki seviye çıkar.
div>p>span^h2
Öğeyi N kez tekrarlar.
ul>li*4
Alt ağaçları paketler; ^'e gerek bırakmaz, grup da çarpılabilir.
(dt+dd)*2
Öğeye id verir. Etiket yazılmazsa div varsayılır.
#app>section#hero
Bir ya da birden çok class ekler — zincirlenebilir.
button.btn.btn-primary
İstediğin özniteliği yazar. Boşluklu değer için tırnak kullan.
a[href=# title="Ana sayfa"]
Öğenin içine metin yazar.
h1{Merhaba Dünya}
$ sıra no, $$ sıfır dolgulu, $@- ters, $@5 5'ten başlar.
ul>li.item$$*3
Etiket adını yazmazsan Emmet bağlama göre tahmin eder: ul içinde li, table içinde tr, tr içinde td, satır içi öğede span, diğer her yerde div.
| Kısaltma | Çıktı |
|---|
Yaz, anında gör. Bu araç hiçbir harici kütüphane kullanmıyor; kısaltmayı önce ayrıştırıp bir ağaca (AST) çeviren, sonra HTML üreten ~600 satırlık kendi motorumla çalışıyor.
Emmet bir CSS dosyasında da çalışır: özellik adlarının baş harflerini ve değeri
yaz, gerisini o tamamlasın. Birden fazla özelliği + ile bağla.
Aşağıdaki kutu, ürettiğin CSS'i canlı uyguluyor.
| Kısaltma | Çıktı | Kısaltma | Çıktı |
|---|
Birim kısayolları: tam sayı → px, p → %, e → em, x → ex. Sona ! eklersen !important olur. Renkte #f → #fff, #3a → #3a3a3a.
Gerçek editörde Emmet böyle çalışır: imlecin solundaki kısaltmayı bulur, Tab'a basınca yerine kodu koyar. Aşağıdaki editör bunu birebir simüle ediyor. Bir satıra kısaltma yaz ve Tab'a bas.
VS Code'da metni seç → Ctrl+Shift+P →
Emmet: Wrap with Abbreviation. Sayı verilmemiş *,
her satır için bir tekrar üretir.
Beş gerçekçi senaryo, karakter karakter ölçüldü. Gri çubuk elle yazılması gereken HTML (girintisiz), renkli çubuk Emmet kısaltması + Tab. Değerler motor tarafından sayfa yüklenirken hesaplanıyor.
Hedef HTML'i üreten Emmet kısaltmasını yaz. Birden fazla doğru cevap olabilir — motor senin kısaltmanı genişletip çıktıyı hedefle karşılaştırıyor.
Emmet'in güzelliği taşınabilirliği: bir kez öğrendiğin sözdizimi her yerde aynı.
HTML, CSS, JSX, Vue dosyalarında hazır. Öneri listesinden seç ya da Tab.
PhpStorm, IntelliJ dâhil tüm JetBrains IDE'lerinde Tab ile genişletme.
HTML ve CSS panellerinde Emmet varsayılan olarak açık; tarayıcıdan dene.
Package Control → Emmet paketi. Resmî eklenti Sergey Chikuyonok'tan.
emmet-vim eklentisi; varsayılan tetik Ctrl+Y ardından ,
Eklenti yöneticisinden kurulur; Zen Coding döneminden beri desteklenir.
emmet.triggerExpansionOnTab — Tab ile genişletmeyi garanti eder.emmet.includeLanguages — Emmet'i başka dillere (PHP, JS) açar.emmet.showExpandedAbbreviation — öneri listesinde önizleme.emmet.syntaxProfiles — çıktı biçimini (ör. self-closing />) ayarlar.{ "emmet.triggerExpansionOnTab": true, "emmet.showExpandedAbbreviation": "always", "emmet.includeLanguages": { "javascript": "javascriptreact", "php": "html" }, "emmet.syntaxProfiles": { "html": { "self_closing_tag": true } } }
ul > li * 3ul>li*3Boşluk yok. Emmet boşluğu kısaltmanın sonu sayar; boşluk sadece {metin} ve tırnaklı öznitelik içinde serbesttir.
div>p>a^^^^section(div>p>a)+sectionÇok fazla ^ yerine grup. Parantez, karmaşık yapıları okunabilir tutar.
<div class="box"> (JSX)<div className="box">JSX'te Emmet class yerine otomatik className üretir — yeter ki includeLanguages ile javascriptreact eşlemesi açık olsun.
img*20 elleimg[src=foto$$.jpg]*20$ her yerde çalışır — class'ta, id'de, öznitelik değerinde, metinde, hatta etiket adında: h$*6.
p{Lorem ipsum dolor…}p*3>lorem20Yer tutucu metin için lorem (30 kelime) ya da loremN (N kelime).
Kısaltmayı ezberlemekSeçici gibi düşünmekEmmet bir dil değil, bir alışkanlık. CSS seçicisi biliyorsan Emmet'in %80'ini zaten biliyorsun.
Emmet, web geliştirmenin en sıkıcı kısmını — tekrar eden işaretleme yazmayı — birkaç karakterlik bir düşünceye indirger. Öğrenme maliyeti bir öğleden sonra, kazancı ise her gün. Ve en güzeli: CSS seçicisi bilen herkes zaten yarı yolda.
Resmî belgeler: kısaltma sözdizimi, eylemler, yapılandırma.
Tüm HTML ve CSS kısaltmalarının resmî listesi.
VS Code'un Emmet entegrasyonu ve tüm ayarları.
Emmet çekirdeğinin açık kaynak kodu (MIT lisansı).
Proje tanıtımı ve editör eklentileri listesi.
JetBrains IDE'lerinde Emmet kullanımı.