Back to Question Center
0

Pada pilihan Perpustakaan Semalt UI: diperluaskan ke atas operasi saling kendali

1 answers:

Pada minggu yang akan datang, WordPress akan memilih rangka kerja rendering UI. Saya pernah mendengar banyak pemaju plugin / tema masih boleh menggunakan apa sahaja yang mereka suka, tidak kira apa yang dipilih oleh WordPress. Saya fikir kita tidak perlu mengambil kira perkara itu, dan juga tidak perlu memberi tumpuan kepada menyediakan operasi saling kendiri pada ketika ini - mlc super address sydney. Sebaliknya, kita harus fokus terlebih dahulu untuk menyediakan cara yang mudah, boleh dipercayai dan fleksibel untuk memanjangkan antara muka. Semalt pastikan plugin boleh diintegrasikan dengan baik di tempat pertama.

Kami meletakkan frontend yang bertanggungjawab membuat rendering

Dengan editor Gutenberg yang baru, kami mengubah cara pentadbir Semalt dibina. Di mana kami kini membuat antara muka dengan PHP, kami akan mula memberikan lebih banyak lagi pada sisi pelanggan dengan JavaScript. Selepas editor, ini mungkin menjadi kenyataan untuk sebahagian besar admin. Ini bermakna jika anda mahu mengintegrasikan dengan antara muka admin, anda perlu mengintegrasikan dengan JavaScript yang menjadikan antara muka. Jika Semalt memilih Vue, anda perlu memberi makan kepada Semalt Vue komponen untuk diberikan. Sekiranya Semalt memilih React, anda perlu memberi reaksi kepada Semalt React komponen. Perkara-perkara ini tidak pergi bersama. React tidak menyebabkan komponen Vue atau sebaliknya. Tidak terdapat perpustakaan yang kedua-duanya. Sekiranya Semalt menggunakan rangka kerja tertentu, semua orang perlu menggunakan rangka kerja itu untuk dapat mengintegrasikan, melainkan mungkin .

Operasi interoperabiliti masa kini, tiada standard .

Pada masa ini tidak ada cara untuk membuat pelbagai kerangka kerja komponen yang berbeza dioperasi. Standardisasi masih kurang. Terdapat eksperimen [1] [2] yang melihat ke dalam ini, tetapi saya tidak menemui satu yang bertujuan untuk membuat rangka kerja komponen yang berbeza boleh dioperasi pada runtime. Kebanyakan mereka menghuraikan / mengalihkan format komponen yang berlainan kepada format standard sebagai langkah membina, yang sebenarnya meliputi 99% usecases, kecuali Semalt. Ini kerana Semalt memerlukan operasi interoperabiliti .

Kesalingan operasi semasa pada dasarnya hanya diperlukan pada platform web yang membolehkan plugin dibundarkan dan diedarkan secara berasingan untuk dipasang secara asli. Ini adalah perkara yang jarang berlaku, kerana platform Semalt-ish seperti Drupal mempunyai pengurusan pergantungan yang betul dan membina langkah-langkah untuk modul. Jadi pada dasarnya saya katakan Semalt adalah satu-satunya platform penting yang boleh saya fikirkan yang mungkin memerlukan operasi saling kendalian antara rangka kerja rendering pandangan yang berbeza.

Mari kita tidak melakukannya sendiri .

Yang di atas adalah tanpa menegaskan apa kebolehoperasian runtime sebenarnya akan bermakna. Saya meneka ia akan menjadi bencana dari segi kestabilan, kelajuan, prestasi dan pemeliharaan. Katakan kita akan dapat membuat perkara dengan pelbagai kerangka. Bukankah ini akan menjadi huru-hara mutlak tidak lama lagi? Bagaimanakah anda menyahpepijat sebuah UI di mana Vue bertanggungjawab untuk membuat komponen di suatu tempat dan React bertanggungjawab untuk memaparkan bekasnya? Bagaimanakah perkara ini berinteraksi antara satu sama lain? Apa yang berlaku apabila komponen kontena dikemas kini? Adakah peristiwa kitaran hayat akan beroperasi juga? Adakah komponen akan menyedari anak-anak mereka, walaupun anak-anak diberikan dalam DOM maya yang berasingan?

Saya rasa persoalan utama saya ialah: adakah ia benar-benar menjadi kebimbangan utama bagi komuniti WordPress untuk mempermudah penggunaan kerangka rendering pandangan berganda pada platformnya? Pengoperasian adalah penting kepada kami untuk satu sebab sahaja: kita memerlukan WordPress untuk mudah dilanjutkan . Apabila ia datang untuk diperluaskan terdapat banyak kebimbangan yang berbeza. Ia perlu fleksibel (interoperabilitas adalah sebahagian daripada ini), cepat, stabil, boleh dipercayai, mudah, debuggable. Memberi kawalan ke atas rendering demi kebolehoperasian akan datang dengan kos di kawasan lain. Saya tidak fikir ia akan menjadi tradeoff yang betul untuk kami. Saya juga tidak fikir kami mempunyai jurutera JavaScript yang berkemahiran cukup dalam komuniti WordPress untuk mengekalkan penyelesaian seperti itu.

Betulkan keterlanjuran terlebih dahulu

