Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

ก้าวแรกสู่สังเวียน Angular

$
0
0

การเริ่มต้นศึกษาสิ่งใหม่ ๆ มันยากเสมอ Angular ก็เช่นกัน ถ้าไปฟังจากนักพัฒนาที่ใช้งานแล้ว พบว่า มันมีความซับซ้อนมาก ๆ แลดูว่าจะยากต่อการใช้งาน ซึ่งมันก็ไม่ผิดแต่อย่างใด ดังนั้นจะขอแนะนำการเริ่มต้นศึกษา Angular ไว้นิดหน่อย รวมทั้งความรู้พื้นฐานไว้นิดหน่อย น่าจะเป็นประโยชน์บ้างเล็กน้อย

เริ่มด้วยการดู VDO ที่น่าสนเกี่ยวกับ Angular ซึ่งมีเพียบบน Youtube

ทำให้เราเข้าใจมากขึ้น เพราะว่า บางทีการอ่านมันเข้าใจยาก ตัวอย่างเช่น https://www.youtube.com/watch?v=LS3aewTkfHI https://www.youtube.com/watch?v=wZ_5des_6_c

หลังจากนั้นลองทำตาม VDO นั่นคือลงมือสร้างระบบและเขียน code (Heros App)

ซึ่งสามารถดู code ตัวอย่างจาก Official website ของ Angular ได้เลย จากตัวอย่างต่าง ๆ จะพบว่า มีสิ่งที่ต้องเรียนรู้เพียบเลย เช่น
  • วิธีการสร้าง Angular project ?
  • Webpack ?
  • TypeScript ?
  • ES6 ?
ให้ทำเองตาม VDO และเอกสารน่าจะยากพอควร ดังนั้นมาทำแบบ step-by-step กัน

ขั้นตอนที่ 1 สร้าง Angular project ด้วย Angular CLI

ถ้าสร้างเองน่าจะรอดยาก ดังนั้นทางทีมพัฒนาจึงทำการสร้าง Angular CLI มาให้ เพื่อให้ง่ายต่อการสร้าง project เพื่อให้ง่ายต่อการสร้างส่วนต่าง ๆ เช่น component, router, service และ pipe เพื่อ start server เพื่อทดสอบ และ ตรวจสอบ code ด้วย lint ทั้งหมดนี้ทำงานบน command line ทำการติดตั้ง Angular CLI ด้วยคำสั่ง (ต้องติดตั้ง NPM ก่อนนะ) [code] $npm install -g @angular/cli [/code] จากนั้นทำการสร้าง project ด้วยคำสั่ง [code] $ng new ชื่อ project [/code]
ใช้เวลาการสร้างและติดตั้ง library ต่าง ๆ นานพอสมควร !!
[gist id="ba9f24823e9d3821acc5fe4b3838307b" file="1.txt"] ผลที่ได้คือ สร้าง folder ใหม่ขึ้นมาเป็นชื่อ project นั่นเอง เมื่อเข้าไปดูใน folder จะมีโครงสร้างดังนี้ [gist id="ba9f24823e9d3821acc5fe4b3838307b" file="2.txt"] คำอธิบาย มันเยอะมาก ๆ !! โดย folder ที่สำคัญมาก ๆ คือ src เป็นที่จัดเก็บ code ทั้งหมดของ project จากนั้นทำการ start server ด้วยคำสั่ง [code] $ng serve [/code] จะทำการ start server ที่ port 4200 ดังนั้นเข้าไปดูผลการทำงานได้ใน browser ดังนี้

ขั้นตอนที่ 2 มาศึกษาโครงสร้าง project ที่สร้างกันหน่อย

