บทที่ 1 พื้นฐานการพัฒนาเว็บแอปพลิเคชัน

สไลด์บทเรียน

วัตถุประสงค์

  1. อธิบายความหมายของ Web Application และองค์ประกอบหลักของระบบได้
  2. เปรียบเทียบ Static Website, Dynamic Website, SPA และ MPA ได้
  3. อธิบายสถาปัตยกรรม Client-Server Architecture และลำดับการทำงานของ HTTP Request/Response ได้
  4. อธิบายหลักการของ RESTful API, HTTPS และเทคโนโลยีเว็บสมัยใหม่ได้
  5. วิเคราะห์เว็บแอปพลิเคชันจริงและแยกส่วน Client, Server, Database, API และ Security ได้

ภาพรวมบทเรียน

Web Application คือซอฟต์แวร์ที่ผู้ใช้เข้าถึงผ่านเว็บเบราว์เซอร์ เช่น Chrome, Edge, Firefox หรือ Safari โดยไม่จำเป็นต้องติดตั้งโปรแกรมเฉพาะบนเครื่องผู้ใช้ ระบบเว็บแอปพลิเคชันมักประกอบด้วยส่วนที่ผู้ใช้เห็นและโต้ตอบได้ (Front-end), ส่วนประมวลผลและให้บริการข้อมูล (Back-end), ส่วนจัดเก็บข้อมูล (Database), ช่องทางสื่อสารผ่านเครือข่าย (Network) และมาตรการป้องกันข้อมูล (Security)

คำสำคัญของบทเรียน


1. Web Application คืออะไร

Web Application เป็นระบบซอฟต์แวร์ที่ทำงานผ่านเว็บ ผู้ใช้ส่งข้อมูลหรือคำสั่งผ่าน browser จากนั้นระบบจะประมวลผล ติดต่อฐานข้อมูลหรือบริการภายนอก และส่งผลลัพธ์กลับมาแสดงผลบนหน้าเว็บ ตัวอย่างที่พบในชีวิตประจำวัน ได้แก่ ระบบลงทะเบียนเรียน ระบบธนาคารออนไลน์ ระบบซื้อขายสินค้าออนไลน์ ระบบจองโรงแรม ระบบ dashboard และระบบจัดการงานภายในองค์กร

Web Application แตกต่างจากเว็บไซต์ที่มีเนื้อหาอ่านอย่างเดียว เพราะมีการโต้ตอบ มีสถานะของผู้ใช้ มีข้อมูลเปลี่ยนแปลง และมักเชื่อมต่อกับระบบหลังบ้าน

%%{init: {'theme': 'base', 'themeVariables': {
  'background': '#282828',
  'primaryColor': '#3c3836',
  'primaryTextColor': '#fbf1c7',
  'primaryBorderColor': '#fabd2f',
  'lineColor': '#83a598',
  'secondaryColor': '#504945',
  'tertiaryColor': '#665c54',
  'fontFamily': 'Arial'
}}}%%
flowchart LR
  U[User
ผู้ใช้] --> B[Browser
เว็บเบราว์เซอร์] B --> F[Front-end
ส่วนติดต่อผู้ใช้] F --> A[API / Back-end
บริการหลังบ้าน] A --> D[(Database
ฐานข้อมูล)] A --> S[External Service
บริการภายนอก] D --> A S --> A A --> F F --> B

องค์ประกอบหลักของ Web Application

ส่วนประกอบ หน้าที่ ตัวอย่าง
Front-end แสดง UI รับ input และโต้ตอบกับผู้ใช้ HTML, CSS, JavaScript, Angular
Back-end ประมวลผล business logic และให้บริการ API Node.js, Express, NestJS
Database จัดเก็บข้อมูลถาวรของระบบ PostgreSQL, MySQL, MongoDB
Network ช่องทางสื่อสารระหว่าง client และ server HTTP, HTTPS, WebSocket
Security ปกป้องข้อมูลและควบคุมสิทธิ์ HTTPS, JWT, OAuth, CORS

2. Timeline วิวัฒนาการของเว็บแอปพลิเคชัน

เว็บเริ่มจากเอกสาร HTML แบบ static แล้วค่อยพัฒนาไปสู่ระบบ dynamic, web application, SPA, real-time application และ AI-assisted web application ในปัจจุบัน

