வெப் காம்போனென்ட் வாழ்க்கைச் சுழற்சியில் ஒரு ஆழமான பார்வை. தனிப்பயன் உறுப்பு உருவாக்கம், இணைப்பு, பண்பு மாற்றங்கள் மற்றும் துண்டிப்பு ஆகியவற்றை உள்ளடக்கியது. நவீன வலைப் பயன்பாடுகளுக்கு வலுவான மற்றும் மீண்டும் பயன்படுத்தக்கூடிய கூறுகளை உருவாக்க கற்றுக்கொள்ளுங்கள்.
வெப் காம்போனென்ட் வாழ்க்கைச் சுழற்சி: தனிப்பயன் உறுப்பு உருவாக்கம் மற்றும் நிர்வாகத்தில் தேர்ச்சி பெறுதல்
நவீன வலை மேம்பாட்டில் மீண்டும் பயன்படுத்தக்கூடிய மற்றும் ஒருங்கிணைக்கப்பட்ட UI கூறுகளை உருவாக்குவதற்கான ஒரு சக்திவாய்ந்த கருவி வெப் காம்போனென்ட்ஸ் ஆகும். ஒரு வெப் காம்போனென்ட்டின் வாழ்க்கைச் சுழற்சியைப் புரிந்துகொள்வது, வலுவான, பராமரிக்கக்கூடிய மற்றும் செயல்திறன்மிக்க பயன்பாடுகளை உருவாக்குவதற்கு இன்றியமையாதது. இந்த விரிவான வழிகாட்டி, வெப் காம்போனென்ட் வாழ்க்கைச் சுழற்சியின் வெவ்வேறு நிலைகளை ஆராய்கிறது, தனிப்பயன் உறுப்பு உருவாக்கம் மற்றும் நிர்வாகத்தில் நீங்கள் தேர்ச்சி பெற உதவும் விரிவான விளக்கங்களையும் நடைமுறை எடுத்துக்காட்டுகளையும் வழங்குகிறது.
வெப் காம்போனென்ட்ஸ் என்றால் என்ன?
வெப் காம்போனென்ட்ஸ் என்பது வலைத்தள API-களின் ஒரு தொகுப்பாகும், இது ஒருங்கிணைக்கப்பட்ட ஸ்டைலிங் மற்றும் நடத்தையுடன் மீண்டும் பயன்படுத்தக்கூடிய தனிப்பயன் HTML கூறுகளை உருவாக்க உங்களை அனுமதிக்கிறது. அவை மூன்று முக்கிய தொழில்நுட்பங்களைக் கொண்டுள்ளன:
- தனிப்பயன் கூறுகள் (Custom Elements): உங்கள் சொந்த HTML குறிச்சொற்களையும் அவற்றுடன் தொடர்புடைய ஜாவாஸ்கிரிப்ட் தர்க்கத்தையும் வரையறுக்க உங்களை அனுமதிக்கின்றன.
- ஷேடோ டாம் (Shadow DOM): கூறுக்கு ஒரு தனி DOM மரத்தை உருவாக்குவதன் மூலம் ஒருங்கிணைப்பை வழங்குகிறது, இது உலகளாவிய ஆவணத்தின் ஸ்டைல்கள் மற்றும் ஸ்கிரிப்டுகளிலிருந்து அதைப் பாதுகாக்கிறது.
- HTML டெம்ப்ளேட்கள் (HTML Templates): மீண்டும் பயன்படுத்தக்கூடிய HTML துணுக்குகளை வரையறுக்க உங்களை அனுமதிக்கின்றன, அவற்றை திறமையாக நகலெடுத்து DOM-ல் செருகலாம்.
வெப் காம்போனென்ட்ஸ் குறியீட்டை மீண்டும் பயன்படுத்துவதை ஊக்குவிக்கின்றன, பராமரிப்பை மேம்படுத்துகின்றன, மேலும் சிக்கலான பயனர் இடைமுகங்களை ஒரு மட்டு மற்றும் ஒழுங்கமைக்கப்பட்ட வழியில் உருவாக்க அனுமதிக்கின்றன. அவை அனைத்து முக்கிய உலாவிகளாலும் ஆதரிக்கப்படுகின்றன மற்றும் எந்த ஜாவாஸ்கிரிப்ட் கட்டமைப்பு அல்லது நூலகத்துடனும் அல்லது எந்த கட்டமைப்பும் இல்லாமலும் பயன்படுத்தப்படலாம்.
வெப் காம்போனென்ட் வாழ்க்கைச் சுழற்சி
வெப் காம்போனென்ட் வாழ்க்கைச் சுழற்சி என்பது ஒரு தனிப்பயன் உறுப்பு அதன் உருவாக்கத்திலிருந்து DOM-லிருந்து அகற்றப்படும் வரை கடந்து செல்லும் வெவ்வேறு நிலைகளை வரையறுக்கிறது. இந்த நிலைகளைப் புரிந்துகொள்வது, சரியான நேரத்தில் குறிப்பிட்ட செயல்களைச் செய்ய உங்களை அனுமதிக்கிறது, உங்கள் கூறு சரியாகவும் திறமையாகவும் செயல்படுவதை உறுதி செய்கிறது.
முக்கிய வாழ்க்கைச் சுழற்சி முறைகள்:
- constructor(): உறுப்பு உருவாக்கப்படும்போது அல்லது மேம்படுத்தப்படும்போது கன்ஸ்ட்ரக்டர் அழைக்கப்படுகிறது. இங்குதான் நீங்கள் காம்போனென்ட்டின் நிலையை துவக்கி, அதன் ஷேடோ டாமை (தேவைப்பட்டால்) உருவாக்குகிறீர்கள்.
- connectedCallback(): தனிப்பயன் உறுப்பு ஆவணத்தின் DOM-உடன் இணைக்கப்படும் ஒவ்வொரு முறையும் இது அழைக்கப்படுகிறது. தரவைப் பெறுதல், நிகழ்வு கேட்பான்களைச் சேர்ப்பது அல்லது காம்போனென்ட்டின் ஆரம்ப உள்ளடக்கத்தை ரெண்டர் செய்வது போன்ற அமைவுப் பணிகளைச் செய்வதற்கு இது ஒரு நல்ல இடம்.
- disconnectedCallback(): தனிப்பயன் உறுப்பு ஆவணத்தின் DOM-லிருந்து துண்டிக்கப்படும் ஒவ்வொரு முறையும் இது அழைக்கப்படுகிறது. மெமரி லீக்குகளைத் தடுக்க, நிகழ்வு கேட்பான்களை அகற்றுவது அல்லது டைமர்களை ரத்து செய்வது போன்ற எந்த ஆதாரங்களையும் சுத்தம் செய்ய வேண்டிய இடம் இதுவாகும்.
- attributeChangedCallback(name, oldValue, newValue): தனிப்பயன் உறுப்பின் பண்புகளில் ஒன்று சேர்க்கப்படும், அகற்றப்படும், புதுப்பிக்கப்படும் அல்லது மாற்றப்படும் ஒவ்வொரு முறையும் இது அழைக்கப்படுகிறது. இது காம்போனென்ட்டின் பண்புகளில் ஏற்படும் மாற்றங்களுக்கு பதிலளிக்கவும், அதற்கேற்ப அதன் நடத்தையைப் புதுப்பிக்கவும் உங்களை அனுமதிக்கிறது.
observedAttributes
ஸ்டேடிக் கெட்டரைப் பயன்படுத்தி நீங்கள் எந்தப் பண்புகளைக் கவனிக்க விரும்புகிறீர்கள் என்பதைக் குறிப்பிட வேண்டும். - adoptedCallback(): தனிப்பயன் உறுப்பு ஒரு புதிய ஆவணத்திற்கு நகர்த்தப்படும் ஒவ்வொரு முறையும் இது அழைக்கப்படுகிறது. ஐஃப்ரேம்களுடன் பணிபுரியும் போது அல்லது பயன்பாட்டின் வெவ்வேறு பகுதிகளுக்கு இடையில் கூறுகளை நகர்த்தும்போது இது பொருத்தமானது.
ஒவ்வொரு வாழ்க்கைச் சுழற்சி முறையையும் ஆழமாக ஆராய்தல்
1. constructor()
உங்கள் தனிப்பயன் உறுப்பின் ஒரு புதிய நிகழ்வு உருவாக்கப்படும்போது அழைக்கப்படும் முதல் முறை கன்ஸ்ட்ரக்டர் ஆகும். இது பின்வரும் செயல்களுக்கு ஏற்ற இடமாகும்:
- காம்போனென்ட்டின் உள் நிலையை துவக்குதல்.
this.attachShadow({ mode: 'open' })
அல்லதுthis.attachShadow({ mode: 'closed' })
பயன்படுத்தி ஷேடோ டாமை உருவாக்குதல்.mode
என்பது ஷேடோ டாம் காம்போனென்ட்டிற்கு வெளியே ஜாவாஸ்கிரிப்டிலிருந்து அணுகக்கூடியதா (open
) அல்லது இல்லையா (closed
) என்பதை தீர்மானிக்கிறது. எளிதாக பிழைத்திருத்தம் செய்யopen
-ஐப் பயன்படுத்துவது பொதுவாக பரிந்துரைக்கப்படுகிறது.- நிகழ்வு கையாளும் முறைகளை காம்போனென்ட் நிகழ்வுடன் பிணைத்தல் (
this.methodName = this.methodName.bind(this)
பயன்படுத்தி), கையாளும் முறைக்குள்this
என்பது காம்போனென்ட் நிகழ்வைக் குறிப்பதை உறுதி செய்ய.
கன்ஸ்ட்ரக்டருக்கான முக்கியக் குறிப்புகள்:
- நீங்கள் கன்ஸ்ட்ரக்டரில் எந்த DOM மாற்றத்தையும் செய்ய கூடாது. உறுப்பு இன்னும் DOM-உடன் முழுமையாக இணைக்கப்படவில்லை, அதை மாற்ற முயற்சிப்பது எதிர்பாராத நடத்தைக்கு வழிவகுக்கும். DOM மாற்றத்திற்கு
connectedCallback
-ஐப் பயன்படுத்தவும். - கன்ஸ்ட்ரக்டரில் பண்புகளைப் பயன்படுத்துவதைத் தவிர்க்கவும். பண்புகள் இன்னும் கிடைக்காமல் இருக்கலாம். அதற்கு பதிலாக
connectedCallback
அல்லதுattributeChangedCallback
-ஐப் பயன்படுத்தவும். - முதலில்
super()
-ஐ அழைக்கவும். நீங்கள் மற்றொரு வகுப்பிலிருந்து (பொதுவாகHTMLElement
) நீட்டித்தால் இது கட்டாயமாகும்.
எடுத்துக்காட்டு:
class MyCustomElement extends HTMLElement {
constructor() {
super();
// Create a shadow root
this.shadow = this.attachShadow({mode: 'open'});
this.message = "Hello, world!";
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
alert(this.message);
}
}
2. connectedCallback()
தனிப்பயன் உறுப்பு ஆவணத்தின் DOM-உடன் இணைக்கப்படும்போது connectedCallback
அழைக்கப்படுகிறது. இது பின்வரும் செயல்களுக்கான முதன்மை இடமாகும்:
- API-யிலிருந்து தரவைப் பெறுதல்.
- காம்போனென்ட் அல்லது அதன் ஷேடோ டாமிற்கு நிகழ்வு கேட்பான்களைச் சேர்ப்பது.
- காம்போனென்ட்டின் ஆரம்ப உள்ளடக்கத்தை ஷேடோ டாமில் ரெண்டர் செய்தல்.
- கன்ஸ்ட்ரக்டரில் உடனடி கவனிப்பு சாத்தியமில்லாதபோது பண்பு மாற்றங்களைக் கவனித்தல்.
எடுத்துக்காட்டு:
class MyCustomElement extends HTMLElement {
// ... constructor ...
connectedCallback() {
// Create a button element
const button = document.createElement('button');
button.textContent = 'Click me!';
button.addEventListener('click', this.handleClick);
this.shadow.appendChild(button);
// Fetch data (example)
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
this.data = data;
this.render(); // Call a render method to update the UI
});
}
render() {
// Update the Shadow DOM based on the data
const dataElement = document.createElement('p');
dataElement.textContent = JSON.stringify(this.data);
this.shadow.appendChild(dataElement);
}
handleClick() {
alert("Button clicked!");
}
}
3. disconnectedCallback()
தனிப்பயன் உறுப்பு ஆவணத்தின் DOM-லிருந்து துண்டிக்கப்படும்போது disconnectedCallback
அழைக்கப்படுகிறது. இது பின்வரும் செயல்களுக்கு முக்கியமானது:
- மெமரி லீக்குகளைத் தடுக்க நிகழ்வு கேட்பான்களை அகற்றுதல்.
- எந்த டைமர்கள் அல்லது இடைவெளிகளை ரத்து செய்தல்.
- காம்போனென்ட் வைத்திருக்கும் எந்த ஆதாரங்களையும் விடுவித்தல்.
எடுத்துக்காட்டு:
class MyCustomElement extends HTMLElement {
// ... constructor, connectedCallback ...
disconnectedCallback() {
// Remove the event listener
this.shadow.querySelector('button').removeEventListener('click', this.handleClick);
// Cancel any timers (example)
if (this.timer) {
clearInterval(this.timer);
}
console.log('Component disconnected from the DOM.');
}
}
4. attributeChangedCallback(name, oldValue, newValue)
attributeChangedCallback
என்பது தனிப்பயன் உறுப்பின் ஒரு பண்பு மாற்றப்படும்போதெல்லாம் அழைக்கப்படுகிறது, ஆனால் observedAttributes
ஸ்டேடிக் கெட்டரில் பட்டியலிடப்பட்டுள்ள பண்புகளுக்கு மட்டுமே. இந்த முறை பின்வருவனவற்றிற்கு அவசியம்:
- பண்பு மதிப்புகளில் ஏற்படும் மாற்றங்களுக்கு எதிர்வினையாற்றி, காம்போனென்ட்டின் நடத்தை அல்லது தோற்றத்தைப் புதுப்பித்தல்.
- பண்பு மதிப்புகளைச் சரிபார்த்தல்.
முக்கிய அம்சங்கள்:
- நீங்கள் கட்டாயம்
observedAttributes
என்ற ஸ்டேடிக் கெட்டரை வரையறுக்க வேண்டும், அது நீங்கள் கவனிக்க விரும்பும் பண்புப் பெயர்களின் வரிசையைத் தரும். attributeChangedCallback
என்பதுobservedAttributes
-ல் பட்டியலிடப்பட்டுள்ள பண்புகளுக்கு மட்டுமே அழைக்கப்படும்.- இந்த முறை மூன்று வாதங்களைப் பெறுகிறது: மாற்றப்பட்ட பண்பின்
name
,oldValue
, மற்றும்newValue
. - பண்பு புதிதாகச் சேர்க்கப்பட்டால்
oldValue
ஆனதுnull
ஆக இருக்கும்.
எடுத்துக்காட்டு:
class MyCustomElement extends HTMLElement {
// ... constructor, connectedCallback, disconnectedCallback ...
static get observedAttributes() {
return ['message', 'data-count']; // Observe the 'message' and 'data-count' attributes
}
attributeChangedCallback(name, oldValue, newValue) {
if (name === 'message') {
this.message = newValue; // Update the internal state
this.renderMessage(); // Re-render the message
} else if (name === 'data-count') {
const count = parseInt(newValue, 10);
if (!isNaN(count)) {
this.count = count; // Update the internal count
this.renderCount(); // Re-render the count
} else {
console.error('Invalid data-count attribute value:', newValue);
}
}
}
renderMessage() {
// Update the message display in the Shadow DOM
let messageElement = this.shadow.querySelector('.message');
if (!messageElement) {
messageElement = document.createElement('p');
messageElement.classList.add('message');
this.shadow.appendChild(messageElement);
}
messageElement.textContent = this.message;
}
renderCount(){
let countElement = this.shadow.querySelector('.count');
if(!countElement){
countElement = document.createElement('p');
countElement.classList.add('count');
this.shadow.appendChild(countElement);
}
countElement.textContent = `Count: ${this.count}`;
}
}
attributeChangedCallback-ஐ திறம்பட பயன்படுத்துதல்:
- உள்ளீட்டைச் சரிபார்க்கவும்: தரவு ஒருமைப்பாட்டை உறுதிப்படுத்த, புதிய மதிப்பைச் சரிபார்க்க இந்த கால்பேக்கைப் பயன்படுத்தவும்.
- புதுப்பிப்புகளை டிபவுன்ஸ் செய்யவும்: கணினி ரீதியாக செலவுமிக்க புதுப்பிப்புகளுக்கு, அதிகப்படியான மறு-ரெண்டரிங்கைத் தவிர்க்க, பண்பு மாற்ற கையாளுநரை டிபவுன்ஸ் செய்வதைக் கருத்தில் கொள்ளுங்கள்.
- மாற்றுகளைக் கருத்தில் கொள்ளுங்கள்: சிக்கலான தரவுகளுக்கு, பண்புகளுக்குப் பதிலாக பண்புகளைப் பயன்படுத்துவதைக் கருத்தில் கொண்டு, பண்பு செட்டருக்குள் நேரடியாக மாற்றங்களைக் கையாளவும்.
5. adoptedCallback()
தனிப்பயன் உறுப்பு ஒரு புதிய ஆவணத்திற்கு நகர்த்தப்படும்போது (எ.கா., ஒரு iframe-லிருந்து மற்றொன்றுக்கு நகர்த்தப்படும்போது) adoptedCallback
அழைக்கப்படுகிறது. இது பொதுவாக குறைவாகப் பயன்படுத்தப்படும் வாழ்க்கைச் சுழற்சி முறையாகும், ஆனால் ஆவண சூழல்களை உள்ளடக்கிய மிகவும் சிக்கலான சூழ்நிலைகளில் பணிபுரியும்போது இதைப் பற்றி அறிந்திருப்பது முக்கியம்.
எடுத்துக்காட்டு:
class MyCustomElement extends HTMLElement {
// ... constructor, connectedCallback, disconnectedCallback, attributeChangedCallback ...
adoptedCallback() {
console.log('Component adopted into a new document.');
// Perform any necessary adjustments when the component is moved to a new document
// This might involve updating references to external resources or re-establishing connections.
}
}
ஒரு தனிப்பயன் உறுப்பை வரையறுத்தல்
உங்கள் தனிப்பயன் உறுப்பு வகுப்பை நீங்கள் வரையறுத்தவுடன், அதை customElements.define()
பயன்படுத்தி உலாவியில் பதிவு செய்ய வேண்டும்:
customElements.define('my-custom-element', MyCustomElement);
முதல் வாதம் உங்கள் தனிப்பயன் உறுப்புக்கான குறிச்சொல் பெயர் (எ.கா., 'my-custom-element'
). குறிச்சொல் பெயர் கட்டாயம் ஒரு ஹைபன் (-
) கொண்டிருக்க வேண்டும், இது நிலையான HTML கூறுகளுடன் முரண்படுவதைத் தவிர்க்கும்.
இரண்டாவது வாதம் உங்கள் தனிப்பயன் உறுப்பின் நடத்தையை வரையறுக்கும் வகுப்பு (எ.கா., MyCustomElement
).
தனிப்பயன் உறுப்பை வரையறுத்த பிறகு, நீங்கள் அதை உங்கள் HTML-ல் வேறு எந்த HTML உறுப்பையும் போலவே பயன்படுத்தலாம்:
<my-custom-element message="Hello from attribute!" data-count="10"></my-custom-element>
வெப் காம்போனென்ட் வாழ்க்கைச் சுழற்சி நிர்வாகத்திற்கான சிறந்த நடைமுறைகள்
- கன்ஸ்ட்ரக்டரை இலகுவாக வைத்திருங்கள்: கன்ஸ்ட்ரக்டரில் DOM மாற்றம் அல்லது சிக்கலான கணக்கீடுகளைச் செய்வதைத் தவிர்க்கவும். இந்த பணிகளுக்கு
connectedCallback
-ஐப் பயன்படுத்தவும். disconnectedCallback
-ல் ஆதாரங்களைச் சுத்தம் செய்யுங்கள்: மெமரி லீக்குகளைத் தடுக்க எப்போதும் நிகழ்வு கேட்பான்களை அகற்றவும், டைமர்களை ரத்து செய்யவும் மற்றும்disconnectedCallback
-ல் ஆதாரங்களை விடுவிக்கவும்.observedAttributes
-ஐ புத்திசாலித்தனமாகப் பயன்படுத்துங்கள்: நீங்கள் உண்மையில் எதிர்வினையாற்ற வேண்டிய பண்புகளை மட்டுமே கவனிக்கவும். தேவையற்ற பண்புகளைக் கவனிப்பது செயல்திறனைப் பாதிக்கலாம்.- ஒரு ரெண்டரிங் நூலகத்தைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்: சிக்கலான UI புதுப்பிப்புகளுக்கு, செயல்முறையை எளிதாக்கவும் செயல்திறனை மேம்படுத்தவும் LitElement அல்லது uhtml போன்ற ஒரு ரெண்டரிங் நூலகத்தைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்.
- உங்கள் காம்போனென்ட்களை முழுமையாகச் சோதிக்கவும்: உங்கள் காம்போனென்ட்கள் அவற்றின் வாழ்க்கைச் சுழற்சி முழுவதும் சரியாகச் செயல்படுகின்றன என்பதை உறுதிப்படுத்த யூனிட் சோதனைகளை எழுதுங்கள்.
எடுத்துக்காட்டு: ஒரு எளிய கவுண்டர் காம்போனென்ட்
வெப் காம்போனென்ட் வாழ்க்கைச் சுழற்சியின் பயன்பாட்டை விளக்கும் ஒரு எளிய கவுண்டர் காம்போனென்ட்டை உருவாக்குவோம்:
class CounterComponent extends HTMLElement {
constructor() {
super();
this.shadow = this.attachShadow({ mode: 'open' });
this.count = 0;
this.increment = this.increment.bind(this);
}
connectedCallback() {
this.render();
this.shadow.querySelector('button').addEventListener('click', this.increment);
}
disconnectedCallback() {
this.shadow.querySelector('button').removeEventListener('click', this.increment);
}
increment() {
this.count++;
this.render();
}
render() {
this.shadow.innerHTML = `
<p>Count: ${this.count}</p>
<button>Increment</button>
`;
}
}
customElements.define('counter-component', CounterComponent);
இந்த காம்போனென்ட் ஒரு உள் count
மாறியைப் பராமரிக்கிறது மற்றும் பொத்தான் கிளிக் செய்யப்படும்போது காட்சியைக் புதுப்பிக்கிறது. connectedCallback
நிகழ்வு கேட்பானைச் சேர்க்கிறது, மற்றும் disconnectedCallback
அதை நீக்குகிறது.
மேம்பட்ட வெப் காம்போனென்ட் நுட்பங்கள்
1. பண்புகளுக்குப் பதிலாக பிராப்பர்டிகளைப் பயன்படுத்துதல்
எளிய தரவுகளுக்கு பண்புகள் பயனுள்ளதாக இருந்தாலும், பிராப்பர்டிகள் அதிக நெகிழ்வுத்தன்மையையும் வகை பாதுகாப்பையும் வழங்குகின்றன. உங்கள் தனிப்பயன் உறுப்பில் பிராப்பர்டிகளை வரையறுத்து, அவை எவ்வாறு அணுகப்படுகின்றன மற்றும் மாற்றியமைக்கப்படுகின்றன என்பதைக் கட்டுப்படுத்த கெட்டர்கள் மற்றும் செட்டர்களைப் பயன்படுத்தலாம்.
class MyCustomElement extends HTMLElement {
constructor() {
super();
this.shadow = this.attachShadow({ mode: 'open' });
this._data = null; // Use a private property to store the data
}
get data() {
return this._data;
}
set data(value) {
this._data = value;
this.renderData(); // Re-render the component when the data changes
}
connectedCallback() {
// Initial rendering
this.renderData();
}
renderData() {
// Update the Shadow DOM based on the data
this.shadow.innerHTML = `<p>Data: ${JSON.stringify(this._data)}</p>`;
}
}
customElements.define('my-data-element', MyCustomElement);
நீங்கள் ஜாவாஸ்கிரிப்டில் நேரடியாக data
பிராப்பர்டியை அமைக்கலாம்:
const element = document.querySelector('my-data-element');
element.data = { name: 'John Doe', age: 30 };
2. தகவல்தொடர்புக்கு நிகழ்வுகளைப் பயன்படுத்துதல்
தனிப்பயன் நிகழ்வுகள் வெப் காம்போனென்ட்கள் ஒன்றுக்கொன்று மற்றும் வெளி உலகத்துடன் தொடர்புகொள்வதற்கான ஒரு சக்திவாய்ந்த வழியாகும். உங்கள் காம்போனென்ட்டிலிருந்து தனிப்பயன் நிகழ்வுகளை அனுப்பலாம் மற்றும் உங்கள் பயன்பாட்டின் மற்ற பகுதிகளில் அவற்றைக் கேட்கலாம்.
class MyCustomElement extends HTMLElement {
// ... constructor, connectedCallback ...
dispatchCustomEvent() {
const event = new CustomEvent('my-custom-event', {
detail: { message: 'Hello from the component!' },
bubbles: true, // Allow the event to bubble up the DOM tree
composed: true // Allow the event to cross the shadow DOM boundary
});
this.dispatchEvent(event);
}
}
customElements.define('my-event-element', MyCustomElement);
// Listen for the custom event in the parent document
document.addEventListener('my-custom-event', (event) => {
console.log('Custom event received:', event.detail.message);
});
3. ஷேடோ டாம் ஸ்டைலிங்
ஷேடோ டாம் ஸ்டைல் ஒருங்கிணைப்பை வழங்குகிறது, இது ஸ்டைல்கள் காம்போனென்ட்டிற்கு உள்ளே அல்லது வெளியே கசிவதைத் தடுக்கிறது. ஷேடோ டாமிற்குள் CSS-ஐப் பயன்படுத்தி உங்கள் வெப் காம்போனென்ட்களை ஸ்டைல் செய்யலாம்.
இன்லைன் ஸ்டைல்கள்:
class MyCustomElement extends HTMLElement {
constructor() {
super();
this.shadow = this.attachShadow({ mode: 'open' });
this.shadow.innerHTML = `
<style>
p {
color: blue;
}
</style>
<p>This is a styled paragraph.</p>
`;
}
}
வெளிப்புற ஸ்டைல்ஷீட்கள்:
நீங்கள் ஷேடோ டாமில் வெளிப்புற ஸ்டைல்ஷீட்களையும் ஏற்றலாம்:
class MyCustomElement extends HTMLElement {
constructor() {
super();
this.shadow = this.attachShadow({ mode: 'open' });
const linkElem = document.createElement('link');
linkElem.setAttribute('rel', 'stylesheet');
linkElem.setAttribute('href', 'my-component.css');
this.shadow.appendChild(linkElem);
this.shadow.innerHTML += '<p>This is a styled paragraph.</p>';
}
}
முடிவுரை
நவீன வலைப் பயன்பாடுகளுக்கு வலுவான மற்றும் மீண்டும் பயன்படுத்தக்கூடிய காம்போனென்ட்களை உருவாக்க வெப் காம்போனென்ட் வாழ்க்கைச் சுழற்சியில் தேர்ச்சி பெறுவது அவசியம். வெவ்வேறு வாழ்க்கைச் சுழற்சி முறைகளைப் புரிந்துகொண்டு சிறந்த நடைமுறைகளைப் பயன்படுத்துவதன் மூலம், பராமரிக்க எளிதான, செயல்திறன்மிக்க மற்றும் உங்கள் பயன்பாட்டின் மற்ற பகுதிகளுடன் தடையின்றி ஒருங்கிணைக்கக்கூடிய காம்போனென்ட்களை நீங்கள் உருவாக்கலாம். இந்த வழிகாட்டி வெப் காம்போனென்ட் வாழ்க்கைச் சுழற்சியின் ஒரு விரிவான கண்ணோட்டத்தை வழங்கியது, இதில் விரிவான விளக்கங்கள், நடைமுறை எடுத்துக்காட்டுகள் மற்றும் மேம்பட்ட நுட்பங்கள் அடங்கும். வெப் காம்போனென்ட்களின் சக்தியைத் தழுவி, மட்டு, பராமரிக்கக்கூடிய மற்றும் அளவிடக்கூடிய வலைப் பயன்பாடுகளை உருவாக்குங்கள்.
மேலும் கற்க:
- MDN Web Docs: வெப் காம்போனென்ட்கள் மற்றும் தனிப்பயன் கூறுகள் பற்றிய விரிவான ஆவணங்கள்.
- WebComponents.org: வெப் காம்போனென்ட் டெவலப்பர்களுக்கான ஒரு சமூகத்தால் இயக்கப்படும் வளம்.
- LitElement: வேகமான, இலகுரக வெப் காம்போனென்ட்களை உருவாக்குவதற்கான ஒரு எளிய அடிப்படை வகுப்பு.