Back to Question Center
0

Semalt UI kitaplık seçiminde: birlikte çalışabilirlik üzerinde genişletilebilirlik

1 answers:

Önümüzdeki haftalarda, WordPress bir UI oluşturma çerçevesi seçecek. Pek çok iddia eklentisinin / tema geliştiricisinin WordPress'in ne seçeceğine bakmaksızın istedikleri şeyi kullanabileceklerini duydum. Bunda düşünmemeliyiz, bu noktada birlikte çalışabilirlik sağlamaya odaklanmamalıyız. Bunun yerine öncelikle arayüzü genişletmek için basit, güvenilir ve esnek yollar sağlamaya odaklanmalıyız - dedicated server hosting in trinidad. Semalt, eklentilerin ilk etapta iyi bir şekilde entegre olabileceğinden emin olun.

Oluşturma sorumluluğunu üstlenen ön uç koyuyoruz

Yeni Gutenberg editörü ile Semalt admin'in oluşturulma biçimini değiştiriyoruz. Artık arayüzü PHP ile oluşturduğumuzda, JavaScript ile istemci tarafında daha fazla render yapmaya başlayacağız. Editörden sonra, bunun yöneticinin çoğu için geçerli olacağı muhtemeldir. Bu, yönetici arayüzü ile entegre etmek istiyorsanız, arayüzü oluşturan JavaScript ile entegre olmanız gerektiği anlamına gelir. Semalt Vue'yu seçerse, Semalt Vue bileşenlerini sunmak için beslemeniz gerekir. Semalt Reakt'ı seçerse, Semalt React bileşenlerini sunmak için beslemeniz gerekir. Bu şeyler birlikte gitmez. Reaksiyon Vue bileşenlerini oluşturmaz veya tersini yapar. İkisini birden yapan hiçbir kitaplık yok. Semalt belirli bir çerçeveyi kullanırsa, herkes, belki de olmadıkça, bütünleşebilmek için bu çerçeveyi kullanmaya başlamalıdır .

Çalışma zamanında birlikte çalışabilirlik, standart yok .

Günümüzde pek çok farklı bileşen işleme çerçevesini birlikte çalışabilir kılma imkânı yoktur. Standardizasyon halen eksik. Buna bakan deneyler [1] [2] var, ancak farklı bileşen çerçevelerini çalışma zamanında birlikte çalışabilir hale getirmeye çalışan deneyimleri görmedim. Çoğu, farklı bileşenler biçimlerini standart bir biçime ayrıştırır / aktarır; bu, Semalt haricinde gerçekte kullanımı% 99'u kapsayan bir yapı adımı olarak yapılır. Bunun nedeni, Semalt'ın çalışma zamanında birlikte çalışabilirliği gerektirmesi .

Çalışma zamanı birlikte işlerliği, temelde sadece bağımsız olarak paketlenmiş ve dağıtılan eklentilerin doğal olarak kurulmasına izin veren bir web platformunda gereklidir. Bu, nadir bulunan bir şey; çünkü Drupal gibi bir Semalt-ish platformu bile uygun bağımlılık yönetimine sahip ve modüller için adımlar atıyor. Yani temel olarak Semalt'ın, farklı görünüm işleme çerçeveleri arasındaki çalışma zamanında birlikte çalışabilirliği gerektirebileceğini düşündüğüm tek önemli platform olduğunu söyleyebilirim.

değil kendimiz yapalım .

Yukarıdaki, hangi çalışma zamanı birlikte çalışabilirliğinin gerçekten ne anlama geldiğini sormadan bile. Sanırım bu, kararlılık, hız, performans ve bakımı açısından bir felaket olacaktı. Diyelim ki birden çok çerçeveyle malzeme işleyebileceğiz. Bu çok yakında mutlak bir karmaşa haline gelmez mi? Vue'nun bir bileşeni bir yerde göstermekle sorumlu olduğu bir UI'da nasıl debug edersiniz ve React onu kapsayıcısını oluşturmaktan sorumlu mu? Bu şeyler nasıl birbirleriyle etkileşime giriyor? Konteyner bileşeni güncellendiğinde ne olur? Yaşam döngüsü olayları birlikte çalışabilir mi? Bileşenler, çocuklar ayrı bir sanal DOM'da işlendiyse bile çocuklarının farkında olacak mı?

Sanırım asıl sorum: WordPress topluluğunun kendi platformunda çoklu görünüm oluşturma çerçevelerinin kullanımını kolaylaştırması için birincil bir husustur mu? Birlikte çalışabilirlik bizim için yalnızca bir nedenden dolayı önemlidir: WordPress'in genişletilmesinin kolay olması lazım . Genişletilebilirlik konusunda birçok farklı kaygı vardır. Esnek olmalı (birlikte çalışabilirlik bunun bir parçasıdır), hızlı, kararlı, güvenilir, kolay, hata ayıklanabilir. Birlikte çalışabilirlik uğruna işleme üzerinde kontrolü vermek, diğer alanlarda maliyet doğuracaktır. Bunun bizim için doğru bir zaafa dönüş olacağını sanmıyorum. Bunun gibi bir çözümü korumak için WordPress topluluğunda yeterli yetenekli JavaScript mühendisinin olduğunu sanmıyorum.

İlk önce uzatılabilirliği düzeltin