%%{init: {'theme': 'base', 'themeVariables': {
  'background': '#282828',
  'primaryColor': '#3c3836',
  'primaryTextColor': '#fbf1c7',
  'primaryBorderColor': '#fabd2f',
  'lineColor': '#8ec07c',
  'secondaryColor': '#504945',
  'tertiaryColor': '#665c54',
  'fontFamily': 'Arial'
}}}%%
flowchart LR
  subgraph E1[Static Web Era
ยุคเว็บเอกสาร] A[HTML Pages
หน้าเว็บคงที่] end subgraph E2[Dynamic Web Era
ยุคเว็บเปลี่ยนตามข้อมูล] B[Server-side Rendering
สร้างหน้าจาก server] end subgraph E3[Web App Era
ยุคเว็บแอปพลิเคชัน] C[Database + Session
ฐานข้อมูลและสถานะผู้ใช้] end subgraph E4[Modern Web Era
ยุคเว็บสมัยใหม่] D[SPA + API + Cloud
หน้าเดียว API และ Cloud] end subgraph E5[AI Web Era
ยุคเว็บผสาน AI] E[AI API + Automation
บริการ AI และระบบอัตโนมัติ] end A --> B --> C --> D --> E

3. Static และ Dynamic Website

Static Website คือเว็บไซต์ที่ไฟล์ HTML/CSS/JavaScript ถูกเตรียมไว้ล่วงหน้า เมื่อผู้ใช้ขอหน้าเว็บ server จะส่งไฟล์เดิมกลับไปให้ browser แสดงผล เนื้อหาไม่เปลี่ยนตามผู้ใช้หรือข้อมูลในฐานข้อมูล เว้นแต่ผู้พัฒนาแก้ไฟล์เอง

Dynamic Website คือเว็บไซต์หรือเว็บแอปพลิเคชันที่สร้างหรือเปลี่ยนเนื้อหาตามข้อมูล เงื่อนไข หรือผู้ใช้ เช่น หลัง login แล้วเห็นชื่อของตนเอง เห็นรายการสินค้าในฐานข้อมูล หรือเห็นสถานะคำสั่งซื้อแบบล่าสุด

ประเด็น Static Website Dynamic Website
เนื้อหา ค่อนข้างคงที่ เปลี่ยนตามข้อมูลหรือผู้ใช้
การประมวลผล น้อย ส่วนใหญ่เป็นไฟล์พร้อมแสดง มี logic ที่ client หรือ server
ฐานข้อมูล อาจไม่มี มักมีฐานข้อมูล
ตัวอย่าง Portfolio, Documentation, Landing Page LMS, Banking, E-commerce, Dashboard
ความซับซ้อน ต่ำกว่า สูงกว่า
%%{init: {'theme': 'base', 'themeVariables': {
  'background': '#282828',
  'primaryColor': '#3c3836',
  'primaryTextColor': '#fbf1c7',
  'primaryBorderColor': '#fabd2f',
  'lineColor': '#b8bb26',
  'secondaryColor': '#504945',
  'tertiaryColor': '#665c54',
  'fontFamily': 'Arial'
}}}%%
flowchart TD
  A[Website Request
ขอหน้าเว็บ] --> B{Content Type?
ชนิดเนื้อหา} B --> C[Static
ส่งไฟล์เดิม] B --> D[Dynamic
สร้างผลลัพธ์ตามข้อมูล] D --> E[Query Database
อ่านฐานข้อมูล] E --> F[Render Response
สร้างผลลัพธ์]

4. Client-Server Architecture

Client-Server Architecture คือสถาปัตยกรรมที่แบ่งหน้าที่ระหว่างฝั่งผู้ใช้และฝั่งให้บริการ โดย Client รับ input และแสดงผล ส่วน Server ประมวลผล ตรวจสิทธิ์ ติดต่อฐานข้อมูล และส่ง response กลับมา

%%{init: {'theme': 'base', 'themeVariables': {
  'background': '#282828',
  'primaryColor': '#3c3836',
  'primaryTextColor': '#fbf1c7',
  'primaryBorderColor': '#fabd2f',
  'lineColor': '#fe8019',
  'secondaryColor': '#504945',
  'tertiaryColor': '#665c54',
  'fontFamily': 'Arial'
}}}%%
sequenceDiagram
  participant U as User
