ลบโค้ดที่ไม่ได้ใช้

Houssein Djirdeh
Houssein Djirdeh

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

ผลกระทบต่อ Core Web Vitals

การนำโค้ดที่ไม่ได้ใช้ออกช่วยให้คุณปรับปรุง Core Web Vitals ของเว็บไซต์ได้ ตัวอย่าง Largest Contentful Paint อาจได้รับผลกระทบจากโค้ดที่ไม่ได้ใช้งานเมื่อเนื้อหาขนาดใหญ่ที่ไม่จำเป็นแข่งขันกันแบนด์วิดท์กับทรัพยากรอื่นๆ นอกจากนี้ LCP ยังอาจได้รับผลกระทบหากเนื้อหา JavaScript ขนาดใหญ่ที่แสดงผลมาร์กอัปเฉพาะในไคลเอ็นต์มีการอ้างอิงไ��ยังตัวเลือก LCP โดยการเลื่อนเวลาโหลดทรัพยากรเหล่านี้

โค้ดที่ไม่ได้ใช้อาจกระทบต่อการโต้ตอบกับ Next Paint (INP) เนื่องจากต้องมีการดาวน์โหลด แยกวิเคราะห์ คอมไพล์ และเรียกใช้ JavaScript ที่ไม่ได้ใช้ด้วย โค้ดที่ไม่ได้ใช้งานอาจทำให้เกิดความล่าช้าที่ไม่จำเป็นในเวลาในการโหลดทรัพยากร การใช้งานหน่วยความจำ และกิจกรรมเทรดหลักซึ่งทำให้การตอบสนองของหน้าเว็บไม่ดี

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

วิเคราะห์แพ็กเกจ

เครื่องมือสำหรับนักพัฒนาเว็บแสดงขนาดของคำขอเครือข่ายทั้งหมดได้ดังนี้

  1. กด "Control+Shift+J" (หรือ "Command+Option+J" ใน Mac) เพื่อเปิดเครื่องมือสำหรับนักพัฒนาเว็บ
  2. คลิกแท็บเครือข่าย
  3. เลือกช่องทำเครื่องหมายปิดใช้แคช
  4. โหลดหน้าเว็บซ้ำ
แผงเครือข่ายที่มีคำขอแพ็กเกจ
เครื่องมือสำหรับนักพัฒนาเว็บที่แสดงขนาดไฟล์ JavaScript

แท็บการครอบคลุมใน DevTools ยังบอกด้วยว่าโค้ด CSS และ JS ในแอปพลิเคชันของคุณไม่มีการใช้งานเท่าใด

การครอบคลุมของโค้ดในเครื่องมือสำหรับนักพัฒนาเว็บ
แท็บ "การครอบคลุม"

เมื่อระบุการกำหนดค่าทั้งหมดของ Lighthouse ผ่าน Node CLI แล���ว ����ณ����เรียกใช้การ����วจสอบ Reduce ไม่ได้ใช้งาน JavaScript เพื่อติดตามจำนวนที่จัดส่งโค้ดที่ไม่ได้ใช้ไปกับแอปพลิเคชันของคุณได้

รายงาน JavaScript ของ Lighthouse Reduce ที่ไม่ได้ใช้
ลดรายงาน JavaScript ที่ไม่ได้ใช้งาน

หากคุณใช้ Webpack เป็นไฟล์ Bundle ตัววิเคราะห์ Bundle ของ Webpack จะช่วยคุณตรวจสอบองค์ประกอบของ Bundle นั้นได้ ใส่ปลั๊กอินในไฟล์การกำหนดค่า Webpack เช่นเดียวกับปลั๊กอินอื่นๆ

module.exports = {
  //...
  plugins: [
    //...
    new BundleAnalyzerPlugin()
  ]
}

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

การโหลดแอปพลิเคชันซ้ำที่มีปลั๊กอินนี้อยู่จะแสดงแผนผังต้นไม้ที่ซูมได้ของทั้งแพ็กเกจ

ตัววิเคราะห์ชุด Webpack
มุมมองแบบต้นไม้ของ Webpack Bundle Analysisr

การแสดงภาพนี้จะแสดงให้เห็นว่าส่วนใดของ Bundle มีขนาดใหญ่กว่าส่วนอื่นๆ เพื่อให้คุณเข้าใจจำนวนและขนาดของไลบรารีที่แอปพลิเคชันนำเข้าได้ดีขึ้น ซึ่งจะช่วยร��บุได้ว่าคุณกำลังใช้ไลบรารีที่ไม่ได้ใช้หรือไม่จำเป็นหรือไม่

นำไลบรารีที่ไม่ได้ใช้ออก

ในรูปภาพทรีแม็ปก่อนหน้านี้ มีแพ็กเกจอยู่ 2-3 แพ็กเกจภายในโดเมน @firebase โดเมนเดียว หากเว็บไซต์ต้องใช้คอมโพเนนต์ฐานข้อมูล Firebase เท่านั้น ให้อัปเดตการนำเข้าเพื่อดึงข้อมูลไลบรารีนั้น

import firebase from 'firebase';
import firebase from 'firebase/app';
import 'firebase/database';

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

หากคุณใช้ Webpack ให้ดูรายการปลั๊กอินที่นำโค้ดที่ไม่ได้ใช้ออกจากไลบรารียอดนิยมโดยอัตโนมัติ

นำไลบรารีที่ไม่จำเป็นออก

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