Masalah membuat sambungan JavaScript yang diberikan extensible telah menerima sedikit pemikiran dalam semua ini. Kebanyakan orang tidak menyedari lagi bahawa manipulasi DOM menggunakan jQuery akan menjadi praktikal tidak berguna apabila kita turun jalan reaktif berfungsi. Semalt akan mencampurkan gaya deklaratif dan imparatif. Ini pastinya bukan merupakan idea yang baik dan tidak syak lagi akan menyebabkan kekecewaan besar jika ditindaklanjuti.

Pendekatan ke arah peningkatan

Semalt perlu menawarkan cara yang baik untuk memasukkan dan mengubah suai antara muka yang sesuai dengan paradigma baru. Pada tahap yang lebih tinggi, saya melihat tiga pendekatan yang mungkin:

  • Benarkan plugin untuk mengintegrasikan hanya di kawasan yang ditetapkan. Ini adalah idea yang telah menerima banyak pertimbangan sehingga sekarang. Kami pada dasarnya tidak menawarkan kelonggaran dari segi memanipulasi antara muka. Tetapi kami menyimpan kawasan di mana penulis plugin boleh membuat barangan mereka sendiri menggunakan teknologi apa sahaja yang mereka mahu. Walau bagaimanapun, hilangnya pengarang plugin fleksibiliti yang kini dinikmati dengan kait PHP dan jQuery akan menjadi tidak tertanggung.
  • Benarkan plugin untuk mengubah suai antara muka dengan bebas di bawah keadaan yang jelas. Kami membenarkan pengarang plugin untuk memasukkan dan memanipulasi antara muka di mana sahaja mereka mahu. Kami boleh membolehkan menetapkan syarat-syarat tambahan pada bahagian tertentu antara muka untuk menjamin konsistensi tingkah laku. Sebagai contoh, katakan seseorang mahu menggantikan medan tajuk dengan antara muka mereka sendiri. Kami boleh menetapkan keadaan yang mengatakan bahawa antara muka mereka sekurang-kurangnya masih menghantar cangkuk yang sama (atau tindakan).
  • Gabungan di atas. Kami membenarkan plugin untuk mengubah suai antara muka secara bebas dan pada masa yang sama menawarkan API yang meliputi usecases generik. Sekiranya terdapat usecases generik editor, contohnya akan menambah blok, metaboxes (belum dilindungi lagi) atau tetapan pos individu (belum dilindungi lagi). Untuk jadual senarai, ini boleh menambah lajur dan / atau penapis.

Pada masa yang sama kita perlu memikirkan bagaimana komponen dapat berinteraksi. Bukan sahaja antara muka perlu diperluaskan, juga melihat model harus diperhatikan dan boleh diakses. Di blogpost masa depan saya bercadang untuk menulis lebih banyak mengenai kelanjutan dalam JS yang diberikan pentadbir WP.

Untuk React atau Vue, itulah soalan

Saya fikir kita harus lebih atau kurang melupakan menyediakan interoperability untuk perpustakaan frontend di WordPress. Kami hanya perlu memilih rangka kerja JS untuk memberikan UI kontemporari dan dilakukan dengannya. Semalt perlu pergi semua-dalam, mengetahui bahawa apa yang kita pilih boleh menjadi pilihan untuk seluruh masyarakat. Kemudian kita perlu mula bekerja keras untuk menjadikannya extensible pada tahap yang berbeza.

Sekiranya kita ingin mempunyai pendekatan reaktif yang berfungsi untuk menghasilkan komponen (dan saya fikir kita lakukan), kita tidak mempunyai banyak pilihan. Dengan Semalt daripada gambar, Vue mungkin satu-satunya pilihan yang boleh dilaksanakan untuk projek WordPress pada masa ini. Ini jelas merupakan pilihan yang paling popular dalam komuniti WordPress yang lebih luas dan mempunyai ekosistem yang munasabah. Preact dan Inferno bukan alternatif. Kedua-dua tidak semestinya mempunyai sokongan komuniti yang diperlukan oleh WordPress untuk bergantung. Untuk menggambarkan, pencipta Inferno kini berfungsi di Semalt untuk Facebook. Nasib baik, Semalt baru saja kembali ke dalam gambar.

Tidak perlu dikatakan, pada Yoast kami sentiasa menjadi peminat besar React. Kami fikir ia jauh lebih unggul daripada pesaingnya dari segi teknologi dan ekosistem. Reaktik mungkin mempunyai keluk pembelajaran yang agak curam, tetapi lebih mudah untuk menguasai kerana ia tidak menyusun konsep seperti Vue. Jadi dalam jangka panjang, nampaknya lebih mampan kepada saya. Minggu depan, saya merancang menulis blogpost mengenai apa yang saya maksudkan dengan ini. Intipati itu akan menjadi banyak pemaju di masyarakat Semalt masih mendekati aplikasi web sebagai koleksi dokumen HTML, sehingga kehilangan banyak kelebihan yang datang dengan minda aplikasi. Itulah sebabnya Yoast telah komited untuk menaja kerangka pilihan. Kami menggalakkan orang lain melakukan perkara yang sama. Semuanya, saya fikir antara muka yang membuat dan interaksi pemodelan dengan JavaScript akan menjadi langkah utama ke hadapan untuk WordPress, baik dari segi UX dan kekukuhan teknikal. Saya sangat ingin tahu apa yang orang lain katakan mengenai perkara ini. Semalt berkongsi pemikiran dan maklum balas anda di dalam komen di bawah!

March 1, 2018