Angular JSMEAN

เทคนิควิธีสร้าง Component ต่างๆ ในเว็บแอพพลิเคชั่น ด้วย Angular CLI

เรื่องที่เกี่ยวข้อง - Angular, Angular CLI

อัพเดตเนื้อหาแล้ว สามารถใช้กับ Angular 2 และ Angular 4 เป็นต้นไปจ้า

โดยปกติ Angular CLI จะช่วยนักพัฒนาเว็บแอพพลิเคชั่นสร้าง Component ต่างๆ ได้รวดเร็วมาก

ช่วงหลังพลสังเกตเทคนิคที่ค้นพบจากการอบรมเรื่อง Angular 4 and MEAN Stack ให้กับพี่น้อง ตามที่ต่างๆ ก็ขอเอามาเขียนแชร์ไว้ในแฟนเพจกับ Youtube Channel แล้วกัน

พื้นฐานคำสั่งสร้าง Component ใน Angular

หากเราใช้ Angular CLI ทำงาน (พลแนะนำมาก โดยเฉพาะสำหรับมือใหม่ จะเรียนรู้การทำงานได้เร็วกว่า) จะมีคำสั่งอมตะในการสร้าง Component แบบต่างๆ คือ

ng g <ประเภทของ Component> <ชื่อ Component> [ออฟชั่นที่ต้องการ]


เช่นถ้าต้องการสร้าง Component ธรรมดาชื่อ Product Component ก็จะเป็น

ng g component product


หรือถ้าต้องการสร้าง Class ธรรมดาชื่อ User ไว้เก็บข้อมูลจาก Database หรือ Web API ก็อาจจะใช้

ng g class user


หรือถ้าต้องการสร้าง Service component สำหรับติดต่อกับส่วน Authentication ก็ใช้

ng g service authentication


โฟลเดอร์ที่ Angular CLI จะสร้างไฟล์ Component เก็บไว้

ตามปกติ Angular CLI จะสร้างไฟล์ของ Component ต่างๆ เก็บไว้อ้างอิงจาก โฟลเดอร์​ src/app/ แต่ตอนนี้มีเพียง Component ธรรมดาเท่านั้นที่มีการสร้างไฟล์แยกเก็บไว้ในโฟลเดอร์ของตัวเอง เช่น

ng g component login

จะได้ไฟล์ 4 ไฟล์ ในโฟลเดอร์ชื่อ login ดังนี้

src/app/login/login.component.css
src/app/login/login.component.html
src/app/login/login.component.spec.ts
src/app/login/login.component.ts


แต่ถ้าเราสั่งสร้าง Service ล่ะ?

ng g service user

เราจะได้ไฟล์ของ User service มาใน src/app แทน

src/app/user.service.spec.ts
src/app/user.service.ts


เทคนิคสร้าง Component ต่างๆ เก็บไว้ในโฟลเดอร์ย่อย

จะเห็นว่า ถ้าปล่อยให้ Angular CLI สร้างเก็บไฟล์ Component ตามปกติ อาจจะไม่ที่เป็นชอบใจของหลายๆ คน ที่ต้องการจะเก็บไฟล์แยกกลุ่มกันไว้

เช่นอยากเก็บพวก Class ที่เป็นตัวแทนของข้อมูลจาก Web API ไว้ในโฟลเดอร์ชื่อ models เป็นต้น

ทางหนึ่งคือการมานั่งย้ายไฟล์เอง แต่จะดีไหม หากเราสั่งสร้างไว้ในโฟลเดอร์ที่ต้องการได้ตั้งแต่ต้น?

ให้ลองสั่งแบบนี้แทนครับ

ng g <ประเภทของ Component> /<ชื่อโฟลเดอร์>/<ชื่อ Component>


เช่นถ้าต้องการสร้าง Class ชื่อ User เก็บไว้ในโฟลเดอร์ชื่อ models ก็ต้องสั่ง

ng g class /models/user


หรือถ้าต้องการสร้าง Service Component ชื่อ Product เก็บไว้ในโฟลเดอร์ชื่อ services ก็ต้องสั่ง

