Alat ini sedang dalam pengembangan awal
Perubahan besar dan bug mungkin saja terjadi
Baca, parsing, dan sematkan variabel lingkungan dan konten file ke dalam kode Elm Anda.
Data disematkan dengan Embedders . Penyemat tinggal di dalam folder khusus, elm-embed-scripts
, dan itu adalah deklarasi Elm apa pun dengan tanda tangan Embed.Task
. Bekerja dengan penyemat mirip dengan bekerja dengan dekoder JSON, misalnya Anda dapat membaca file dengan Embed.File.read
, dan menguraikannya dengan Embed.andThen
. Jika penguraian berhasil, Anda dapat menyematkan nilainya dengan Embed.succeed
, dan jika gagal Anda dapat melaporkan alasannya dengan Embed.fail
. Jika semua penyemat berhasil maka nilai yang dihasilkan akan dihasilkan dan ditempatkan sebagai kode Elm di dalam src/generated
sehingga nilai tersebut dapat digunakan oleh basis kode lainnya.
Saat mengembangkan, Anda mungkin ingin menggunakan server lokal daripada server produksi. Untuk mencapainya, variabel lingkungan ini dapat disematkan yang berisi url server yang akan digunakan.
elm-embed-scripts/Server.elm
:
import Embed
import Embed.Environment
server : Embed . Task String
server =
Embed . Environment . string " server_url "
Menjalankan elm-embed run
ketika variabel lingkungan server_url
diatur ke localhost:8080
akan memberi Anda ini di dalam src/Generated/Server.elm
:
server : String
server =
" localhost:8080 "
Anda mungkin ingin membuat halaman dari dokumen penurunan harga, bukan kode Elm. Pendekatan normalnya adalah dengan memasukkan dokumen sebagai string dan kemudian menguraikan dan merendernya pada saat run-time. Hal ini mempunyai beberapa kelemahan. Penguraian membutuhkan waktu. Ini juga menjengkelkan dan rawan kesalahan untuk menyematkan penurunan harga pada string Elm dengan tangan. Terakhir, Anda harus menangani kasus di mana penguraian gagal dan memberikan semacam halaman kesalahan kepada pengguna. Dengan elm-embed
Anda dapat membaca file .md
, menguraikannya pada waktu pembuatan, dan jika penguraian gagal, Anda mendapatkan kesalahan sebagai pengembang pada waktu pembuatan, bukan sebagai pengguna pada waktu proses.
Contoh ini mem-parsing dokumen penurunan harga dengan dillonkearns/elm-markdown
-- elm-embed-scripts/Markdown.elm
import Embed
import Embed.File
import Markdown.Block exposing ( Block (..) , HeadingLevel (..) , Inline (..) )
import Markdown.Parser
document : Embed . Task ( List Block )
document =
Embed . andThen
( markdown ->
case Markdown . Parser . parse markdown of
Ok blocks ->
Embed . succeed blocks
Err _ ->
Embed . fail " Parse error "
)
( Embed . File . read " markdown.md " )
Catatan: Jika Anda tertarik dengan hal ini, mungkin ada baiknya Anda memeriksa halaman elm juga. Itu dapat melakukan penguraian penurunan harga pada waktu pembuatan dan banyak hal keren lainnya, termasuk baterai. elm-embed
adalah alat untuk satu hal tertentu sementara elm-pages
lebih merupakan jenis kesepakatan kerangka kerja.
elm-embed
menempatkan beberapa modulnya sendiri di elm-embed-scripts
untuk digunakan oleh penyemat Anda. Anda dapat melihat API lengkap untuk modul-modul tersebut Di Sini.
Menjalankan kode di bawah ini akan mengunduh biner prepuilt untuk linux 64-bit, menjadikannya dapat dieksekusi dan menempatkannya di /usr/local/bin
. Ini berfungsi untuk sebagian besar distribusi Linux.
curl -L -o elm-embed.gz https://github.com/emmabastas/elm-embed/releases/download/0.1.0/elm-embed-0.1.0-linux-x64.gz
gunzip elm-embed.gz
chmod +x elm-embed
sudo mv elm-embed /usr/local/bin/
Sekarang elm-embed
seharusnya dapat dipanggil dari baris perintah.
Copot pemasangan dengan sudo rm /usr/local/bin/elm-embed
Saat ini tidak ada biner bawaan untuk Windows atau Mac, satu-satunya pilihan adalah membangun dari sumber, prosesnya sama seperti saat membuat kompiler Elm.
Inisialisasi dengan elm-embed init
.
Jalankan penyematan dengan elm-embed run
.
Dapatkan bantuan dengan elm-embed --help
.
Cara terbaik untuk berkontribusi saat ini adalah memberi saya kasus penggunaan dengan meninggalkan komentar di sini. Buatlah sedetail mungkin. Apa manfaat elm-embed
bagi Anda dan bagaimana caranya? Apa yang perlu diubah/ditambahkan?
Kasus penggunaan ini akan sangat membantu saya membuat keputusan desain yang lebih tepat di masa mendatang, namun saya tidak dapat menjanjikan bahwa kasus penggunaan spesifik Anda akan diterapkan. Saya ingin elm-embed
menjadi yang terbaik dalam cakupannya, dan itu berarti menolak hal-hal yang berada di luar cakupan, dan juga meluangkan waktu untuk memikirkan semuanya, daripada terburu-buru fitur.