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

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

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

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

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

โครงสร้าง

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

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

...และด้วยพลังของการจัดวางองค์ประกอบ ให้รวมองค์ประกอบเหล่านั้นเข้ากับองค์ประกอบหลายๆ อย่างเพื่อสร้างโครงสร้างการประยุกต์ใช้

Polymer ช่วยให้ Web Components มีคุณภาพดีขึ้น

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

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

Polymer ช่วยให้ Web Components มีคุณภาพดีขึ้น

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

การเปลี่ยนฉาก

ด้วยส่วนต่างๆ ของแอปที่ออกแบบและนำมาใช้ งานถัดไปคือการหาวิธีไปยังส่วนต่างๆ ของแอป

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

ต้องปรับปรุงการ์ดรายงานพอลิเมอร์

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

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

เราเตอร์ที่จำเป็น (เช่น Flatiron's Director) จะคอยฟังเส้นทางที่ตรงกัน จากนั้นแจ้งให้ core-animated-pages อัปเดตรายการที่เลือกไว้

ต้องปรับปรุงการ์ดรายงานพอลิเมอร์

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

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

ต้องปรับปรุงการ์ดรายงานพอลิเมอร์

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

การแสดง

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

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

ต้องปรับปรุงการ์ดรายงานพอลิเมอร์

ไม่มีเหตุผลที่จะก่อให้เกิดค่าใช้จ่ายทั้งหมด หากแพลตฟอร์มมีการรองรับอย่างเต็มรูปแบบอยู่แล้ว นอกจากนี้ ในที่เก็บ webcomponents.js ใหม่ทุกเวอร์ชัน polyfills ยังถูกแยกออกเป็นไฟล์เดี่ยวๆ อีกด้วย วิธีนี้มีประโยชน์หากคุณต้องการโหลดชุดย่อยของ 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

ต้องปรับปรุงการ์ดรายงานพอลิเมอร์

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

ออฟไลน์

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

Jake Archibald เพิ่งเผยแพร่ตำราอาหารที่น่าทึ่งเกี่ยวกับรูปแบบของโปรแกรมทำงานของบริการ แต่ฉันจะขอแนะนำวิธีเริ่มต้นคร่าวๆ ให้คุณดังนี้

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

ต้องปรับปรุงการ์ดรายงานพอลิเมอร์

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

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

ต้องปรับปรุงการ์ดรายงานพอลิเมอร์

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

ต่อไป!

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