ผู้ใช้ participant C as Client / Browser
ฝั่งผู้ใช้ participant S as Server / API
ฝั่งให้บริการ participant D as Database
ฐานข้อมูล U->>C: Submit form
กรอกข้อมูล C->>S: HTTP Request
ส่งคำขอ S->>D: Query / Update
อ่านหรือบันทึกข้อมูล D-->>S: Result
ผลลัพธ์ S-->>C: HTTP Response
ส่งคำตอบ C-->>U: Render UI
แสดงผล
ส่วน งานที่รับผิดชอบ
Client แสดง UI, รับ input, validate เบื้องต้น, เรียก API
Server ตรวจสิทธิ์, ประมวลผล, ติดต่อ database, สร้าง response
Database เก็บบัญชีผู้ใช้ รายการสินค้า ประวัติ และข้อมูลธุรกรรม

5. HTTP และ HTTPS

HTTP (HyperText Transfer Protocol) คือโปรโตคอลสำหรับสื่อสารแบบ request/response ระหว่าง browser และ server ส่วน HTTPS คือ HTTP ที่เข้ารหัสด้วย TLS เพื่อป้องกันการดักอ่านและแก้ไขข้อมูลระหว่างทาง

ตัวอย่าง HTTP Request:

GET /api/courses HTTP/1.1
Host: example.com
Accept: application/json

HTTP Methods ที่ใช้บ่อย

Method ใช้ทำอะไร ตัวอย่าง
GET ขอข้อมูล ขอรายการรายวิชา
POST สร้างข้อมูลใหม่ สมัครสมาชิก
PUT แทนที่ข้อมูลทั้งชุด แก้ไข profile ทั้งชุด
PATCH แก้ไขบางส่วน เปลี่ยนเบอร์โทร
DELETE ลบข้อมูล ลบรายการ

Status Code ที่ควรรู้

Status ความหมาย ใช้เมื่อ
200 OK สำเร็จ อ่านหรือแก้ไขสำเร็จ
201 Created สร้างข้อมูลสำเร็จ POST สำเร็จ
400 Bad Request คำขอไม่ถูกต้อง input ผิดรูปแบบ
401 Unauthorized ยังไม่ยืนยันตัวตน ไม่มี token
403 Forbidden ไม่มีสิทธิ์ token ถูกแต่สิทธิ์ไม่พอ
404 Not Found ไม่พบ resource URL หรือ id ไม่มี
500 Internal Server Error server ผิดพลาด exception ฝั่ง server

สมการเวลา Response โดยประมาณ

T = Tn + Ts + Td

คำอธิบายตัวแปร:


6. RESTful Architecture

REST (Representational State Transfer) เป็นแนวทางออกแบบ API ให้ client และ server สื่อสารกันผ่าน resource เช่น users, products, orders หรือ courses โดยใช้ HTTP Method ให้ตรงกับการกระทำ

งาน Method URL
ดูรายการรายวิชา GET /api/courses
ดูรายวิชาตาม id GET /api/courses/42
เพิ่มรายวิชา POST /api/courses
แก้ไขรายวิชา PUT/PATCH /api/courses/42
ลบรายวิชา DELETE /api/courses/42

ตัวอย่าง JSON Response:

{
  "id": 42,
  "code": "04-522-306",
  "title": "Web Application Development"
}

ตัวอย่างโค้ดทดลองเรียก API

<!doctype html>
<html lang="th">
<body>
  <button id="loadBtn">Load Course</button>
  <pre id="output"></pre>

  <script>
    // ตัวอย่างการเรียก REST API ด้วย fetch
    async function loadCourse() {
      const response = await fetch('/api/courses/42');

      // ตรวจสอบ status ก่อนใช้ข้อมูล
      if (!response.ok) {
        document.getElementById('output').textContent = 'Cannot load course';
        return;
      }

      const course = await response.json();
      document.getElementById('output').textContent =
        `${course.code}: ${course.title}`;
    }

    // ตัวอย่างการใช้งาน: กดปุ่มเพื่อโหลดข้อมูลรายวิชา
    document.getElementById('loadBtn').addEventListener('click', loadCourse);
  </script>
</body>
</html>

7. Single Page Application (SPA)

Single Page Application (SPA) คือเว็บแอปพลิเคชันที่โหลดหน้า HTML หลักครั้งเดียว แล้วใช้ JavaScript เปลี่ยนเนื้อหาในหน้าโดยไม่ต้องโหลดเอกสาร HTML ใหม่ทั้งหน้า Framework เช่น Angular, React และ Vue มักใช้แนวทางนี้

