Chrome Dev Summit - ส่วนประกอบแบบโพลิเมอร์ มีการห่อหุ้ม และนำมาใช้ใหม่ได้

Polymer เป็นประตูสู่อนาคตอันน่าทึ่งของ Web Components เราต้องการให้การใช้และสร้างองค์ประกอบที่กำหนดเองเป็นเรื่องง่าย ตลอดปีที่ผ่านมา ทีมของเราได้ทุ่มเททำงานเกี่ยวกับชุด polyfill สำหรับข้อกำหนดที่พัฒนาอย่างต่อเนื่อง นอกจากนี้ เรายังได้สร้างไลบรารี Sugaring ที่สะดวกเพื่อให้การสร้างคอมโพเนนต์เว็บง่ายขึ้น สุดท้าย เรากำลังสร้างชุด UI และองค์ประกอบยูทิลิตีเพื่อนำไปใช้ซ้ำในแอป ในงาน Chrome Dev Summit ปี 2013 เราได้เจาะลึกส่วนต่างๆ ของ Polymer และปรัชญาเบื้องหลังคําขวัญ "ทุกอย่างคือองค์ประกอบ"

สไลด์: http://html5-demos.appspot.com/static/cds2013/index.html

"ทุกอย่างคือองค์ประกอบ" (จาก <select> ไปจนถึงองค์ประกอบที่กําหนดเอง)

สไลด์: http://html5-demos.appspot.com/static/cds2013/index.html#6

การสร้างหน้าเว็บในยุค 90 นั้นมีข้อจํากัด แต่ก็มีประสิทธิภาพ เราใช้องค์ประกอบได้เพียงไม่กี่อย่าง สิ่งที่ยอดเยี่ยมคือทุกอย่างเป็นแบบประกาศ การสร้างหน้าเว็บ เพิ่มตัวควบคุมแบบฟอร์ม และสร้าง "แอป" โดยไม่ต้องเขียน JavaScript จำนวนมากนั้นง่ายดายมาก

มาดูองค์ประกอบ <select> ที่แสนธรรมดา องค์ประกอบนี้มีฟังก์ชันการทำงานมากมายในตัว เพียงประกาศองค์ประกอบดังนี้

  • ปรับแต่งได้ผ่านแอตทริบิวต์ HTML
  • แสดงผลรายการย่อย (เช่น <option>) ด้วย UI เริ่มต้น แต่กําหนดค่าได้ผ่านแอตทริบิวต์
  • มีประโยชน์ในบริบทอื่นๆ เช่น <form>
  • มี DOM API: พร็อพเพอร์ตี้และเมธอด
  • เริ่มทํางานเมื่อเกิดเหตุการณ์ที่น่าสนใจ

คอมโพเนนต์เว็บมีเครื่องมือที่จะช่วยให้การพัฒนาเว็บกลับมารุ่งเรืองอีกครั้ง รูปแบบที่เราสามารถสร้างสรรค์องค์ประกอบใหม่ๆ ซึ่งชวนให้นึกถึง <select> แต่ออกแบบมาเพื่อกรณีการใช้งานในปี 2014 ตัวอย่างเช่น หาก AJAX เกิดขึ้นในวันนี้ แท็ก AJAX อาจเป็นแท็ก HTML (ตัวอย่าง)

<polymer-ajax url="http://gdata.youtube.com/feeds/api/videos/"
                params='{"alt":"json"}'></polymer-ajax>

หรือองค์ประกอบที่ปรับเปลี่ยนตามพื้นที่โฆษณาซึ่งเชื่อมโยงข้อมูลกับแอตทริบิวต์ queryMatches

<polymer-media-query query="max-width:640px" queryMatches="">

ซึ่งแนวทางนี้ตรงกับที่เราใช้ใน Polymer มาสร้างองค์ประกอบที่นํากลับมาใช้ซ้ำได้แทนการสร้างเว็บแอปแบบโมโนลิธิคที่ใช้ JavaScript เมื่อเวลาผ่านไป แอปทั้งแอปจะพัฒนาขึ้นจากองค์ประกอบเล็กๆ ประกอบกัน แม้แต่แอปทั้งแอปก็อาจเป็นองค์ประกอบได้

<my-app></my-app>

การสร้างคอมโพเนนต์เว็บด้วย "ซอสพิเศษ" ของ Polymer

สไลด์: http://html5-demos.appspot.com/static/cds2013/index.html#37

Polymer มีความสะดวกหลายอย่างสําหรับการสร้างแอปพลิเคชันที่ใช้คอมโพเนนต์เว็บ

  • การลงทะเบียนองค์ประกอบแบบประกาศ: <polymer-element>
  • การสืบทอดแบบประกาศ: <polymer-element extends="...">
  • การเชื่อมโยงข้อมูลแบบ 2 ทางแบบประกาศ: <input id="input" value="">
  • ตัวแฮนเดิลเหตุการณ์แบบประกาศ: <button on-click=""
  • พร็อพเพอร์ตี้ที่เผยแพร่: xFoo.bar = 5 <-> <x-foo bar="5">
  • การสังเกตพร็อพเพอร์ตี้: barChanged: function() {...}
  • PointerEvents / PointerGestures โดยค่าเริ่มต้น

สรุปก็คือการเขียนองค์ประกอบ Polymer นั้นเน้นที่การประกาศ ยิ่งเขียนโค้ดน้อยลงก็ยิ่งดี ;)

คอมโพเนนต์เว็บ: อนาคตของการพัฒนาเว็บ

สไลด์: http://html5-demos.appspot.com/static/cds2013/index.html#26

เราคงต้องพูดถึงมาตรฐานที่อยู่เบื้องหลัง Web Components ท้ายที่สุดแล้ว Polymer ก็อิงตาม API พื้นฐานที่พัฒนาอย่างต่อเนื่องเหล่านี้

เรากําลังอยู่ในช่วงหัวเลี้ยวหัวต่อที่น่าตื่นเต้นมากในการพัฒนาเว็บ API ต่างๆ ที่ประกอบกันเป็น Web Components ไม่ได้เป็นฟีเจอร์ใหม่ล่าสุดหรือแสดงต่อผู้ใช้ ต่างจากฟีเจอร์อื่นๆ ที่เพิ่มลงในแพลตฟอร์มเว็บ ฟีเจอร์เหล่านี้มีไว้เพื่อประสิทธิภาพการทำงานของนักพัฒนาซอฟต์แวร์เท่านั้น API หลัก 4 รายการแต่ละรายการมีประโยชน์ในตัวเองอยู่แล้ว แต่เมื่อนำมาใช้ร่วมกันแล้ว สิ่งมหัศจรรย์จะเกิดขึ้น

  1. Shadow DOM - การรวมสไตล์และ DOM
  2. องค์ประกอบที่กำหนดเอง - กําหนดองค์ประกอบ HTML ใหม่ ระบุ API ที่มีพร็อพเพอร์ตี้และเมธอด
  3. การนําเข้า HTML คือรูปแบบการจัดจำหน่ายแพ็กเกจ CSS, JS และ HTML
  4. เทมเพลต - เทมเพลต DOM ที่เหมาะสมสําหรับการกําหนดกลุ่มมาร์กอัปที่ไม่มีการเปลี่ยนแปลงซึ่งจะประทับตราในภายหลัง

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับพื้นฐานของ API โปรดไปที่ webcomponents.org