Tutorial

Google Web Polymer - Auto Binding-Template (EP.5)

By Arnon Puitrakul - 30 มีนาคม 2015

Google Web Polymer - Auto Binding-Template (EP.5)

เมื่อตอนที่ผ่านๆมาเราได้เรียนรู้เรื่องของการ สร้างโครงสร้างของหน้าไปบ้างแล้ว ตอนหลังนี้จะเป็นเรื่องของการผูกข้อมูล หรือเรียกดีๆว่า Data-Binding แต่ก่อนจะพูดถึงเรื่องนั้น เราต้องมาพูดถึงเรื่อง Data-Binding กันก่อน

Data-Blinding คืออะไร?

ภาษาไทยเราเรียกว่า การผูกข้อมูล (เรียกแล้วแปลกๆเรียก Data-Binding นี่แหละนะ) มันคือการทำให้ Content เราเป็น Dynamic คือ Content ในหน้าเว็บมันดึงหรือสร้างมาจากที่สักที่นึง ที่ไม่ใช่ข้อมูลตายตัว

มันทำงานยังไง?

ตามปกติแล้ว ในการสร้างเว็บที่ Dynamic หรือไม่ต้อง Refresh หน้าใหม่ Content ข้างในก็ Update ได้เองนั้น เราจะใช้สิ่งที่เรียกว่า AJAX ซึ่งวิธีการทำงานของมันก็คือ

  • JS จะส่ง Request ไปหา Web Server
  • Web Server ส่งข้อมูลกลับมา
  • ลบข้อมูลของเก่าที่แสดงทิ้ง
  • สร้างที่วางข้อมูลใหม่
  • เอาข้อมูลที่ได้จาก Web Server มาวางลงไปในที่วางที่พึ่งสร้าง
    จากที่เห็น Process แบบนี้ทำให้เราเปลืองทรัพยากรในการสร้าง ตัววางข้อมูลใหม่ ใน Polymer จึงมีวิธีใหม่ในการจัดการกับข้อมูล โดยการ ไม่ลบตัววางข้อมูลทิ้ง แต่ เปลี่ยนค่าในนั้นแทน ทำให้ประสิทธิภาพดีขึ้นอย่างไม่น่าเชื่อ (ตอนแรกก็ งง อยู่เหมือนกัน)

มาลองเล่นกัน

ผมจะใช้ไฟล์จาก เมื่อ EP. ที่แล้วเลยนะครับ เหมือนเดิม เอามาทำต่อ ก่อนอื่นจับ Tag Template คร่อมกับ core-drawer-panel (คร่อมอีกแล้ว 555 จากโค๊ตสั้นๆกลายๆเป็นอะไรไม่รู้ไปแล้ว แอบ งง เบาๆ) และใน Tag Template เราจะเติมประเภทของ Data-Blinding เป็น Auto-Blinding โดย เติม is = "auto-blinding" เข้าไป สุดท้ายก็เติมชื่อให้มันหน่อยเป็น id = "tmpl"
ต่อไปเราจะไปปรับ Index.html ต่อ ให้มันรองรับกับ js ที่เรากำลังจะเขียน ตอนนี้ผมจะให้มันขึ้นว่าเราอยู่หน้าไหนแล้วล่ะกัน ไปเติม

 <div>You're on page : {{selected}}</div>

ใน div tag ของ content การใส่ {{ชื่อตัวแปร}} เป็นการทำให้ js รู้ว่า section นี้ชื่ออะไร และอยู่ตรงไหนของหน้า เพื่อที่เราจะเขียน js เพื่อเปลี่ยนมัน
และเปลี่ยนอีกจุดคือ core-menu

 <core-menu selected = "{{selected}}">
 <core-item label = "one"></core-item>
 <core-item label = "two"></core-item>
 </core-menu>

โดยการเพิ่ม Properity ที่ชื่อว่า Selected เข้าไปและให้ มันมีค่าเป็นตัวแปร selected ใน js
หลังจากเราแก้หน้า index.html เรียบร้อยแล้ว เราจะไปแก้หน้า app.js กันต่อ

