Barmene Sorun: Blok İşaretleme Değiştiğinde Ne Olur?

Yayınlanan: 2021-02-27

Son zamanlarda Gutenberg ile geliştirmeye başlayan bir geliştiriciyim. Bir sürü şaşırtıcı fayda ve özellik var, ancak bir sürü dezavantaj, tutarsızlık ve kesinlikle korkunç ve modası geçmiş belgeler de var.

Geliştirici açısından Gutenberg'in en kötü yönlerinden biri blok doğrulaması olmuştur. Aşağıdaki senaryoyu düşünün. Özel (dinamik olmayan) bir JavaScript tabanlı blok oluşturuyorum ve bir CMS düzenleyici bloğu binlerce sayfaya ekliyor. Bloğun işaretlemesini güncellemem gerektiğinde veya gerekirse ne olur?

Varsayılan olarak, tüm bloklar bir geçersizlik durumuna girecek ve sitenin ön yüzüne yansımayacaktır. CMS editörünün binlerce sayfaya girmesi ve bloğun kurtarılmasına izin veren düğmeyi manuel olarak tıklaması gerekir.

Bunu çözmenin bir yolu olarak blok kullanımdan kaldırmalar önerildi, ancak API yetersiz belgelendi, kafa karıştırıcı ve uzun vadede birkaç kullanımdan daha fazlasıyla sürdürülemez hale gelecek gibi görünüyor.

Blok geliştiricilerin doğrulama sürecinden çıkmalarının bir yolu veya blokları kurtarmanın küresel bir yolu olması gerekmez mi?

pijama

Kesinlikle hiçbir şeyi geri tutmuyorsun, PJ. Bunların çoğu, burada Taverna'da ele almayı sevdiğimden biraz daha teknik olsa da, durum hakkında daha fazla bilgi için önde gelen Gutenberg geliştiricilerinden biri olan Riad Benguella'ya ulaşmaya karar verdim.

Cevabına dalmadan önce, sorunuzun bir yönünü biraz düşündüm. Geliştiricilerin eski işaretlemeyi kullanımdan kaldırması ve yeni bir şeye geçmesi gereken zamanlar vardır. Ancak, bu sık sık olmamalıdır. Genellikle, HTML'nin düzenli olarak elden geçirilmesi gerekiyorsa, bu zayıf mimarinin bir işaretidir. Bu aynı zamanda üçüncü bir tarafın stil değişikliklerini sürdürememesi gibi başka sorunlara da yol açar.

Ön uç kod çıktısı veren bloklar veya herhangi bir uygulama türü geliştirirken, bunun bugün ve 10 yıl sonra nasıl görüneceğini düşünmeniz gerekir. Bir kullanıcı bloğunuza stil vermek için bazı özel CSS eklerse ve bloğun HTML yapısı değişirse ne olur? Onların bakış açısından, blok güncellemeniz sitelerini bozdu. Aynı şey, eklentinizi bir şekilde genişleten başka bir eklenti için de söylenebilir.

Herhangi bir tema yazarına, Gutenberg/WordPress'in blok çıktısını değiştirmesinin ne kadar sinir bozucu olduğunu sorun. Son birkaç yılda iyileşmiş olsa da, editör ve ön uç için stil blokları genellikle bir bakım kabusu olmuştur.

Bir geliştirici olarak, her zaman bu değişiklikleri bir kullanıcının bakış açısından yapmanın gerçek dünyadaki sonuçlarını düşünmeye çalıştım. Bu, projenizi yayınladıktan sonra değil, 1. Günden itibaren gerçekleşmelidir.

Bunu yapmak, onu kapıdan ve kullanıcıların eline geçirmeye çalışırken erken projeye zaman kazandırır. Yayın öncesi bir adım geri atmanın yardımcı olduğu yer burasıdır. Bilgisayardan uzak durun. Yürüyüşe çıkmak. Projenizin mimarisini ve uzun vadede ideal olup olmadığını düşünün.

Benguella, "Blok sürüm oluşturma/güncellemeler için, mimari ödünleşimler yapmamız gereken Gutenberg API'lerinin alanlarından biri gerçekten de bu ve kullanıcı deneyimini geliştiricininkine tercih etmeye karar verdik" dedi.

