มาสร้างแอปที่ใช้ Polymer กันเลย

ในปีที่ผ่านมา ทีม Polymer ได้ใช้เวลามากมายไปกับการสอนให้นักพัฒนาแอปสร้างองค์ประกอบของตนเอง ซึ่งนำไปสู่ระบบนิเวศที่เติบโตอย่างรวดเร็วโดยอาศัยองค์ประกอบ Core และ Paper ของ Polymer และองค์ประกอบ Brick ที่สร้างโดยทีม Mozilla

เมื่อนักพัฒนาซอฟต์แวร์คุ้นเคยกับการสร้างองค์ประกอบของตนเองมากขึ้นและเริ่มคิดเกี่ยวกับการสร้างแอปพลิเคชัน ก็จะมีคำถามมากมายดังนี้

  • คุณควรกำหนดโครงสร้าง UI ของแอปพลิเคชันอย่างไร
  • คุณจะเปลี่ยนผ่านรัฐต่างๆ อย่างไร
  • กลยุทธ์ในการปรับปรุงประสิทธิภาพมีอะไรบ้าง
  • และคุณควรมอบประสบการณ์การใช้งานแบบออฟไลน์อย่างไร

สำหรับงาน Chrome Dev Summit เราพยายามตอบคำถามเหล่านี้โดยสร้างแอปพลิเคชันรายชื่อติดต่อขนาดเล็กและวิเคราะห์กระบวนการที่ใช้ในการสร้างขึ้นมา นี่คือสิ่งที่ฉันคิดขึ้นมาได้

โครงสร้าง

การแบ่งแอปพลิเคชันออกเป็นชิ้นส่วนย่อยๆ ที่สามารถรวมเข้าด้วยกันและนำมาใช้ใหม่ถือเป็นกลุ่มผู้ใช้หลักของ Web Components องค์ประกอบ Core-* และกระดาษ* ของ Polymer ช่วยให้เริ่มต้นด้วยชิ้นเล็กๆ ได้ง่ายๆ เช่น แถบเครื่องมือหลักและปุ่มไอคอนกระดาษ...

โพลิเมอร์ช่วยให้นักพัฒนาซอฟต์แวร์สร้างแอปพลิเคชันได้เร็วขึ้น

...และนำผลที่ได้มารวมเข้ากับองค์ประกอบหลายๆ อย่างเพื่อสร้างโครงสำหรับแอปพลิเคชัน

Polymer ทำให้คอมโพเนนต์เว็บทำงานได้ดียิ่งขึ้น

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

องค์ประกอบหนึ่งที่เหมาะสมอย่างยิ่งสำหรับการจัดการเนื้อหาจำนวนมากคือ core-list

Polymer ทำให้คอมโพเนนต์เว็บทำงานได้ดียิ่งขึ้น

core-list สามารถเชื่อมต่อกับแหล่งข้อมูล (โดยทั่วไปจะเป็นอาร์เรย์ของออบเจ็กต์) และสำหรับแต่ละรายการในอาร์เรย์ จะมีการประทับตราอินสแตนซ์เทมเพลต ภายในเทมเพลต คุณจะได้ใช้ประโยชน์จากระบบการเชื่อมโยงข้อมูลของ Polymer เพื่อเชื่อมโยงเนื้อหาอย่างรวดเร็ว

ทรานซิชัน

งานต่อไปคือการหาวิธีไปยังส่วนต่างๆ ของแอปจริงๆ

แม้ว่าจะยังเป็นองค์ประกอบทดลอง แต่ core-animated-pages มีระบบภาพเคลื่อนไหวที่เสียบได้ซึ่งสามารถใช้เปลี่ยนผ่านระหว่างสถานะต่างๆ ในแอปพลิเคชันของคุณได้

ต้องปรับปรุงการ์ดรายงาน Polymer

แต่ภาพเคลื่อนไหวเป็นเพียงครึ่งหนึ่งของปริศนา แอปพลิเคชันจำเป็นต้องรวมภาพเคลื่อนไหวเหล่านั้นกับเราเตอร์เพื่อจัดการ URL อย่างเหมาะสม