var tmpl = document.querySelector('#tmpl');
tmpl.selected = 0;

ผมเพิ่ม 2 บรรทัดนี้เข้าไป บรรทัดแรก คือการสร้างตัวแปรใน js เพื่อกำหนด tag ที่เราต้องการเข้าถึงด้วย querySelector() ตามด้วย id ของ div ส่วนที่เราต้องการ ในที่นี้ผมต้องการชื่อ tmpl ที่เราได้ตั้งเอาไว้ก่อนหน้านี้
วิธีการเข้าถึงตัวแปร ก็ไม่ยากครับ ตามบรรทัดที่ 2 เลยนั่นคือชื่อ tag ตามด้วยชื่อของ ตัวแปรที่เราตั้งชื่อไว้ใน {{}} นั่นเอง
สรุปวันนี้เราก็ได้เรียนเรื่องของ

Read Next...

นายเองก็ดูเทพได้นะ ด้วย tmux น่ะ

นายเองก็ดูเทพได้นะ ด้วย tmux น่ะ

เมื่อหลายวันก่อน เราไปทำงานแล้วใช้ Terminal แบบปีศาจมาก ๆ จนเพื่อนถามว่า เราทำยังไงถึงสามารถสลับ Terminal Session ไปมาได้แบบบ้าคลั่งขนาดนั้น เบื้องหลังของผมน่ะเหรอกัปตัน ผมใช้ tmux ยังไงละ วันนี้เราจะมาแชร์ให้อ่านกันว่า มันเอามาใช้งานจริงได้อย่างไร เป็น Beginner Guide สำหรับคนที่อยากลองละกัน...

ปกป้อง Ubuntu ผ่าน Firewall แบบง่าย ๆ ด้วย UFW

ปกป้อง Ubuntu ผ่าน Firewall แบบง่าย ๆ ด้วย UFW

Firewall ถือว่าเป็นเครื่องมือในการป้องกันภัยขั้นพื้นฐานที่ปัจจุบันใคร ๆ ก็ติดตั้งใช้งานกันอยู่แล้ว แต่หากเรากำลังใช้ Ubuntu อยู่ จริง ๆ แล้วเขามี Firewall มาให้เราใช้งานได้เลยนะ มันชื่อว่า UFW วันนี้เราจะมาทำความรู้จัก และทดลองตั้ง Rule สำหรับการดักจับการเชื่อมต่อที่ไม่เกี่ยวข้องกันดีกว่า...

จัดการเรื่องแต่ละมื้อ แต่ละเดย์ด้วย Obsidian

จัดการเรื่องแต่ละมื้อ แต่ละเดย์ด้วย Obsidian

Obsidian เป็นโปรแกรมสำหรับการจด Note ที่เรียกว่า สารพัดประโยชน์มาก ๆ เราสามารถเอามาทำอะไรได้เยอะมาก ๆ หนึ่งในสิ่งที่เราเอามาทำคือ นำมาใช้เป็นระบบสำหรับการจัดการ Todo List ในแต่ละวันของเรา ทำอะไรบ้าง วันนี้เราจะมาเล่าให้อ่านกันว่า เราจัดการะบบอย่างไร...

Loop แท้ไม่มีอยู่จริง มีแต่ความจริงซึ่งคนโง่ยอมรับไม่ได้

Loop แท้ไม่มีอยู่จริง มีแต่ความจริงซึ่งคนโง่ยอมรับไม่ได้

อะ อะจ๊ะเอ๋ตัวเอง เป็นยังไงบ้างละ เมื่อหลายเดือนก่อน เราไปเล่าเรื่องกันขำ ๆ ว่า ๆ จริง ๆ แล้วพวก Loop ที่เราใช้เขียนโปรแกรมกันอยู่ มันไม่มีอยู่จริง สิ่งที่เราใช้งานกันมันพยายาม Abstract บางอย่างออกไป วันนี้เราจะมาถอดการทำงานของ Loop จริง ๆ กันว่า มันทำงานอย่างไรกันแน่ ผ่านภาษา Assembly...