%%{init: {'theme': 'base', 'themeVariables': {
  'background': '#282828',
  'primaryColor': '#3c3836',
  'primaryTextColor': '#fbf1c7',
  'primaryBorderColor': '#fabd2f',
  'lineColor': '#d3869b',
  'secondaryColor': '#504945',
  'tertiaryColor': '#665c54',
  'fontFamily': 'Arial'
}}}%%
flowchart LR
  B[Browser
โหลด app shell] --> J[JavaScript App
แอปฝั่ง client] J --> R[Client Routing
เปลี่ยนหน้าใน browser] J --> A[REST API
เรียกข้อมูล] A --> J J --> U[Update UI
อัปเดตหน้าจอ]

ข้อดีของ SPA

ข้อควรระวังของ SPA


8. Multi Page Application (MPA)

Multi Page Application (MPA) คือเว็บที่แต่ละหน้ามี HTML document ของตนเอง เมื่อผู้ใช้กด link ไปหน้าใหม่ browser จะส่ง request เพื่อขอหน้า HTML ใหม่จาก server

/home.html -> /about.html -> /contact.html

เปรียบเทียบ SPA และ MPA

ประเด็น SPA MPA
การเปลี่ยนหน้า Client-side routing โหลด HTML หน้าใหม่
ความรู้สึกขณะใช้งาน ลื่นไหลเหมือน app เหมือนเว็บไซต์ทั่วไป
เหมาะกับ Dashboard, Admin, Chat Content site, News, Marketing
SEO ต้องวางแผนเพิ่ม มักง่ายกว่า
ความซับซ้อนฝั่ง client สูงกว่า ต่ำกว่า

9. Modern Web Technology

Modern Web Technology คือชุดแนวคิด เครื่องมือ และมาตรฐานที่ใช้สร้างเว็บแอปพลิเคชันสมัยใหม่ให้เร็ว ปลอดภัย ดูแลต่อได้ และรองรับผู้ใช้หลายรูปแบบ

กลุ่ม ตัวอย่าง
Front-end HTML5, CSS3, JavaScript, TypeScript, Angular, React, Vue
Back-end Node.js, Express, NestJS, Node-RED
API REST, GraphQL, WebSocket
Database PostgreSQL, MySQL, MongoDB
Security HTTPS, JWT, OAuth, CORS, OWASP Top 10
DevOps Git, Docker, CI/CD, Reverse Proxy
Quality Testing, Logging, Monitoring, Performance Optimization
AI Integration OpenAI API, Gemini API, AI Chatbot, Recommendation

แนวโน้มสำคัญของเว็บสมัยใหม่

  1. Component-based development
  2. API-first architecture
  3. Responsive และ mobile-first design
  4. Real-time communication
  5. Cloud และ container deployment
  6. Security by design
  7. AI-assisted features
  8. Performance และ accessibility เป็นเรื่องพื้นฐาน

Checklist ก่อนส่งงานบทที่ 1

รายการตรวจ คำถามที่ต้องตอบ
Web Application อธิบายองค์ประกอบหลักได้หรือไม่
Static/Dynamic แยกความแตกต่างและยกตัวอย่างได้หรือไม่
Client-Server วาด flow การทำงานได้หรือไม่
HTTP/HTTPS อธิบาย request, response, method และ status code ได้หรือไม่
REST API ออกแบบ URL และ method ได้ถูกต้องหรือไม่
SPA/MPA เลือกใช้ให้เหมาะกับงานได้หรือไม่
Modern Web ระบุเทคโนโลยีที่เกี่ยวข้องกับโครงงานได้หรือไม่

กิจกรรม

เลือกเว็บแอปพลิเคชัน 1 ระบบ แล้ววิเคราะห์ว่าในระบบนั้นมีส่วนใดเป็น Client, Server, Database, API และ Security จากนั้นวาด flow การทำงานแบบ Mermaid และสรุปเป็นตาราง

คำถามทบทวน

  1. Web Application แตกต่างจาก Static Website อย่างไร
  2. HTTP request/response มีขั้นตอนสำคัญอะไรบ้าง
  3. RESTful API ที่ดีควรออกแบบ URL และ Method อย่างไร
  4. SPA และ MPA เหมาะกับงานต่างกันอย่างไร
  5. เพราะเหตุใด HTTPS จึงจำเป็นต่อเว็บแอปพลิเคชัน

กลับรายวิชา