Geliştirme yönteminiz ne olursa olsun, projenin kullanıcı öncelikli deneyim yaklaşımını takip etmek uzun vadede yardımcı olacaktır.

Benguella, "Sorunu doğru bir şekilde anlamak için, blokların nasıl çalıştığını ve düzenlendiğini anlamanız gerekir" dedi. “Blok örnekleri bir JSON nesnesidir ve düzenleyici kullanıcı arayüzü bu JSON'u manipüle eder, ancak geriye dönük uyumluluğu korumak, kullanıcı içeriğinin en okunabilir biçimde korunmasını sağlamak ve web standartlarını mümkün olduğunca benimsemek için blok düzenleyici JSON nesnesini değil, post_content içinde HTML serileştirmesini depolar.

Düzenleyici içeriği yeniden düzenlemek üzere yeniden yüklediğinde, bu serileştirme ayrıştırılır ve JSON'a dönüştürülür. Ayrıştırmanın son aşamalarında, nesnenin nasıl kaydedileceğine ve ayrıştırılacağına karar vermek blok yazarına kalmıştır.

Benguella, "Şimdi, bir kullanıcının kaydedilen HTML'yi (seri hale getirme) değiştirdiğini ve oraya rastgele herhangi bir içerik koyduğunu hayal edin" dedi. “Blok, beklentileriyle (blok yazarı tarafından tanımlananla) eşleşmediği için HTML'yi düzgün bir şekilde ayrıştıramayabilir, bu da, bu JSON nesnesini manipüle etmek için yeniden oluşturmanın bu noktada mümkün olmayacağı anlamına gelir. ”

Bu olduğunda, blok düzenleyici, kullanıcıya bilinçli bir karar vermesi için bir arayüz sağlar. JSON bloğunu "zorla ayrıştırmaya" veya bir HTML veya Klasik bloğa dönüştürmeye çalışabilirler.

WordPress düzenleyicide geçersiz blok çıktısı.
İşaretlemeyi değiştirdikten sonra geçersiz blok.

Bu aynı tür geçersiz kılma, bir eklenti geliştiricisi bloğunu güncellediğinde gerçekleşebilir. Ancak, kaydedilen HTML değişikliği yerine, geliştirici bloğun "beklentilerini" değiştirdi - nasıl kaydedileceğini ve ayrıştırılacağını değiştirerek.

Benguella, "Bu yüzden blok geliştiricilerinden aynı bloğun eski işaretlemesini temsil eden blok kullanımdan kaldırmalarını sağlamalarını istiyoruz" dedi. "Kullanımdan kaldırmalar, aynı blok için geçerli, alternatif kaynaklar olarak da düşünülebilir. Bu, düzenleyicinin yüklendiğinde eski işaretlemeyi ayrıştırmasına ve blokta bir güncelleme yapıldığında yeni işaretlemeyi geri kaydetmesine olanak tanır."

WordPress blok kullanımdan kaldırma belgelerine sahiptir. Ancak, kapsamlı değildir. Gerçek dünyadaki kullanımdan kaldırmaları görmenin en iyi kaynağı Gutenberg'in blok kitaplığına bakmaktır. Kullanımdan kaldırılan blokların bir deprecated.js dosyası vardır.

Benguella, bu sistemin blok yazarları için sinir bozucu olabileceğini söyledi. Bu, özellikle değişiklik yaparken geliştirme ortamında belirgindir. Bu, geliştiricilerin doğrulama algoritmasını devre dışı bırakmak için bir yöntem istemesine neden oldu.

"Şu anda sağlamak istemediğimiz bir şey çünkü yukarıda açıklandığı gibi, işaretleme başka bir nedenle (harici düzenleme, başka bir düzenleyici vb.) değiştiğinde doğrulama da önemlidir" dedi. “Dolayısıyla, kullanıcılar hiçbir şeyin farkında olmadan içerik kaybına neden olabilir. Şu anda tercih, kullanıcı farkındalığına veriliyor.”

Ekip, blok durumunu bozmayan küçük değişikliklere izin vererek doğrulama sistemini zaman içinde geliştirdi. Gelecekteki iyileştirmeler için açık bir bilet de var.