Web Application คือซอฟต์แวร์ที่ผู้ใช้เข้าถึงผ่านเว็บเบราว์เซอร์ เช่น Chrome, Edge, Firefox หรือ Safari โดยไม่จำเป็นต้องติดตั้งโปรแกรมเฉพาะบนเครื่องผู้ใช้ ระบบเว็บแอปพลิเคชันมักประกอบด้วยส่วนที่ผู้ใช้เห็นและโต้ตอบได้ (Front-end), ส่วนประมวลผลและให้บริการข้อมูล (Back-end), ส่วนจัดเก็บข้อมูล (Database), ช่องทางสื่อสารผ่านเครือข่าย (Network) และมาตรการป้องกันข้อมูล (Security)
คำสำคัญของบทเรียน
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
| ส่วนประกอบ | หน้าที่ | ตัวอย่าง |
|---|---|---|
| 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 |
เว็บเริ่มจากเอกสาร 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
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
สร้างผลลัพธ์]
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 | เก็บบัญชีผู้ใช้ รายการสินค้า ประวัติ และข้อมูลธุรกรรม |
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
| Method | ใช้ทำอะไร | ตัวอย่าง |
|---|---|---|
| GET | ขอข้อมูล | ขอรายการรายวิชา |
| POST | สร้างข้อมูลใหม่ | สมัครสมาชิก |
| PUT | แทนที่ข้อมูลทั้งชุด | แก้ไข profile ทั้งชุด |
| PATCH | แก้ไขบางส่วน | เปลี่ยนเบอร์โทร |
| DELETE | ลบข้อมูล | ลบรายการ |
| 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 |
คำอธิบายตัวแปร:
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"
}
<!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>
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
Multi Page Application (MPA) คือเว็บที่แต่ละหน้ามี HTML document ของตนเอง เมื่อผู้ใช้กด link ไปหน้าใหม่ browser จะส่ง request เพื่อขอหน้า HTML ใหม่จาก server
/home.html -> /about.html -> /contact.html
| ประเด็น | SPA | MPA |
|---|---|---|
| การเปลี่ยนหน้า | Client-side routing | โหลด HTML หน้าใหม่ |
| ความรู้สึกขณะใช้งาน | ลื่นไหลเหมือน app | เหมือนเว็บไซต์ทั่วไป |
| เหมาะกับ | Dashboard, Admin, Chat | Content site, News, Marketing |
| SEO | ต้องวางแผนเพิ่ม | มักง่ายกว่า |
| ความซับซ้อนฝั่ง client | สูงกว่า | ต่ำกว่า |
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 |
แนวโน้มสำคัญของเว็บสมัยใหม่
| รายการตรวจ | คำถามที่ต้องตอบ |
|---|---|
| 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 และสรุปเป็นตาราง