คอร์สเรียน Express.js 5 + MongoDB สำหรับการสร้าง Web Application
คำอธิบายคอร์สเรียน
คอร์สเรียนนี้จะเป็นการสอนเพื่อสร้างเว็บเซิร์ฟเวอร์ด้วยตนเองผ่าน Express.js โดยส่วนมากก็จะเป็น Web Application หรือ RESTful API ต่างๆสำหรับการทำเว็บทั้งระบบหรือ Microservice ย่อย โดยเชื่อมต่อร่วมกับฐานข้อมูลที่ใช้งานไม่ยุ่งยากอย่าง MongoDB
สิ่งที่คุณจะได้เรียนรู้
- มีชีทเป็นกระดาษสูตรโกง ช่วยสรุปหลังผู้เรียน เรียนจบไปแล้วแต่อาจจะลืมรูปแบบคำสั่งต่างๆได้
- มีแบบทดสอบ สำหรับการรับใบประกาศนียบัตรที่ออกให้โดยทาง SkillLane
- ได้เห็นวิธีการปฎิบัติจริง ที่ทำให้รู้จักคีย์ลัดต่างๆ และเทคนิคเสริมมากมายที่จะทำให้เราทำงานได้เร็วและง่ายขึ้น
- สอนโดยไม่เน้นสไลด์ สอนโดยเขียนให้ดูจริง และเห็นผลลัพธ์จริง พร้อมเล่าเรื่องเสริมตลอดเวลาการเรียนการสอน
- สามารถสร้าง Web Server ด้วยตนเองผ่าน Framework ชื่อดังที่ใช้งานง่ายมากอย่าง Express.js โดยเฉพาะการสร้าง RESTful API สำหรับงาน Back-end เพื่อนำไปเชื่อมต่อกับ Front-end ที่เรามี
- เรียนรู้วิธีการสร้าง Server-side Rendering (SSR) ด้วยการใช้ EJS และ Pug สำหรับการแสดงผลหน้าเว็บผ่าน Web Server ทันที ช่วยให้เราทำงานแบบ Full-stack ได้ง่ายกว่าเดิม และไม่ต้องเรียนรู้ไปมากกว่านี้
- เรียนรู้วิธีการใช้โครงสร้างแบบ Model-View-Controller (MVC) Model ที่ยอดนิยมในการสร้างเว็บผ่าน Back-end
- เข้าใจวิธีการป้องกันเว็บโดยพื้นฐานในเรื่องสำคัญต่างๆ อย่าง Cookie (Session), Bcrypt, CORS, CSRF, XSS และ Bot Prevention
- ทำความรู้จักกับข้อแตกต่างของแต่ละฐานข้อมูล อย่าง SQL และ NoSQL โดยเราจะใช้ MongoDB (NoSQL) ที่จะทำงานได้สะดวกกว่าสำหรับระดับเริ่มต้น
- สอนวิธีการใช้งาน Object Document Mapper (ODM) อย่างการใช้ Mongoose ที่จะช่วยให้เราใช้ฐานข้อมูลของ MongoDB ได้ง่ายกว่าเดิม
- สำหรับผู้เรียนที่อาจจะกังวลว่าเรียน MongoDB แล้วจะสามารถไปเรียน MySQL หรือ PostgreSQL ต่างๆแทนได้หรือไม่ ก็ยังสามารถใช้พื้นฐานที่ใกล้เคียงกันในการเรียกข้อมูลต่างๆ เพียงแต่เราอาจจะต้องเรียนรู้เรื่องอื่นๆเพิ่มเติมด้วยตนเอง อย่างการใช้คำสั่ง SQL และการทำ Migration เมื่อข้อมูลมีการเปลี่ยนแแปลงต่างๆ
- เรียนรู้กับ Ecosystem ที่มีบน Express.js เพื่อทำให้เราทำ Web Application ได้ง่ายกว่าเดิม อย่างเช่น การทำระบบ Authentication ร่วมกับ OAuth อย่างการเชื่อมต่อเข้าสู่ระบบกับ Facebook อย่างง่าย หรือการส่งเมลผ่าน SMTP ที่ตั้งค่าได้ไม่ยาก
- รับฟังปัญหาที่นักพัฒนา Node.js จะเจอกันบ่อยๆ เพื่อป้องกันไม่ให้มีปัญหาเกิดขึ้นกับเว็บที่เรากำลังพัฒนา อย่างการใช้ Sync Function ที่จะทำให้ช้ากว่า Async Function เป็นต้น
- ทำความรู้จักกับ Server-sent Event (SSE) และวิธีการใช้ WebSocket เพื่อทำข้อมูลแบบ Realtime
- เรียนรู้วิธีการสร้าง Queue Job เพื่อทำให้ทำงานตามลำดับที่กำหนดไว้ ลดการใช้ทรัพยากรที่รับไม่ไหว เช่น ตัวอย่างโปรเจคจะมีการทำ ffmpeg สำหรับลดขนาดวิดีโอ แต่เราจะทำทีละครั้ง ไม่รีบทำทั้งหมดในทีเดียวหากมีการ Request เข้ามาพร้อมๆกัน จะช่วยให้ลดโอกาสเจอเว็บล่มตอนมีคนใช้จำนวนมากๆพร้อมกันได้ด้วย
- เรียนรู้วิธีการใช้ Seed ข้อมูลปลอม (Faker) เพื่อทำให้เราได้จำนวนข้อมูลมากๆในช่วงเริ่มต้นการทำเว็บ ตามที่เราต้องการได้
- รับฟังเกี่ยวกับวิธีการทำ Unit, Integrate และ E2E Testing เพื่อทดสอบระบบในรูปแบบต่างๆโดยพื้นฐาน และเรียนรู้ต่อด้วยตนเองได้ง่ายกว่าเดิม
- มีการทดสอบ Deploy Server จริงให้ดู โดยใช้ PM2 ในการช่วยทำ Process Management ต่างๆ
- มี Workshop ท้ายคอร์สเรียน เพื่อทดลองทำเว็บจริงให้ดูบางส่วน สำหรับบทสรุปการเรียนรู้ทั้งหมด
ประโยชน์ที่คุณจะได้รับ
- Express.js นอกจากจะเป็น Web Server ได้แล้ว ก็ยังสามารถเป็น RESTful API และทำ Microservice เล็กๆต่างๆได้ง่ายมาก โดยสามารถใช้ร่วมกับ Docker ได้เป็นอย่างดี
- เมื่อเทียบระหว่าง MongoDB และ MySQL, PostgreSQL นั้น ทาง MongoDB (NoSQL) จะมีข้อดีที่เหมาะกับโปรเจคเริ่มต้น ใช้องค์ความรู้น้อยกว่า ใช้กับภาษา JavaScript ได้ดีกว่า มีข้อมูลที่ยืดหยุ่นได้มากกว่า ปรับปรุงโครงสร้างข้อมูลได้ง่ายกว่า ต่างกับทาง MySQL, PostgreSQL (SQL) จะมีข้อดีสลับกันคือ เหมาะกับโปรเจคที่วางแผนมาดีมากๆ ใช้ความรู้สูงกว่า มีข้อมูลที่คงที่เพื่อลดความผิดพลาด ปรับปรุงโครงสร้างใช้ขั้นตอนมากกว่าเดิม และเหมาะกับโปรเจคที่มี Relationship ที่สูงกว่า โดยอย่างไรก็ตาม MongoDB จะมีความเร็วในการอ่านข้อมูลเล็กๆได้ดีกว่ามาก
- การสร้าง Web Server ด้วย Express.js ยังสามารถทำเป็น Desktop Application ต่างๆอย่างระบบ ERP, POS ต่างๆได้อีกด้วย เพราะเราสามารถที่จะ Start Server ผ่าน Local แทนได้ โดยฐานข้อมูลเราอาจจะเลือกใช้ตามความเหมาะสมกับตัวงาน เช่น MongoDB สำหรับงานที่มีการเปลี่ยนแปลงข้อมูลบ่อยครั้งและมีข้อมูลกระจายค่อนข้างไม่มีระเบียบ หรือ SQL ต่างๆสำหรับงานที่เน้นความซับซ้อนของข้อมูลที่มีระเบียบ อย่างไรก็ตามเราก็สามารถประยุกต์ใช้ SQLite เพื่อลดขั้นตอนการติดตั้งที่ยุ่งยากแก่ OS ที่แตกต่างกันไปได้อีกด้วย
- คุณรู้หรือไม่ว่า: Express.js จัดว่าเป็นอันดับหนึ่งที่ถูกใช้งานมากที่สุด และมีคนรู้จักมากที่สุดของ Back-end Framework เฉพาะกลุ่มของภาษา JavaScript โดยอ้างอิงจาก stateofjs.com
- คุณรู้หรือไม่ว่า: MongoDB จัดว่าเป็น Database อันดับสี่ ที่มีการเติบโตอย่างรวดเร็วเพราะเพิ่งถูกใช้งานครั้งแรกในปี 2009 ซึ่งเทียบกับฐานข้อมูลอื่นๆแล้วจะถูกสร้างช่วงปี 1995-2000 ซึ่งเพราะเก่ากว่าก็เลยมีคนใช้มากกว่าเช่นกัน ดังนั้นจึงเป็นหลักฐานการเติบโตอย่างรวดเร็วในช่วงหลัง โดยอ้างอิงจาก survey.stackoverflow.co
- เกร็ดความรู้: จริงอยู่ว่าการสร้างเว็บโดยการใช้ Express.js นั้นอาจจะยังไม่ดีเท่ากับ Framework ตัวอื่นๆก็ได้แล้วแต่มุมมองส่วนบุคคล เช่น Nest.js, Fastify, AdonisJS, Koa เป็นต้น ซึ่งก็เป็นคู่แข่งและเป็นการทำ Web Server ด้วย Node.js อย่างไรก็ตามการเรียนรู้ Express.js ที่ยอดนิยมมากที่สุดเพราะค่อนข้างเก่าแก่สุด ก็จะเป็นการต่อยอดไปยัง Framework ที่เราสนใจได้ง่ายกว่าเดิม และอย่างไรก็ดี Express.js ยังสามารถทำเว็บแบบ Production ได้ดีตามปกติเช่นกัน
ทักษะที่ผู้เรียนจะต้องมีก่อนเรียนคอร์สเรียนนี้
- ต้องสามารถเขียนภาษา HTML และ CSS เป็น หากคุณไม่เข้าใจวิธีการใช้งานแนะนำ คอร์สเรียน HTML + CSS โดยนครโค้ด
- ต้องสามารถเขียนภาษา JavaScript เป็น หากคุณไม่เข้าใจวิธีการใช้งานแนะนำ คอร์สเรียน JavaScript + Node.js โดยนครโค้ด
- ควรมีความเข้าใจในภาษา JavaScript ระดับขั้นสูง อย่างเช่น Event handler, Callback, Promise, Async/Await, Node.js, npm, ESM, CJS
- สามารถอ่านและเขียนภาษาอังกฤษในระดับพื้นฐาน
- สามารถใช้งานอินเทอร์เน็ตโดยทั่วไปได้
เหมาะสำหรับ
- นักเรียนระดับประถมปลาย
- นักเรียนระดับมัธยม
- นักศึกษาที่กำลังศึกษาในสายงานที่เกี่ยวข้องกับการพัฒนาเว็บ
- ผู้ที่สนใจในสายงาน Web Development
- ผู้ที่สนใจในสายงาน Back-end Web Development
- ผู้ที่สนใจในสายงาน Full-stack Web Development
- ผู้ที่สนใจการสร้างเกมด้วยตนเอง
- ผู้ที่สนใจการสร้างโปรแกรมประยุกต์ใช้งานโดยทั่วไปบนระบบคอมพิวเตอร์
เนื้อหาที่มีทั้งหมด
บทนำ
-
แนะนำคอร์สเรียน Express.js + MongoDB
20:20 นาที -
ดาวน์โหลดสูตรโกงสำหรับการเรียน Express.js + MongoDB
00:10 นาที -
ดาวน์โหลดไฟล์ตัวอย่างโปรเจคทั้งหมดที่มีบน Express.js + MongoDB (ผู้เรียนต้องใช้ npm install ด้วยตนเอง และดูการเปลี่ยนแปลงผ่าน Git)
00:10 นาที
บทที่ 1 Express.js
-
1.1 Express.js - เตรียมโครงสร้างของโค้ดสำหรับการเริ่มต้นโปรเจค
40:08 นาที -
1.2 Response - การตอบสนอง WebApp เพื่อส่งข้อมูลกลับไปยังผู้ใช้งาน
42:02 นาที -
1.3 Request - การรับข้อมูลผ่าน WebApp จากผู้ใช้งาน
20:22 นาที -
1.4 Middleware - ตัวกลางการสื่อสารระหว่าง WebApp
38:35 นาที -
1.5 Router - การสร้างเส้นทางต่าง ๆ ให้กับ WebApp
48:34 นาที -
1.6 morgan - การ Log ข้อมูลของ WebApp
04:11 นาที -
1.7 Template Engine - การใช้ Pug.js เพื่อสร้างหน้าเว็บ Front-end ในรูปแบบ Server-Side Rendering 01
01:05:39 นาที -
1.8 multer - การเพิ่มรองรับ multipart/form-data สำหรับการรับอัพโหลดไฟล์ต่าง ๆ
46:26 นาที -
1.9 MVC Model - โมเดลโครงสร้างการพัฒนาเว็บที่ยอดนิยม
14:19 นาที
บทที่ 2 MongoDB
-
2.1 MongoDB - การติดตั้งเพื่อเตรียมใช้งานฐานข้อมูลบบ NoSQL
20:23 นาที -
2.2 MongoDB CLI - การเชื่อมต่อกับฐานข้อมูลผ่าน Console
10:25 นาที -
2.3 MongoDB Client - การนำ MongoDB ใช้ร่วมกับ Node.js
55:46 นาที -
2.4 Query Comparison - ค้นหาข้อมูลผ่านการเปรียบเทียบค่า
10:47 นาที -
2.5 Query Element - ค้นหาตามสรรพสิ่ง
02:05 นาที -
2.6 Query Array - ค้นหาข้อมูลของ Array
04:55 นาที -
2.7 Query Logical - ค้นหาข้อมูลตามเงื่อนไขตรรกศาสตร์
06:26 นาที -
2.8 Query Evaluation - ค้นหาข้อมูลข้อความพิเศษตาม Regular Expression
04:21 นาที -
2.9 Projection - การเลือกชุดข้อมูลที่ต้องการแสดงผล
03:20 นาที -
2.10 Operator Arithmetic - ตัวดำเนินการทางคณิตศาสตร์
07:32 นาที -
2.11 Operator String - ตัวดำเนินการข้อมูล String
03:59 นาที -
2.12 Operator Array - ตัวดำเนินการข้อมูล Array
05:56 นาที -
2.13 Operator Date - ตัวดำเนินการข้อมูล Date
07:44 นาที -
2.14 Aggregate Stage - ขั้นตอนการเรียกข้อมูล
08:07 นาที -
2.15 Aggregate Pagination - การเรียกข้อมูลตามหน้าเพื่อกระจายข้อมูล
48:31 นาที -
2.16 Aggregate $set - การอัพเดตข้อมูล
03:17 นาที -
2.17 Aggregate $group - การรวมกลุ่มข้อมูล
22:21 นาที -
2.18 Aggregate $lookup - การจับความสัมพันธ์ระหว่าง Collection
20:29 นาที -
2.19 Schema Validation - การตรวจสอบข้อมูลก่อนแก้ไข
10:08 นาที
บทที่ 3 Mongoose
-
3.1 Mongoose (ODM) - การทำโมเดลของ MongoDB
02:54 นาที -
3.2 Mongoose Schema - การออกแบบข้อมูล
14:11 นาที -
3.3 Mongoose Validation - การตรวจสอบข้อมูล
19:32 นาที -
3.4 Mongoose Middleware - ตัวกลางสื่อสารระหว่างฐานข้อมูล
07:10 นาที -
3.5 Mongoose Populate - การจับความสัมพันธ์ระหว่าง Collection
27:41 นาที
บทที่ 4 บทเสริมของ Express
-
4.1 express-session - การทำ Session ให้กับ WebApp
47:43 นาที -
4.2 connect-redis - การเชื่อมต่อกับ Redis เพื่อทำ Persistence
20:02 นาที -
4.3 connect-flash - การสร้างข้อความแจ้งเตือนเพียงครั้งเดียว (Flash message)
25:01 นาที -
4.4 bcrypt - การเข้ารหัสเพื่อป้องกันข้อมูลรหัสผ่านหลุดแบบ Plain text
21:17 นาที -
4.5 Async vs Sync - บทพิเศษสำหรับทดสอบข้อแตกต่างของประสิทธิภาพระหว่าง Async และ Sync
16:59 นาที -
4.6 passport - การทำ Authentication สำหรับยืนยันตัวบุคคล (เข้าสู่ระบบ/สมัครสมาชิก) 01
01:05:27 นาที -
4.7 OAuth - การเข้าสู่ระบบผ่านทาง Social Media หรือเว็บไซต์อื่น ๆ 01
01:47:27 นาที -
4.8 nodemailer - การส่งอีเมลผ่าน SMTP 01
01:02:37 นาที -
4.9 jsonwebtoken - การใช้งาน JWT สำหรับเก็บข้อมูลและยืนยันความถูกต้องกับ Stateless 01
01:08:42 นาที -
4.10 method-override - การแปลง Method จากการส่งข้อมูลผ่าน HTML Form
33:25 นาที -
4.11 Server-Sent Events - การส่งข้อมูลแบบ Real-time
39:17 นาที -
4.12 WebSocket - การรับและส่งข้อมูลแบบ Real-time
43:19 นาที -
4.13 ffmpeg & bull - การเข้าคิวของระบบเพื่อ Render Video 01
01:08:53 นาที
บทที่ 5 บทเสริมสำหรับความปลอดภัย
-
5.1 compression & helmet - การลดขนาด Response และเพิ่มความปลอดภัยโดยพื้นฐาน
10:50 นาที -
5.2 CORS - การอนุญาตให้เว็บไซต์เข้าถึงทรัพยากรนอกเว็บ
27:51 นาที -
5.3 CSRF - การป้องกันโจมตีจากภายนอกเว็บไซต์ ด้วยการลวงผู้ใช้งานจากหน้าเว็บฟอร์มของปลอม
33:23 นาที -
5.4 XSS - การป้องกันโจมตีจากภายนอกเว็บไซต์ ด้วยการบันทึกข้อมูล JavaScript เพื่อรันสคริปต์กับเครื่องผู้อื่น
10:42 นาที -
5.5 CAPTCHA - การป้องกันโจมตีจากบอท
25:05 นาที
บทที่ 6 บทเสริมสำหรับการทดสอบระบบ
-
6.1 @faker-js/faker - การปลอมข้อมูลสำหรับทดสอบระบบ
04:33 นาที -
6.2 Unit Testing (jest) - การทดสอบระบบแบบไฟล์ต่อไฟล์ 01
01:06:21 นาที -
6.3 Integration Testing (supertest) - การทดสอบระบบแบบรวม
30:25 นาที -
6.4 E2E Testing (cypress) - การทดสอบระบบแบบเสมือนจริง
27:14 นาที
บทที่ 7 บทพิเศษส่งท้าย
-
7.1 Deploy - การเตรียม WebApp ทั้งระบบเพื่อใช้งานจริง
41:04 นาที -
7.2 Workshop Social Media Platform - เตรียม Workshop สุดท้ายสำหรับคอร์สเรียนนี้
29:42 นาที -
7.3 Profile - หน้าโปรไฟล์และระบบสมาชิก 02
02:46:23 นาที -
7.4 Feed - หน้าฟีดของผู้ใช้งาน 01
01:24:10 นาที -
7.5 Like & Comment - ระบบกดไลค์และคอมเม้นต์
49:39 นาที -
7.6 บทส่งท้ายสำหรับแนวทางการศึกษาต่อด้วยตนเอง
10:46 นาที
รีวิวจากผู้เรียน (ทั้งหมด 19 รีวิว คะแนนเฉลี่ย 4.8)
Suthee S.
สอนดี ครับละเอียดคุ้ม
⭐⭐⭐⭐⭐
Chananchida M.
อะไรที่เคยมองข้ามไปพี่ก็จะเสริมให้ เคยเรียนที่อื่นมาค่ะแต่ไม่ละเอียดเท่านี่ พี่สอนดีค่ะคอร์สนี้แนะนำ
⭐⭐⭐⭐⭐
Ritthikrai K.
⭐⭐⭐⭐⭐
Hi H.
⭐⭐
Piyawat L.
⭐⭐⭐⭐⭐
Wahohowahehheh w.
⭐⭐⭐⭐⭐
Brook S.
⭐⭐⭐⭐⭐
สันติภาพ อ.
⭐⭐⭐⭐⭐
Stang P.
⭐⭐⭐⭐⭐
Anuwat P.
⭐⭐⭐⭐⭐
Sirichai T.
⭐⭐⭐⭐⭐
วลินดา น.
⭐⭐⭐⭐⭐
Phumiphat M.
⭐⭐⭐⭐⭐
Wichai B.
⭐⭐⭐⭐⭐
Mr.Sakda T.
⭐⭐⭐⭐⭐
rattanasak r.
⭐⭐⭐⭐⭐
duanganucha b.
⭐⭐⭐⭐
มนัส พ.
⭐⭐⭐⭐⭐
pakkaya m.
⭐⭐⭐⭐⭐