เครื่องมือนี้อยู่ในการพัฒนาขั้นต้น
คาดว่าจะมีการเปลี่ยนแปลงและข้อบกพร่องที่สำคัญ
อ่าน แยกวิเคราะห์ และฝังตัวแปรสภาพแวดล้อมและเนื้อหาไฟล์ลงในโค้ด Elm ของคุณ
ข้อมูลถูกฝังด้วย Embedders Embedders อยู่ภายในโฟลเดอร์พิเศษ elm-embed-scripts
และพวกมันคือการประกาศ Elm ใดๆ ที่มีลายเซ็นต์ Embed.Task
การทำงานกับตัวฝังนั้นคล้ายคลึงกับการทำงานกับตัวถอดรหัส JSON คุณสามารถอ่านไฟล์ด้วย Embed.File.read
และแยกวิเคราะห์ด้วย Embed.andThen
หากการแยกวิเคราะห์สำเร็จ คุณสามารถฝังค่าด้วย Embed.succeed
และหากล้มเหลว คุณสามารถรายงานสาเหตุด้วย Embed.fail
หากตัวฝังทั้งหมดสำเร็จ ค่าผลลัพธ์จะถูกสร้างขึ้นและวางเป็นโค้ด Elm ภายใน src/generated
โดยที่ส่วนที่เหลือของโค้ดเบสสามารถใช้งานได้
เมื่อพัฒนา คุณอาจต้องการใช้เซิร์ฟเวอร์ภายในเครื่องแทนเซิร์ฟเวอร์ที่ใช้งานจริง เพื่อให้บรรลุเป้าหมาย คุณสามารถฝังตัวแปรสภาพแวดล้อมซึ่งมี URL ของเซิร์ฟเวอร์ที่จะใช้ได้
elm-embed-scripts/Server.elm
:
import Embed
import Embed.Environment
server : Embed . Task String
server =
Embed . Environment . string " server_url "
การรัน elm-embed run
เมื่อตัวแปรสภาพแวดล้อม server_url
ถูกตั้งค่าเป็น localhost:8080
จะให้สิ่งนี้แก่คุณ src/Generated/Server.elm
:
server : String
server =
" localhost:8080 "
คุณอาจต้องการสร้างหน้าจากเอกสารมาร์กดาวน์แทนโค้ด Elm วิธีการปกติคือการรวมเอกสารเป็นสตริง จากนั้นแยกวิเคราะห์และแสดงผลในขณะรันไทม์ สิ่งนี้มีข้อเสียหลายประการ การแยกวิเคราะห์ต้องใช้เวลา นอกจากนี้ยังน่ารำคาญและเกิดข้อผิดพลาดได้ง่ายในการฝังมาร์กดาวน์ในสตริง Elm ด้วยมือ สุดท้ายคุณต้องจัดการกับกรณีที่การแยกวิเคราะห์ล้มเหลวและให้หน้าข้อผิดพลาดบางประเภทแก่ผู้ใช้ ด้วย elm-embed
คุณสามารถอ่านไฟล์ .md
แยกวิเคราะห์ในเวลา build และหากการแยกวิเคราะห์ล้มเหลว คุณจะได้รับข้อผิดพลาดในฐานะนักพัฒนาในเวลา build แทนที่จะเป็นผู้ใช้ในขณะรันไทม์
ตัวอย่างนี้แยกวิเคราะห์เอกสาร markdown ด้วย 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 " )
หมายเหตุ: หากคุณสนใจสิ่งนี้ ก็อาจคุ้มค่าที่จะลองดูที่ elm-pages เช่นกัน มันสามารถแยกวิเคราะห์มาร์กดาวน์ ณ เวลาสร้างและยังมีสิ่งดีๆ อื่นๆ รวมแบตเตอรี่ด้วย elm-embed
เป็นเครื่องมือสำหรับสิ่งหนึ่งโดยเฉพาะ ในขณะที่ elm-pages
เป็นข้อตกลงแบบกรอบมากกว่า
elm-embed
จะวางโมดูลบางส่วนของตัวเองไว้ใน elm-embed-scripts
ที่ผู้ฝังของคุณจะใช้ คุณสามารถดู API แบบเต็มสำหรับโมดูลเหล่านั้นได้ที่นี่
การรันโค้ดด้านล่างจะดาวน์โหลด prepuilt binary สำหรับ linux 64 บิต ทำให้สามารถเรียกใช้งานได้และวางไว้ใน /usr/local/bin
ใช้งานได้กับลีนุกซ์รุ่นส่วนใหญ่
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/
ตอนนี้ elm-embed
ควรเรียกได้จากบรรทัดคำสั่ง
ถอนการติดตั้งด้วย sudo rm /usr/local/bin/elm-embed
ขณะนี้ไม่มีไบนารีที่สร้างไว้ล่วงหน้าสำหรับ Windows หรือ Mac ตัวเลือกเดียวคือสร้างจากแหล่งที่มา ซึ่งเป็นกระบวนการเดียวกับเมื่อสร้างคอมไพเลอร์ Elm
เริ่มต้นด้วย elm-embed init
เรียกใช้ embedders ด้วย elm-embed run
รับความช่วยเหลือเกี่ยวกับ elm-embed --help
วิธีที่ดีที่สุดในการมีส่วนร่วมในตอนนี้คือการจัดเตรียมกรณีการใช้งานให้ฉันโดยการแสดงความคิดเห็นที่นี่ มีรายละเอียดมากที่สุด elm-embed
ช่วยอะไรคุณได้บ้าง และอย่างไร? จะต้องเปลี่ยนแปลง/เพิ่มเติมอะไรบ้าง?
กรณีการใช้งานเหล่านี้จะช่วยให้ฉันตัดสินใจออกแบบโดยมีข้อมูลมากขึ้นได้จริงๆ ในอนาคต แต่ฉันไม่สามารถรับประกันได้ว่ากรณีการใช้งานเฉพาะของคุณจะถูกนำมาใช้ ฉันต้องการให้ elm-embed
ดีที่สุดเท่าที่จะทำได้ภายในขอบเขตของมัน และนั่นหมายถึงการปฏิเสธสิ่งที่อยู่นอกขอบเขต และยังใช้เวลาในการคิดสิ่งต่าง ๆ อย่างละเอียด แทนที่จะเร่งรีบคุณสมบัติต่างๆ