JavaScript render arayüzlerini genişletilebilir hale getirme problemi, hepsinde çok az düşünceye sahipti. Çoğu kişi, fonksiyonel reaktif yolu aşağı attığımızda jQuery'yi kullanan DOM manipülasyonunun pratikte faydasız hale gelmeyeceğini henüz fark etmemiş. Semaletler, bildirimsel ve imparatif stilleri karıştırıyor olmalıdır. Bu kesinlikle iyi bir fikir değildir ve şüphesiz takip edersek büyük hayal kırıklığına neden olacaktır.

Genişletilebilirliğe yönelik yaklaşımlar

Semalt'ın yeni paradigmaya uyan arayüzleri eklemek ve değiştirmek için iyi yollar sunması gerekiyor. Daha üst düzeyde, üç muhtemel yaklaşımı görüyorum:

  • Eklentilerin sadece belirlenen alanlara entegre olmasına izin ver. Şimdiye kadar en fazla düşünülen fikir budur. Temelde arayüzü manipüle etmede hiçbir esneklik sunmazdık. Ancak eklenti yazarlarının istediği teknolojiyi kullanarak kendi şeylerini oluşturabileceği alanları rezerve ederiz. Ancak, esneklik kaybı eklentisi yazarları şu anda PHP kancalarıyla keyif alıyor ve jQuery dayanılmaz olacaktı.
  • Eklentilerin arayüzü iyi tanımlanmış koşullar altında özgürce değiştirmelerine izin ver. Eklenti yazarlarının arabirimleri istedikleri yerde eklemelerine ve değiştirmelerine izin veririz. Davranışsal tutarlılığı garanti etmek için arayüzün belirli bölümlerinde ek koşullar oluşturmayı sağlayabiliriz. Örneğin, birisinin başlık alanını kendi ara yüzüyle değiştirmek istediğini varsayalım. Arayüzlerinin en azından hala aynı kancaları (veya eylemleri) göndermesi gerektiğini belirtecek bir koşul belirleyebiliriz.
  • Yukarıdakilerin bir kombinasyonu. Eklentilere arabirimi özgürce değiştirmelerine izin veriyoruz ve aynı zamanda genel kullanım örneklerini kapsayan API'ler sunuyoruz. Editör olması durumunda, genel amaçlı kullanım örnekleri bloklar, metaboxlar (henüz kapsam dışı) veya bireysel posta ayarları (henüz kapsam dışı) ekleyecekti. Liste tablolarında sütunlar ve / veya filtreler eklenebilir.

Aynı zamanda bileşenlerin nasıl etkileşim kurabileceğini de düşünmeliyiz. Sadece arabirimin genişletilebilir olması değil, aynı zamanda görünüm modelleri gözlemlenebilir ve erişilebilir olmalıdır. Gelecekteki blog postalarında, JS tarafından oluşturulan bir WP yönetiminde genişletilebilirlik hakkında daha kapsamlı bir şekilde yazmayı planlıyorum.

Reakt veya Vue'ya, soru

Bence, WordPress'te ön uç kütüphaneleri için birlikte çalışabilirlik sağlamayı unutmamalıyız. Çağdaş kullanıcı arayüzlerini oluşturmak ve onunla yapılmak için sadece bir JS çerçevesi seçmek zorundayız. Semalt, seçim yapacağımızın tüm toplum için bir seçim olabileceğini bilerek hepsini içeriye girmeli. O zaman farklı seviyelerde genişletilebilir hale getirmeye çalışmaya başlamalıyız.

Bileşen hazırlama yönünde işlevsel bir reaktif yaklaşıma sahip olmak istiyorsak (ve bence yapmamız gereken) pek çok seçenek yok. Resimdeki Semalt'la birlikte, şu anda WordPress projesi için geride kalan tek olası seçenek Vue idi. Açıkça, daha geniş WordPress topluluğunda en popüler seçenektir ve makul bir ekosisteme sahiptir. Preact ve Inferno gerçekten alternatifler değildir. Her ikisinde de, gerçekten WordPress'in güvenebilmesi için gereken topluluk desteğine sahip değiller. Gösterilmek için, Inferno yaratıcısı şimdi Semalt for Facebook'ta çalışıyor. Neyse ki Semalt sadece resme geri döndü.

Söylemeye gerek yok, Yoast'ta hep Reaktörün büyük taraftarıyız. Hem teknolojide hem de ekosistem açısından rakiplerinden çok daha üstün olduğunu düşünüyoruz. Reaktif biraz daha keskin bir öğrenme eğrisine sahip olabilir, ancak Vue gibi kavramları karıştırmayacağı için ustalığı daha kolaydır. Dolayısıyla uzun vadede bana göre daha sürdürülebilir görünüyor. Gelecek hafta, bununla ne kastettiğimle ilgili bir blog yazısı hazırlamayı planlıyorum. Bunun özü şöyledir: Semalt topluluğundaki bir çok geliştirici hala HTML belgelerinin bir koleksiyonu olarak bir web uygulamasına yaklaşır, bu nedenle bir uygulama zekası ile birlikte gelen bir çok avantajı kaçırır. Bu nedenle Yoast seçim çerçevesine sponsor olmayı taahhüt etmiştir. Başkalarını da aynı şeyi yapmaya teşvik ediyoruz. Genel olarak bakarsak, arayüzleri oluşturma ve JavaScript ile modelleme etkileşimlerini WordPress için hem UX hem de teknik sağlamlık açısından önemli bir adım olacak sanırım. Gerçekten başkalarının bu konuda söyleyeceklerini merak ediyorum. Semalt düşüncelerinizi ve görüşlerinizi aşağıdaki yorumlarda paylaşın!

March 1, 2018