ในโลกของการกำหนดเส้นทางคอมโพเนนต์เว็บมี 2 รูปแบบ คือแบบความจำเป็นและแบบประกาศ การรวม core-animated-pages เข้ากับวิธีการใดวิธีการหนึ่งจะใช้ได้โดยขึ้นอยู่กับความต้องการของโปรเจ็กต์

เราเตอร์ที่สำคัญ (เช่น ผู้อำนวยการของ Flatiron) สามารถตรวจจับเส้นทางที่ตรงกัน แล้วสั่งให้ core-animated-pages อัปเดตรายการที่เลือก

ต้องปรับปรุงการ์ดรายงาน Polymer

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

ในทางกลับกัน เราเตอร์แบบประกาศ (เช่น app-Router) สามารถรวมการกำหนดเส้นทางและ core-animated-pages เป็นองค์ประกอบเดียวได้ ดังนั้นการจัดการ 2 อย่างนี้จึงเป็นไปอย่างมีประสิทธิภาพมากขึ้น

ต้องปรับปรุงการ์ดรายงาน Polymer

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

ประสิทธิภาพ

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

ประสิทธิภาพที่ทำได้ง่ายๆ มาจากการโหลด Polyfill ของ Web Components อย่างมีเงื่อนไข

ต้องปรับปรุงการ์ดรายงาน Polymer

คุณไม่จำเป็นต้องเสียค่าใช้จ่ายใดๆ ทั้งสิ้นหากแพลตฟอร์มรองรับการใช้งานอย่างเต็มรูปแบบอยู่แล้ว ในที่เก็บ webcomponents.js รุ่นใหม่ทุกเวอร์ชัน จะมีการแบ่ง Polyfill ให้เป็นไฟล์เดี่ยวๆ ด้วย ซึ่งจะเป็นประโยชน์หากคุณต้องการโหลดชุดย่อยของโพลีฟิลแบบมีเงื่อนไข

<script>
  if ('import' in document.createElement('link')) {
    // HTML Imports are supported
  } else {
    document.write(
      '<script src=“bower_components/webcomponentsjs/HTMLImports.min.js"><\/script>'
    );
  }
</script>

นอกจากนี้ยังมีเครือข่ายประโยชน์อีกจำนวนมากที่จะได้รับจากการเรียกใช้การนำเข้า HTML ทั้งหมดของคุณผ่านเครื่องมืออย่าง Vulcanize

ต้องปรับปรุงการ์ดรายงาน Polymer

Vulcanize จะเชื่อมโยงการนำเข้าของคุณไว้ในแพ็กเกจเดียว ซึ่งจะลดจำนวนคำขอ HTTP ที่แอปสร้างขึ้นอย่างมาก

ออฟไลน์

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

Jake Archibald เพิ่งเผยแพร่ตำราอาหารที่น่าตื่นตาตื่นใจเกี่ยวกับรูปแบบของ Service Worker แต่ฉันขอแนะนำสิ่งเล็กๆ น้อยๆ ก่อนเพื่อเริ่มใช้งาน

การติดตั้ง Service Worker นั้นเป็นเรื่องง่าย สร้างไฟล์ worker.js และลงทะเบียนไฟล์ดังกล่าวเมื่อแอปพลิเคชันเปิดเครื่อง

ต้องปรับปรุงการ์ดรายงาน Polymer

คุณต้องหา worker.js ในรูทของแอปพลิเคชันเพื่อให้สกัดกั้นคำขอจากเส้นทางใดก็ได้ในแอป

ในเครื่องจัดการการติดตั้งของพนักงาน ฉันจะแคชโหลดของทรัพยากร (รวมถึงข้อมูลที่ขับเคลื่อนแอป)

ต้องปรับปรุงการ์ดรายงาน Polymer

วิธีนี้ช่วยให้แอปของฉันมอบประสบการณ์การใช้งานสำรองแก่ผู้ใช้ได้เป็นอย่างน้อยหากผู้ใช้กำลังเข้าถึงแบบออฟไลน์

ก้าวต่อไป!

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