Kami telah berbicara beberapa kali tentang komponenisasi REPL. Saya telah berpikir untuk membuat repo yang berbeda untuk meng-host komponen inti ini. Tetapi mengingat bahwa kami telah membuat kompilasi FCS+Fable JS di sini dan kami memerlukan beberapa bagian untuk paket lain (seperti rakitan metadata untuk fable-compiler-js), mungkin lebih mudah jika kami membuat komponen di sini dan menariknya dari repo lain .
Jadi idenya adalah meletakkan di sini:
Fable-compiler/repl harus menarik komponen ini dan menyediakan UI dan perilaku lainnya. Ini juga akan menjadi dasar untuk situs lain yang menyematkan REPL, misalnya untuk membuat tutorial Markdown F# dengan evaluasi hasil.
Seharusnya tidak terlalu rumit untuk membuat infrastruktur, tetapi ini adalah pekerjaan, saya akan mencoba memulai minggu depan, karena saya mungkin (satu-satunya?) orang yang tahu bagaimana menyatukan semua bagian;)
cc @ncave @MangelMaxime @whitetigle @tpetrich
Saya menambahkan @Krzysztof-Cieslak dalam diskusi.
Komponen React untuk editor Monaco untuk kode F#.
Akan tertarik dengan ini juga, saya mencuri banyak kode untuk membuat Monaco bekerja di AST viewer . Meskipun saya bertanya-tanya apakah lebih masuk akal untuk memiliki semacam Fable.Import.Monaco
.
Tolong ping saya jika sudah siap. Saya ingin mengintegrasikan Fable dengan Klipse untuk memungkinkan orang-orang F# menulis posting blog dan tutorial dengan cuplikan kode interaktif.
Ini selesai :) Sekarang rakitan yang diperlukan untuk mengompilasi proyek F# dengan Fable tersedia dalam paket fable-metadata
npm, sementara FCS + Fable yang dikompilasi ke JS sedang dikirimkan dalam fable-standalone
, bersama dengan pekerja web yang dapat disematkan dalam sebuah situs web.
Fable REPL sudah tergantung pada paket-paket ini. Petunjuknya kurang lebih seperti ini:
fable-metadata/lib
dan fable-standalone/dist
ke mana pun Anda menyajikan file statis Anda: contohFable.Standalone
dan Fable.WebWorker
):fable-standalone/src/Interfaces.fs
fable-Standalone/src/Worker/Shared.fs
Mulai pekerja web dengan beberapa info (yang paling penting di mana kumpulan metadata dapat ditemukan).
Periksa file src/App/Main.fs dan lihat pesan pekerja untuk mempelajari cara berinteraksi dengan pekerja.
@alfonsogarciacaro Ini adalah pengerjaan ulang dan penyederhanaan repo yang luar biasa! Tidak sabar menunggu posting blog / tweet :)
Karya luar biasa dari kalian semua
@ncave Tapi Anda tidak memiliki akun Twitter, atau kan? ;) TBH, saya agak khawatir tentang membuat ini terlalu publik karena masih tidak sepele untuk menjalankan kode yang dihasilkan dan saya khawatir jika orang mencoba untuk menanamkan REPL di situs mereka akan ada lebih banyak masalah untuk dipecahkan :/
@alfonsogarciacaro Tentu saja tidak, bukan berarti saya tidak mengikuti ;)
Saya hanya bercanda, siapa pun yang ingin tahu (mungkin) tahu dari mengikuti Anda di GitHub.
Langkah selanjutnya -> ke Bulan! (Maksud saya, proyek F# di REPL, petunjuk jab siku ;)
@viebel Petunjuk untuk mencapainya ada di komentar di atas . Saya dapat membantu Anda untuk mengurangi mereka untuk memanggil fungsi eval (dan mungkin fungsi init di awal) tetapi harap dicatat tanpa webworker pengalaman pengguna tidak akan menyenangkan karena Klipse UI akan membeku saat kompiler sedang memuat atau mengkompilasi.
@alfonsogarciacaro Saya tidak terlalu khawatir tentang pembekuan Klipse UI selama kompilasi, dengan asumsi bahwa dibutuhkan kurang dari 300 msec untuk potongan kode pendek.
Tolong bantu saya mengurangi instruksi menjadi panggilan fungsi init + eval
Menutup karena saat ini kami tidak mengalokasikan sumber daya ke REPL.
Komentar yang paling membantu
@alfonsogarciacaro Tentu saja tidak, bukan berarti saya tidak mengikuti ;)
Saya hanya bercanda, siapa pun yang ingin tahu (mungkin) tahu dari mengikuti Anda di GitHub.
Langkah selanjutnya -> ke Bulan! (Maksud saya, proyek F# di REPL, petunjuk jab siku ;)