เขียนเว็บแอพแบบ SPA ด้วย Blazor (C#)

หากคุณเป็นนักพัฒนาเว็บแอพที่ชอบฟังเพลงยุค 90 คุณก็คงจะคุ้นเคยกับ Multiple Page Applications (MPA) เป็นอย่างดี  MPA หรือเว็บแบบดั้งเดิมนั้นสามารถสังเกตุได้จากการที่เราคลิกดูข้อมูล หรือเปลี่ยน URL หน้าเว็บจะโหลดใหม่ทั้งหน้า เพื่อดึงข้อมูลมาแสดงผลใหม่ใน Browser ดังรูป

ที่มา : https://subscription.packtpub.com/book/web_development/9781787284746/7/ch07lvl1sec38/application-routing

ทุกวันนี้ก็ได้มีอีก Trend หนึ่งที่น่าสนใจ และมีการนำมาใช้สร้างเว็บแอพกันอย่างแพร่หลาย นั่นก็คือ Single Page Application หรือ SPA  โดยเว็บแบบนี้จะทำการโหลดหน้าเว็บจาก Request ครั้งแรกเท่านั้น หลังจากนั้นจะเป็นการรับส่งข้อมูลกันโดยใช้ JavaScript เข้ามาช่วย ทำให้ลดการ Reload หน้าเว็บโดยไม่จำเป็นลงไปได้ ข้อดีของเว็บแบบนี้คือ มี User Experience ที่ดีกว่า ตอบสนองได้อย่างรวดเร็ว และลดการทำงานของฝั่ง Server  ตัวอย่างเว็บไซต์แบบ SPA ที่เราใช้งานกันอยู่บ่อยๆ ได้แก่ Facebook, Instagram, Twitter, Google Mail เป็นต้น

ที่มา : https://subscription.packtpub.com/book/web_development/9781787284746/7/ch07lvl1sec38/application-routing

ตัวอย่างของ SPA Framework

  • Vue.js
  • React.js
  • AngularJS
  • Ember.js
  • Knockout.js
  • Meteor.js
  • Blazor

จาก Framework ตัวอย่างทั้งหมดจะเป็น JavaScript ยกเว้น Blazor ที่ใช้ C# แทน และในฐานะที่คุ้นเคยกับการเขียนโค้ด C# อยู่แล้ว Blazor จึงเป็นตัวเลือกที่น่าสนใจ

การสร้างแอพด้วย Blazor

เปิด Visual Studio 2019 คลิก Create a new project ก็จะเจอหน้าจอดังรูป จากนั้นให้เลือก Project templates เป็น Blazor Server App

หน้าจอ Configure your new project ให้ตั้งชื่อ Project name ว่า FirstApp.Web
ระบุ Location เป็น C:\Source\

หน้าจอ Additional information ให้เลือก Target Framework เป็น .NET 5.0

ถึงขั้นตอนนี้แล้วทำให้ได้ Project ใหม่ที่มีไฟล์ตั้งต้นไว้ให้แล้ว  โดยการเขียนเว็บด้วย Blazor นั้นจะใช้ไฟล์ชนิด Razor ซึ่งเป็นเทคโนโลยีการสร้าง View ของ ASP.NET MVC

กด F5 หรือคลิกปุ่มรัน เพื่อดูผลลัพธ์กันก่อน จะเห็นว่ามีตัวอย่างไว้ให้ศึกษา 2 เมนู คือ Counter และ Fetch data

เมนู Counter เป็นตัวอย่างของการสร้าง Blazor Component เมื่อคลิกปุ่ม Click me ก็จะทำให้ Current count มีค่าเพิ่มขึ้นทีละ 1 โดยสังเกตได้ว่า ในการคลิกปุ่มทุกครั้งจะไม่มีการ Reload หน้าเว็บใหม่ทั้งหน้า แต่มีการเปลี่ยนแปลงเฉพาะส่วนของตัวเลข Current count เท่านั้น

โค้ดตัวอย่าง Counter จะอยู่ในโฟลเดอร์ Pages ชื่อไฟล์ Counter.razor เมื่อเปิดดูจะพบว่าโค้ดมีส่วนสำคัญ 3 ส่วน คือ

a. Route หรือ URL ที่ใช้ในการเข้าถึงหน้าเว็บ ในที่นี้คือ /counter เวลาเข้าใช้งานก็จะเป็น https://localhost:44381/counter

b. View หรือส่วนของ HTML ใช้ในการจัดรูปแบบการแสดงผล

c. C# Code เป็นส่วนที่ใช้เขียนโค้ดควบคุมการแสดงผลของ View

มาถึงจุดนี้แล้ว ก็สามารถทดลองเขียนโปรแกรมเล่นๆ ได้ เช่น ถ้าต้องการให้คลิกปุ่ม Click me แล้ว ให้ตัวเลขเพิ่มครั้งละ 5 ก็สามารถทำได้ง่าย ๆ ดังรูป

Component สามารถนำมา Reuse ได้ เช่น ถ้าต้องการนำ Counter ไปใช้งานในหน้า Home ก็ทำได้โดยการเพิ่ม Markup up เข้าไปใน View ดังรูป หากต้องการ Counter หลายตัว ก็สามารถใส่ tag เพิ่มเข้าไปได้อีกตามต้องการ

จากตัวอย่างนี้จะเห็นได้ว่าหากผู้พัฒนามีความคุ้นเคยกับภาษา C# อยู่แล้ว ก็สามารถเขียนเว็บแอพแบบ SPA ด้วย Blazor ได้โดยใช้เวลาในการศึกษาเพิ่มเติมเพียงเล็กน้อยเท่านั้น ดังนั้น Blazor จึงเป็นตัวเลือกที่น่าสนใจ