ภาษา Go 1.11 ออกตัวเต็ม ๆ มาแล้ว
หนึ่งใน feature ที่เพิ่มเข้ามานั่นคือ การทำงานร่วมกับ WebAssembly
แต่ยังเป็น experiment feature นะ
จากความสามารถนี้
ทำให้เราสามารถพัฒนาระบบด้วยภาษา Go
ทำการ compile ไปเป็น WebAssembly
จากนั้นทำการเรียกใช้งานผ่าน JavaScript ซึ่งสามารถทำงานผ่าน browser
การใช้งานเบื้องต้นสามารถดูได้จากเอกสาร
ซึ่งทำการ compile ได้ดังนี้
$GOARCH=wasm GOOS=js go build -o test.wasm main.go
สังเกตุว่า ทำการกำหนด
- GOARCH=wasm
- GOOS=js
ผลลัพธ์ที่ได้คือ ไฟล์ main.wasm จากนั้นก็นำไปใช้งานดังนี้
เมื่อ Hello World ผ่านไป มาดูตัวอย่างที่ดูยากขึ้นมานิดนึง
นั่นคือทำการบวกตัวเลข 2 ตัวกันดีกว่า (มันยากตรงไหน ?)
ขั้นตอนที่ 1 ทำการสร้างส่วนของ HTML ดังนี้
แสดงผลดังนี้
ขั้นตอนที่ 2 เขียนภาษา Go กัน
สิ่งที่ต้องการคือ
- อ่านค่าของ operand 1 และ operand 2 จาก HTML
- ทำการดักจับ event เมื่อกดปุ่ม Add แล้วนำค่าจาก operand 1 และ operand 2 มาบวกกัน
โดยภาษา Go ได้เตรียม package syscall/js มาให้
ดังนั้นมาลองเขียนกันหน่อย
คำอธิบาย
ทำการเรียกใช้งาน method จาก JavaScript ตรง ๆ ไปเลย
ทั้ง getElementById() และ กำหนดค่าลง property เช่น innerText เป็นต้น
อย่าลืมเปิด channel ทิ้งไว้นะครับ
ไม่งั้นก็มี error แบบนี้ใน Chrome Dev Tool :: Console
ทำการ compile ได้เลย
$GOARCH=wasm GOOS=js go build -o add.wasm add.go
ขั้นตอนที่ 3 เรียกใช้งานไฟล์ add.wasm กัน
เพียงเท่านี้ก็ทำการบวกเลขได้แล้ว
ลองไปใช้งานเล่น ๆ ได้ที่ Github Page :: Demo
โดยที่ตัวอย่าง source code อยู่ที่ Github :: Demo WebAssembly with Go
สุดท้ายแล้ว มี use case ไหนที่ต้องการทำแบบนี้บ้างนะ ?
ผมไม่มีประสบการณ์ และ คิดไม่ออกเลย
ขอให้สนุกกับการ coding ครับ