เริ่มอ่านจากไฟล์ index.html ซึ่งจะมี tag ที่งงมาก ๆ คือ app-root !! มันคืออะไร มาจากไหน คำถามเต็มไปหมด [gist id="ba9f24823e9d3821acc5fe4b3838307b" file="index.html"] มาหาคำตอบกัน โดยเริ่มจากเข้าไปดูไฟล์ชื่อว่า app.module.ts ใน folder app [gist id="ba9f24823e9d3821acc5fe4b3838307b" file="app.module.ts"] ให้สังเกตุว่าในส่วนของ bootstrap จะมีค่าคือ AppComponent bootstrap ใช้กำหนดว่า component ที่เป็นตัวหลักในการทำงาน โดยจะอ้างอิงไปยังไฟล์ app.component.ts ส่วนพวกไฟล์ css และ html หรือ template ก็จะชื่อเดียวกัน (เป็น convention พื้นฐาน แต่เปลี่ยนได้นะ) เมื่อเปิดไฟล์ app.component.ts จะเห็น selector ชื่อว่า app-root เห็นการกำหนด templateUrl และ styleUrls ไปยังไฟล์ต่าง ๆ น่าจะทำให้เข้าใจมากยิ่งขึ้น แน่นอนว่า ถ้าไม่ชอบก็แก้ไขกันได้เลย [gist id="ba9f24823e9d3821acc5fe4b3838307b" file="app.component.ts"]
ปล. เมื่อแก้ไขและบันทึกแล้ว จะทำการ compile และ reload หน้าให้แบบอัตโนมัติด้วยนะ มันสะดวกสบายมาก ๆ

ขั้นตอนที่ 3 เพื่อความเข้าใจมากขึ้น มาลองสร้างระบบขำ ๆ นิดหน่อย

มีเป้าหมายเพื่อสร้าง component และการใช้งาน routing เพื่อจัดการ URI สวย ๆ ของ project
สิ่งที่ต้องการคือ ในหน้าหลักของระบบจะมี menu ไปสองหน้าคือ Welcome และ Ippo
แสดงดังนี้ ดังนั้นสิ่งที่ต้องทำก่อนเลยคือ สร้าง component ทั้งสองขึ้นมาก่อนผ่าน Angular CLI ซึ่งจะทำการสร้าง folder ย่อยขึ้นมาใน folder app ตามชื่อของ component ดังนี้ [gist id="ba9f24823e9d3821acc5fe4b3838307b" file="create_component.txt"] ต่อจากนี้ก็ไปเขียน code ในแต่ละ component ตามที่เราต้องการ ดูเพิ่มเติมได้จาก Github :: Up1 :: Angular Ippo สิ่งที่ angular CLI ทำให้อีกคือ การเพิ่ม import component ในไฟล์ app.module.ts ให้ด้วย [gist id="ba9f24823e9d3821acc5fe4b3838307b" file="app.module_v2.ts"] เมื่อทุกอย่างเรียบร้อยมาทำการสร้าง Routing สำหรับ URI ไปยัง component ต่าง ๆ กันดีกว่า เพื่อสร้าง link ของแต่ละ menu จากหน้าหลัก โดยสิ่งที่ต้องการคือ
  • /welcome สำหรับหน้า link Welcome และ ให้เป็น default page ของระบบ ถ้าไม่เจอ URI ใด ๆ ก็มาหน้านี้
  •  /ippo สำหรับแสดงหน้า link Ippo
ให้ทำการเพิ่ม code ในไฟล์ app.module.ts ประกอบไปด้วย การ import RouterModule ทำการกำหนด routing ในส่วนของ NgModule ดังนี้ [gist id="ba9f24823e9d3821acc5fe4b3838307b" file="app.module_v3.ts"] เพียงเท่านี้ก็สามารถสร้าง component และ routing ของระบบแบบง่าย ๆ ได้แล้วครับ Demo ของระบบผมเอาขึ้นไว้ที่นี่ Demo Hello with Ippo
มาถึงตรงจะนี้แล้วจะอ่านกันไปทำไม ลงมือทำเถอะนะ ยังมีเรื่องต่าง ๆ ให้ศึกษาอีกมากมาย
ขอให้สนุกกับการ coding ครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles