Gutenberg: Bandingkan pendekatan teknis yang berbeda

Dibuat pada 23 Feb 2017  ·  3Komentar  ·  Sumber: WordPress/gutenberg

Sejauh ini, kami memiliki prototipe teknis ini:

1- https://wordpress.github.io/gutenberg/tinymce-per-block/

  • Multi-TinyMCE
  • Terkendali ( state -> render -> event -> state -> rerender )
  • State direpresentasikan sebagai Object
  • Menggunakan Tata Bahasa

2- https://wordpress.github.io/gutenberg/tinymce-single/ (Tunggal TinyMCE, tidak terkontrol, tidak ada tata bahasa, penguraian HTML)

  • TinyMCE Global Tunggal
  • Tidak terkendali ( state -> render -> event -> newState )
  • Status adalah string sederhana yang berisi seluruh HTML
  • Tidak menggunakan Tata Bahasa di dalam editor tetapi kami mungkin dapat menambahkan komentar tata bahasa saat memanggil tinymce.getContent

(Jangan ragu untuk menambahkan prototipe teknis lainnya di sini)

Saya membuat masalah ini sehingga kami dapat membandingkan pro/kontra setiap pendekatan untuk membantu kami memutuskan pendekatan mana yang kami pilih untuk diterapkan.

[Type] Question

Komentar yang paling membantu

Inilah perasaan saya tentang dua prototipe ini:

Prototipe 1:

Kelebihan:

  • Tampaknya lebih mudah menggunakan Blok di luar konteks editor
  • Saya memiliki preferensi pribadi daripada menjadikan status sebagai Objek, manipulasi eksternal status (tindakan yang tidak ada di dalam TinyMCE) tampaknya lebih mudah dicapai.

Kontra:

  • Pemilihan multi-blok tampaknya mustahil untuk dicapai. Ctrl+A adalah per blok.

Prototipe 2:

Kelebihan:

  • Pilihan multi-blok
  • Lebih mudah untuk mencapai perasaan UI teks lengkap

Kontra

Berdasarkan prototipe eksperimental ini https://github.com/WordPress/gutenberg/pull/113 Saya mencoba mengerjakan pendekatan campuran di mana kami menggunakan TinyMCE sebagai pembungkus tetapi merender kontennya berdasarkan perubahan status. Setelah beberapa eksplorasi, pendekatan ini terasa seperti mencoba membuat ulang DraftJS atau ProseMirror. Dan saya rasa itu bukan cara yang tepat untuk menggunakan TinyMCE.

Semua 3 komentar

Inilah perasaan saya tentang dua prototipe ini:

Prototipe 1:

Kelebihan:

  • Tampaknya lebih mudah menggunakan Blok di luar konteks editor
  • Saya memiliki preferensi pribadi daripada menjadikan status sebagai Objek, manipulasi eksternal status (tindakan yang tidak ada di dalam TinyMCE) tampaknya lebih mudah dicapai.

Kontra:

  • Pemilihan multi-blok tampaknya mustahil untuk dicapai. Ctrl+A adalah per blok.

Prototipe 2:

Kelebihan:

  • Pilihan multi-blok
  • Lebih mudah untuk mencapai perasaan UI teks lengkap

Kontra

Berdasarkan prototipe eksperimental ini https://github.com/WordPress/gutenberg/pull/113 Saya mencoba mengerjakan pendekatan campuran di mana kami menggunakan TinyMCE sebagai pembungkus tetapi merender kontennya berdasarkan perubahan status. Setelah beberapa eksplorasi, pendekatan ini terasa seperti mencoba membuat ulang DraftJS atau ProseMirror. Dan saya rasa itu bukan cara yang tepat untuk menggunakan TinyMCE.

Terima kasih telah membuat tiket ini.

Saat kita membandingkan, kita juga harus memikirkan # 3, karena itu tampaknya tergantung pada pendekatan mana yang kita pilih.

Saya pikir Prototipe 2 adalah jalan yang harus ditempuh, meskipun mungkin lebih merepotkan karena akan melibatkan lebih banyak pekerjaan TinyMCE, pada akhirnya itu mungkin akan menjadi pendekatan terbaik untuk saat ini.

Lebih sulit untuk menggunakan kembali blok di luar editor?

Saya pikir itu tidak akan menjadi penipu untuk Prototipe 2, selama API untuk mendefinisikan Tipe Blok dan tipe Kontrol menyediakan data yang cukup untuk sesuatu selain TinyMCE untuk digunakan. Saya pikir kita harus mengembangkan API yang mendefinisikan Tipe Blok/Tipe Kontrol yang akan digunakan untuk memberi makan instance TinyMCE yang sangat Kustom. Data dari Tipe Blok/Tipe Kontrol juga dapat digunakan untuk memberi makan hal lain yang berpotensi di masa mendatang.

Meskipun mungkin tidak cocok, Prototipe 2 mencerminkan sebagian besar cara kerja WordPress dan TinyMCE melakukan banyak hal, yang bagi saya menjadikannya jalan yang sangat masuk akal ke depan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

mhenrylucero picture mhenrylucero  ·  3Komentar

aaronjorbin picture aaronjorbin  ·  3Komentar

jasmussen picture jasmussen  ·  3Komentar

hedgefield picture hedgefield  ·  3Komentar

bradyvercher picture bradyvercher  ·  3Komentar