Elemen Tersuai Dilepaskan: Dominando customElements.define() dan .get() como um Jedi do Front-end!

DDD
Lepaskan: 2024-11-01 08:59:30
asal
257 orang telah melayarinya

Custom Elements Unleashed: Dominando customElements.define() e .get() como um Jedi do Front-end!

Hei, rakan-rakan dev! Bersedia untuk membuka kunci rahsia alam semesta Elemen Tersuai? Hari ini kita akan menyelam jauh ke dalam kuasa customElements.define() dan customElements.get() - senjata rahsia yang perlu dikuasai oleh setiap Jedi bahagian hadapan!

?️ customElements.define(): Mencipta Pokémon anda sendiri... Maksud saya, Element!

Bayangkan anda seorang saintis front-end yang gila dan ingin mencipta makhluk HTML anda sendiri. Di situlah customElements.define() masuk. Ia seperti mesin pengklonan Mewtwo, tetapi untuk elemen web!

class ElementoTopzera extends HTMLElement {
  constructor() {
    super();
    this.innerHTML = `<p>Eu sou incrível e customizado!</p>`;
  }
}

customElements.define('elemento-topzera', ElementoTopzera);
Salin selepas log masuk

Kini anda boleh menggunakan elemen anda seolah-olah ia berasal dari HTML:

<elemento-topzera></elemento-topzera>
Salin selepas log masuk

BOOM! ? Anda baru mencipta kehidupan... di DOM!

?‍♂️ Contoh ajaib untuk menarik perhatian rakan dev anda

  1. Butang Kaunter Bayangkan butang yang mengira berapa kali ia telah diklik. Ia seperti kad skor untuk kesabaran anda dalam menyahpepijat!
class BotaoContador extends HTMLElement {
  constructor() {
    super();
    this.count = 0;
    this.innerHTML = `
      <button>Cliques: <span>0</span></button>
    `;
    this.addEventListener('click', () => {
      this.count++;
      this.querySelector('span').textContent = this.count;
    });
  }
}

customElements.define('botao-contador', BotaoContador);
Salin selepas log masuk
  1. Kad Profil Kad profil yang lebih boleh disesuaikan daripada watak RPG!
class CardPerfil extends HTMLElement {
  constructor() {
    super();
    const nome = this.getAttribute('nome') || 'Dev Anônimo';
    const skill = this.getAttribute('skill') || 'Café++';

    this.innerHTML = `
      <div style="border: 2px solid #333; padding: 10px; margin: 10px;">
        <h2>${nome}</h2>
        <p>Skill Suprema: ${skill}</p>
      </div>
    `;
  }
}

customElements.define('card-perfil', CardPerfil);
Salin selepas log masuk

Gunakan seperti ini, lihat:

<card-perfil nome="ZézimDev" skill="Bug Hunter"></card-perfil>
Salin selepas log masuk

?️‍♂️ customElements.get(): Sherlock Holmes of Elements

Sekarang, bagaimana jika anda ingin menyiasat sama ada unsur tersuai sudah wujud? Di situlah customElements.get() masuk - detektif peribadi dunia Komponen Web!

const ElementoTopzera = customElements.get('elemento-topzera');

if (ElementoTopzera) {
  console.log('Elemento encontrado! Hora do show!');
  // Faz alguma mágica aqui
} else {
  console.log('404 Elemento Not Found');
}
Salin selepas log masuk

?️ Gunakan bekas yang lebih sejuk daripada arked 80-an

  1. Malas Memuatkan komponen Muatkan komponen hanya apabila anda memerlukannya, menjimatkan lebih banyak memori daripada pengaturcara yang cuba mengingati tempat dia meletakkan koma bertitik:
function carregaComponenteSeNecessario(nomeElemento) {
  if (!customElements.get(nomeElemento)) {
    import(`./components/${nomeElemento}.js`)
      .then(() => console.log(`${nomeElemento} carregado e pronto pra ação!`))
      .catch(err => console.error(`Oops, deu ruim ao carregar ${nomeElemento}`, err));
  }
}

carregaComponenteSeNecessario('super-tabela');
Salin selepas log masuk
  1. Semakan Keselamatan Semak bahawa beberapa unsur jahat tidak cuba menyamar sebagai anda:
function elementoSeguro(nomeElemento) {
  const elemento = customElements.get(nomeElemento);
  if (elemento && elemento.prototype instanceof HTMLElement) {
    console.log('Elemento verificado e aprovado! ?');
    return true;
  }
  console.warn('Elemento suspeito detectado! ?');
  return false;
}

elementoSeguro('botao-contador'); // true, se definido anteriormente
elementoSeguro('virus-malicioso'); // false, espero eu! ?
Salin selepas log masuk

? Pelajaran daripada Master Jedi Front-end

  1. Nama Unik: Pilih nama elemen seperti nama pengguna rangkaian sosial - unik dan dengan sempang di tengah!
  2. Semak Sebelum: Sentiasa gunakan customElements.get() sebelum menentukan, supaya tidak menyebabkan gangguan dalam ruang masa DOM.
  3. Maju Dengan Bijak: Inginkan kuasa besar tambahan? Panjangkan elemen asli:
   class SuperButton extends HTMLButtonElement {
     // Código supimpa aqui
   }
   customElements.define('super-button', SuperButton, { extends: 'button' });
Salin selepas log masuk

? Menjadi Sarjana Elemen!

Dengan customElements.define() dan customElements.get(), anda sudah bersedia untuk membuat web yang lebih tersuai daripada persediaan streamer! Ingat: dengan kuasa yang hebat datang peluang besar untuk mencipta komponen yang luar biasa!

Kini terpulang kepada anda! Buat elemen anda dan revolusikan web! Dan jika anda terperangkap dalam pepijat, tarik nafas dalam-dalam dan fikirkan: "Apakah yang akan dilakukan oleh Linus Torvalds?" ??

Adakah anda ingin menyelidiki lebih mendalam tentang pelbagai kemungkinan ini? Lihat dokumentasi rasmi Elemen Tersuai di MDN. Ia seperti grimoire ahli sihir bahagian hadapan! ?✨

Apa khabar, dev? Adakah anda teruja untuk mencipta elemen anda sendiri? Kongsi dalam komen apakah elemen gila yang akan anda cipta! Mungkin lain kali kita akan buat yang menukar kod menjadi kopi! ☕?

Semoga kod itu bersama anda, sentiasa! ???

Atas ialah kandungan terperinci Elemen Tersuai Dilepaskan: Dominando customElements.define() dan .get() como um Jedi do Front-end!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!