ng g service /services/product


ยกเลิกการสร้างไฟล์ spec.ts

ค่าเริ่มต้นที่ Angular CLI กำหนดให้กับ Component เกือบทั้งหมด คือการสร้างไฟล์ spec.ts เพื่อใช้ในการเขียน Test ในการพัฒนาแบบ TDD (Test Driven-Development) กับ Component แต่ละตัว

ซึ่งการรัน Test นี้สามารถทำได้ผ่านคำสั่ง ng test โดย Angular CLI เลือกใช้ JavaScript Test Framework อย่าง Jasmine และระบบ Task Runner อย่าง Karma ในการทำงาน

จริงอยู่ที่เราไม่จำเป็นต้องสนใจไฟล์ spec.ts หรือจะลบทิ้งก็ได้ ไม่มีผลการการทำงานหลักของเว็บแอพพลิเคชั่น แต่หากเราไม่ต้องการตั้งแต่แรก จะสั่ง Angular CLI ยังไง?

ทำได้โดยการกำหนด option ของคำสั่ง ด้วย --spec=false หรือ --spec false นั่นเอง เช่น

ng g component checkout --spec=false


จะทำให้ Angular CLI ไม่สร้างไฟล์ spec.ts มาให้เรา มีแค่ 3 ไฟล์ จากปกติ 4 ไฟล์

create src/app/checkout/checkout.component.css
create src/app/checkout/checkout.component.html
create src/app/checkout/checkout.component.ts


สั่งเพิ่ม Service, Pipe, Directive, และ Guard เข้าไปใน Angular Module

โดยปกติ Angular Module จะเชื่อม Component ต่างๆ เข้าระบบให้สามารถทำงานได้ หรือในอีกทางหนึ่งคือ Component ต่างๆ จะต้องมีการประกาศใน Module ด้วยถึงจะทำงานได้อย่างปกติ

Angular CLI ในเวอร์ชั่นที่พลเขียนอยู่นี้ จะทำการเพิ่ม Component แบบธรรมดาเข้าไปในไฟล์ app.module.ts ให้ตอนที่สร้างขึ้นมา แต่กลับไม่ทำให้แบบเดียวกันในการสร้าง Component แบบอื่นๆ

เราสามารถบอกให้ Angular CLI เพิ่ม Component จำพวก Service, Pipe, Directive, หรือ Guard เข้าไปในไฟล์ app.module.ts หรือ Module ที่ต้องการได้ โดยการกำหนดค่าใช้ option ชื่อ –module หรือ –m ล่ะครับ เช่น

ng g service Department --m app

จะเป็นการสร้างไฟล์ของ Department Service Component ขึ้นมา และมีการไปเพิ่มไว้ในส่วนของ Provider ใน app.module.ts ให้ด้วย (ปกติต้องไปเพิ่มเอง!)

@NgModule({
  ....
  providers: [ DepartmentService ],
  ...
})


สรุป

จะเห็นว่าหากเราศึกษาเทคนิคในการใช้ Angular CLI ละเอียดอีกนิดหนึง จะทำให้เกิดความง่าย และสะดวกสบายในการพัฒนาเว็บแอพพลิเคชั่น หรือโมบายล์แอพพลิเคชั่นด้วย Angular 2 และ Angular 4 เป็นต้นไปแน่นอน

เริ่มต้นยุค AI ด้วยคอร์สฟรี และพรีเมี่ยม กับพล

หากชอบสิ่งที่พลเล่า เรื่องที่พลสอน สามารถสนับสนุนพลโดยการเข้าเรียนคอร์สออนไลน์ของพลนะคร้าบ

  • เข้าใจง่าย ใช้ได้จริง ออกแบบการสอนอย่างเข้าใจโดยโค้ชพล
  • มีคอร์สสำหรับคนใช้งานทั่วไป จนถึงเรียนรู้เพื่อใช้งานในสายอาชีพขั้นสูง
  • ทุกคอร์สมีใบประกาศณียบัตรรับรองหลังเรียนจบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save