Daraxt silkidi - Tree shaking

Yilda hisoblash, daraxt silkinishi a o'lik kodni yo'q qilish yozilgan kodni optimallashtirishda qo'llaniladigan texnika ECMAScript kabi lahjalar Dart, JavaScript, yoki TypeScript tomonidan yuklangan bitta to'plamga veb-brauzer. Odatda kichraytirgichlar uchun odatiy bitta kutubxonada o'lik kodlarni yo'q qilishning an'anaviy usullari bilan farq qiladi, daraxtlarni chayqash kirish nuqtasidan boshlab va faqat bajarilishi mumkin bo'lgan funktsiyalarni o'z ichiga olgan foydalanilmagan funktsiyalarni yo'q qiladi. [1][2]. U qisqacha "jonli kodni kiritish" deb ta'riflanadi.

Tarix

Dinamik tillarda o'lik kodni yo'q qilish statik tillarga qaraganda ancha qiyin muammo. "Xiyonatkor" g'oyasi kelib chiqqan LISP[3] 1990-yillarda. G'oya shundan iboratki, dasturning barcha mumkin bo'lgan ijro oqimlari funktsiya chaqiruvlari daraxti sifatida ifodalanishi mumkin, shuning uchun hech qachon chaqirilmagan funktsiyalarni yo'q qilish mumkin.

Algoritm qo'llanilgan JavaScript yilda Google yopish vositalari va keyin Dart tomonidan yozilgan dart2js kompilyatorida Google, Bob Nystrom tomonidan 2012 yilda taqdim etilgan[4][2] va 2013 yilda muallif Kris Bucketning "Dart in Action" kitobida tasvirlangan:

Kod Dart-dan JavaScript-ga o'zgartirilganda, kompilyator "daraxtlarni silkitadi". JavaScript-da siz faqat bitta funktsiya uchun kerak bo'lsa ham, butun kutubxonani qo'shishingiz kerak, lekin daraxtni silkitishi tufayli Dart-dan olingan JavaScript-ni faqat kutubxonadan kerak bo'lgan individual funktsiyalar o'z ichiga oladi

— Kris Bucket

Ushbu atamaning mashhurligining keyingi to'lqini Rich Harrisning "Rollup" loyihasi bilan bog'liq[5] 2015 yilda ishlab chiqilgan.

ECMAScript 6 modullari bilan bog'liqlik

JavaScript-da daraxtlarni chayqashning ommabopligi shundan iboratki, CommonJS modullaridan farqli o'laroq, ECMAScript 6 modulini yuklash statik bo'ladi va shuning uchun sintaksis daraxtini statik ravishda ajratish orqali butun qaramlik daraxtini aniqlash mumkin. Shunday qilib daraxtlarni chayqash oson muammoga aylanadi. Biroq, daraxtlarni silkitish nafaqat import / eksport darajasida amal qiladi: amalga oshirilishiga qarab, u bayonot darajasida ham ishlashi mumkin.[iqtibos kerak ]

Adabiyotlar

  1. ^ Xarris, boy. "O'lik kodlarni yo'q qilish bilan daraxtlarni silkitib tashlash". Olingan 16 sentyabr 2020.
  2. ^ a b Ladd, Set. Set Laddning blogi http://blog.sethladd.com/2013/01/minification-is-not-enough-you-need.html. Yo'qolgan yoki bo'sh sarlavha = (Yordam bering)
  3. ^ comp.lang.lisp xayrixoh nima?
  4. ^ Google Dart JavaScript-ning tezligi va o'lchovi bilan bog'liq muammolarni hal qila oladimi?
  5. ^ Qanday qilib JavaScript-ni daraxtlarni silkitishi bilan tozalash kerak