வலை கூறுகளைப் பயன்படுத்தி அளவிடக்கூடிய, கட்டமைப்பு-சார்பற்ற பயன்பாடுகளைத் திறக்கவும். வலுவான, உலகளாவிய நிறுவன அமைப்புகளை உருவாக்குவதற்கான கட்டமைப்பு முறைகளின் ஆழமான பார்வை.
வலை கூறுகளின் கட்டமைப்புகள்: அளவிடக்கூடிய கட்டமைப்பிற்கான ஒரு வரைபடம்
வேகமாக வளர்ந்து வரும் வலை மேம்பாட்டுத் துறையில், அளவிடக்கூடிய, பராமரிக்கக்கூடிய மற்றும் எதிர்காலத்திற்கு ஏற்ற ஒரு கட்டமைப்பிற்கான தேடல் உலகெங்கிலும் உள்ள பொறியியல் தலைவர்கள் மற்றும் கட்டிடக் கலைஞர்களுக்கு ஒரு நிலையான சவாலாக உள்ளது. நாம் பல்வேறு கட்டமைப்புகளைப் பயன்படுத்தியுள்ளோம், ஒற்றை ஃபிரண்ட்-எண்ட்களின் சிக்கல்களைச் சமாளித்துள்ளோம், மேலும் தொழில்நுட்பப் பிணைப்பின் வலியை உணர்ந்துள்ளோம். தீர்வு மற்றொரு புதிய கட்டமைப்பாக இல்லாமல், தளத்திற்கே திரும்புவதாக இருந்தால் என்ன செய்வது? இங்கேதான் வலை கூறுகள் (Web Components) வருகின்றன.
வலை கூறுகள் ஒரு புதிய தொழில்நுட்பம் அல்ல, ஆனால் அவற்றின் முதிர்ச்சியும் அவற்றைச் சுற்றியுள்ள கருவிகளும் ஒரு முக்கியமான கட்டத்தை எட்டியுள்ளன, இது அவற்றை நவீன, அளவிடக்கூடிய ஃபிரண்ட்-எண்ட் கட்டமைப்பிற்கான ஒரு மூலக்கல்லாக ஆக்குகிறது. அவை ஒரு முன்னுதாரண மாற்றத்தை வழங்குகின்றன: கட்டமைப்பு-சார்ந்த தனித்தனி அமைப்புகளிலிருந்து விலகி, UI உருவாக்குவதற்கான ஒரு உலகளாவிய, தரநிலைகள் அடிப்படையிலான அணுகுமுறையை நோக்கி நகர்கின்றன. இந்தப் பதிவு ஒரு தனிப்பயன் பொத்தானை உருவாக்குவது பற்றி மட்டுமல்ல; இது உலகளாவிய நிறுவன பயன்பாடுகளின் தேவைகளுக்காக வடிவமைக்கப்பட்ட, வலை கூறுகளின் கட்டமைப்புகளைப் பயன்படுத்தி ஒரு விரிவான, அளவிடக்கூடிய கட்டமைப்பைச் செயல்படுத்துவதற்கான ஒரு மூலோபாய வழிகாட்டியாகும்.
முன்னுதாரண மாற்றம்: அளவிடக்கூடிய கட்டமைப்பிற்கு வலை கூறுகள் ஏன்?
பல ஆண்டுகளாக, பெரிய நிறுவனங்கள் மீண்டும் மீண்டும் வரும் ஒரு சிக்கலை எதிர்கொண்டுள்ளன. ஒரு பிரிவில் உள்ள ஒரு குழு ஆங்குலரைப் (Angular) பயன்படுத்தி ஒரு தயாரிப்புக் குழுமத்தை உருவாக்குகிறது. மற்றொரு குழு, கையகப்படுத்துதல் அல்லது விருப்பத்தின் காரணமாக, ரியாக்டைப் (React) பயன்படுத்துகிறது. மூன்றாவது குழு வ்யூவைப் (Vue) பயன்படுத்துகிறது. ஒவ்வொரு குழுவும் உற்பத்தித் திறனுடன் இருந்தாலும், ஒட்டுமொத்தமாக நிறுவனம் நகலெடுக்கப்பட்ட முயற்சியால் பாதிக்கப்படுகிறது. பொத்தான்கள், தேதி தேர்வாளர்கள் அல்லது தலைப்புகள் போன்ற UI கூறுகளின் ஒற்றை, பகிரக்கூடிய நூலகம் எதுவும் இல்லை. இந்த துண்டாடல் புதுமையைத் தடுக்கிறது, பராமரிப்புச் செலவுகளை அதிகரிக்கிறது, மற்றும் பிராண்ட் நிலைத்தன்மையை ஒரு கனவாக மாற்றுகிறது.
வலை கூறுகள் உலாவி-சொந்த APIகளின் தொகுப்பைப் பயன்படுத்துவதன் மூலம் இதை நேரடியாக நிவர்த்தி செய்கின்றன. எந்தவொரு குறிப்பிட்ட ஜாவாஸ்கிரிப்ட் கட்டமைப்பிற்கும் கட்டுப்படாத, உள்ளடக்கமான, மீண்டும் பயன்படுத்தக்கூடிய UI கூறுகளை உருவாக்க அவை உங்களை அனுமதிக்கின்றன. இதுவே அவற்றின் கட்டமைப்பு சக்தியின் அடித்தளமாகும்.
அளவிடுதலுக்கான முக்கிய நன்மைகள்
- கட்டமைப்பு-சார்பின்மை (Framework Agnosticism): இது தலைப்புச் செய்தி அம்சம். லிட் (Lit) அல்லது ஸ்டென்சில் (Stencil) போன்ற ஒரு நூலகத்துடன் உருவாக்கப்பட்ட ஒரு வலை கூறு, ரியாக்ட், ஆங்குலர், வ்யூ, ஸ்வெல்ட் அல்லது ஒரு சாதாரண HTML/ஜாவாஸ்கிரிப்ட் திட்டத்தில் கூட தடையின்றி பயன்படுத்தப்படலாம். இது பல்வேறு தொழில்நுட்ப அடுக்குகளைக் கொண்ட பெரிய நிறுவனங்களுக்கு ஒரு விளையாட்டு மாற்றியாகும், இது படிப்படியான இடம்பெயர்வுகளை எளிதாக்குகிறது மற்றும் நீண்ட கால திட்ட நிலைத்தன்மையை செயல்படுத்துகிறது.
- ஷேடோ டாம் (Shadow DOM) மூலம் உண்மையான உள்ளடக்கப்படுத்தல்: பெரிய அளவிலான CSS-ல் உள்ள மிகப்பெரிய சவால்களில் ஒன்று அதன் வரம்பு (scope) ஆகும். ஒரு பயன்பாட்டின் ஒரு பகுதியிலிருந்து வரும் ஸ்டைல்கள் கசிந்து, எதிர்பாராதவிதமாக மற்றொரு பகுதியை பாதிக்கலாம். ஷேடோ டாம் உங்கள் கூறுக்கு ஒரு தனிப்பட்ட, உள்ளடக்கமான DOM மரத்தை உருவாக்குகிறது, அதன் சொந்த வரையறுக்கப்பட்ட ஸ்டைல்கள் மற்றும் மார்க்கப் உடன். இந்த 'கோட்டை' ஸ்டைல் மோதல்களையும் உலகளாவிய பெயர்வெளி மாசுபாட்டையும் தடுக்கிறது, இது கூறுகளை வலுவானதாகவும் கணிக்கக்கூடியதாகவும் ஆக்குகிறது.
- மேம்படுத்தப்பட்ட மறுபயன்பாடு & இயங்குதன்மை: அவை ஒரு வலை தரநிலையாக இருப்பதால், வலை கூறுகள் மறுபயன்பாட்டின் இறுதி நிலையை வழங்குகின்றன. நீங்கள் ஒரு மையப்படுத்தப்பட்ட வடிவமைப்பு அமைப்பு அல்லது கூறு நூலகத்தை ஒருமுறை உருவாக்கி, அதை NPM போன்ற ஒரு தொகுப்பு மேலாளர் மூலம் விநியோகிக்கலாம். ஒவ்வொரு குழுவும், அவர்கள் தேர்ந்தெடுத்த கட்டமைப்பைப் பொருட்படுத்தாமல், இந்தக் கூறுகளைப் பயன்படுத்தலாம், இது அனைத்து டிஜிட்டல் சொத்துக்களிலும் காட்சி மற்றும் செயல்பாட்டு நிலைத்தன்மையை உறுதி செய்கிறது.
- உங்கள் தொழில்நுட்ப அடுக்கை எதிர்காலத்திற்குத் தயார்படுத்துதல்: கட்டமைப்புகள் வந்து போகும், ஆனால் வலை தளம் நிலைத்திருக்கும். உங்கள் முக்கிய UI அடுக்கை வலை தரநிலைகளின் மீது உருவாக்குவதன் மூலம், நீங்கள் அதை எந்தவொரு ஒற்றை கட்டமைப்பின் வாழ்க்கைச் சுழற்சியிலிருந்தும் பிரிக்கிறீர்கள். ஐந்து ஆண்டுகளில் ஒரு புதிய, சிறந்த கட்டமைப்பு வெளிவரும்போது, உங்கள் முழு கூறு நூலகத்தையும் மீண்டும் எழுத வேண்டிய அவசியமில்லை; நீங்கள் அதை எளிதாக ஒருங்கிணைக்கலாம். இது தொழில்நுட்ப வளர்ச்சியுடன் தொடர்புடைய ஆபத்து மற்றும் செலவை கணிசமாகக் குறைக்கிறது.
ஒரு வலை கூறு கட்டமைப்பின் முக்கிய தூண்கள்
ஒரு அளவிடக்கூடிய கட்டமைப்பைச் செயல்படுத்த, வலை கூறுகளை உருவாக்கும் நான்கு முக்கிய விவரக்குறிப்புகளைப் புரிந்துகொள்வது முக்கியம்.
1. தனிப்பயன் கூறுகள் (Custom Elements): கட்டுமானத் தொகுதிகள்
தனிப்பயன் கூறுகள் API உங்கள் சொந்த HTML குறிச்சொற்களை வரையறுக்க உங்களை அனுமதிக்கிறது. நீங்கள் ஒரு <custom-button> அல்லது <profile-card> ஐ அதன் சொந்த ஜாவாஸ்கிரிப்ட் வகுப்பின் மூலம் அதன் நடத்தையை வரையறுக்க உருவாக்கலாம். உலாவி இந்த குறிச்சொற்களை அடையாளம் கண்டு, அவற்றைக் காணும்போதெல்லாம் உங்கள் வகுப்பைத் தொடங்கக் கற்றுக்கொடுக்கப்படுகிறது.
ஒரு முக்கிய அம்சம் வாழ்க்கைச் சுழற்சி கால்பேக்குகளின் (lifecycle callbacks) தொகுப்பாகும், இது கூறின் வாழ்க்கையில் முக்கிய தருணங்களில் உங்களை இணைக்க அனுமதிக்கிறது:
connectedCallback(): கூறு DOM-ல் செருகப்படும்போது செயல்படுத்தப்படும். அமைவு, தரவு பெறுதல் அல்லது நிகழ்வு கேட்பவர்களைச் சேர்ப்பதற்கு ஏற்றது.disconnectedCallback(): கூறு DOM-லிருந்து அகற்றப்படும்போது செயல்படுத்தப்படும். சுத்தப்படுத்தும் பணிகளுக்கு ஏற்றது.attributeChangedCallback(): கூறின் கவனிக்கப்பட்ட பண்புகளில் ஒன்று மாறும்போது செயல்படுத்தப்படும். இது வெளியிலிருந்து வரும் தரவு மாற்றங்களுக்கு எதிர்வினையாற்றுவதற்கான முதன்மை வழிமுறையாகும்.
2. ஷேடோ டாம் (Shadow DOM): உள்ளடக்கப்படுத்தலின் கோட்டை
ஏற்கனவே குறிப்பிட்டபடி, ஷேடோ டாம் உண்மையான உள்ளடக்கப்படுத்தலுக்கான இரகசிய மூலப்பொருள். இது ஒரு உறுப்புடன் மறைக்கப்பட்ட, தனித்தனி DOM-ஐ இணைக்கிறது. ஷேடோ ரூட்டிற்குள் உள்ள மார்க்கப் மற்றும் ஸ்டைல்கள் முக்கிய ஆவணத்திலிருந்து தனிமைப்படுத்தப்பட்டுள்ளன. இதன் பொருள், முக்கிய பக்கத்தின் CSS கூறின் உள்ளடக்கங்களைப் பாதிக்க முடியாது, மேலும் கூறின் உள் CSS வெளியே கசிய முடியாது. கூறினை வெளியிலிருந்து ஸ்டைல் செய்வதற்கான ஒரே வழி, CSS தனிப்பயன் பண்புகளைப் (CSS Custom Properties) பயன்படுத்தி, நன்கு வரையறுக்கப்பட்ட பொது API மூலம் மட்டுமே.
3. HTML டெம்ப்ளேட்டுகள் & ஸ்லாட்டுகள் (Templates & Slots): உள்ளடக்கத்தைச் செலுத்தும் வழிமுறை
<template> குறிச்சொல், உடனடியாக ரெண்டர் செய்யப்படாத, ஆனால் பின்னர் நகலெடுத்துப் பயன்படுத்தக்கூடிய மார்க்கப் துண்டுகளை அறிவிக்க உங்களை அனுமதிக்கிறது. இது ஒரு கூறின் உள் கட்டமைப்பை வரையறுக்க மிகவும் திறமையான வழியாகும்.
<slot> உறுப்பு வலை கூறுகளுக்கான கலவை மாதிரியாகும் (composition model). இது ஒரு கூறின் ஷேடோ டாமிற்குள் ஒரு ஒதுக்கிடமாகச் செயல்படுகிறது, அதை நீங்கள் வெளியிலிருந்து உங்கள் சொந்த மார்க்கப்பைக் கொண்டு நிரப்பலாம். இது உங்களை ஒரு பொதுவான <modal-dialog> போன்ற நெகிழ்வான, கலக்கக்கூடிய கூறுகளை உருவாக்க அனுமதிக்கிறது, அங்கு நீங்கள் ஒரு தனிப்பயன் தலைப்பு, உடல் மற்றும் அடிக்குறிப்பைச் செலுத்தலாம்.
உங்கள் கருவிகளைத் தேர்ந்தெடுப்பது: வலை கூறு கட்டமைப்புகள் மற்றும் நூலகங்கள்
நீங்கள் வெண்ணிலா ஜாவாஸ்கிரிப்ட் (vanilla JavaScript) மூலம் வலை கூறுகளை எழுத முடியும் என்றாலும், குறிப்பாக ரெண்டரிங், எதிர்வினை மற்றும் பண்புகளைக் கையாளும்போது, அது விரிவாக இருக்கலாம். நவீன கருவிகள் இந்த பாய்லர்பிளேட்டை (boilerplate) எளிதாக்கி, மேம்பாட்டு அனுபவத்தை மிகவும் மென்மையாக்குகின்றன.
லிட் (Lit) (கூகிளிடமிருந்து)
லிட் என்பது வேகமான வலை கூறுகளை உருவாக்குவதற்கான ஒரு எளிய, இலகுரக நூலகமாகும். இது ஒரு முழுமையான கட்டமைப்பாக இருக்க முயற்சிக்காது. அதற்குப் பதிலாக, இது டெம்ப்ளேட்டிங் (ஜாவாஸ்கிரிப்ட் டேக் செய்யப்பட்ட டெம்ப்ளேட் லிட்டரல்களைப் பயன்படுத்தி), எதிர்வினைப் பண்புகள் மற்றும் வரையறுக்கப்பட்ட ஸ்டைல்களுக்கு ஒரு அறிவிப்பு API-ஐ வழங்குகிறது. வலை தள தரநிலைகளுக்கு அதன் நெருக்கமும் அதன் சிறிய அளவும் பகிரக்கூடிய கூறு நூலகங்கள் மற்றும் வடிவமைப்பு அமைப்புகளை உருவாக்குவதற்கு இது ஒரு சிறந்த தேர்வாக அமைகிறது.
ஸ்டென்சில் (Stencil) (அயோனிக் குழுவிலிருந்து)
ஸ்டென்சில் ஒரு நூலகத்தை விட ஒரு கம்பைலர் (compiler) ஆகும். நீங்கள் டைப்ஸ்கிரிப்ட் மற்றும் JSX போன்ற நவீன அம்சங்களைப் பயன்படுத்தி கூறுகளை எழுதுகிறீர்கள், மேலும் ஸ்டென்சில் அவற்றை எங்கும் இயக்கக்கூடிய, தரநிலைக்கு இணக்கமான, உகந்ததாக்கப்பட்ட வலை கூறுகளாகத் தொகுக்கிறது. இது ரியாக்ட் அல்லது வ்யூ போன்ற கட்டமைப்புகளுக்கு ஒத்த டெவலப்பர் அனுபவத்தை வழங்குகிறது, இதில் ஒரு மெய்நிகர் DOM, ஒத்திசைவற்ற ரெண்டரிங் மற்றும் ஒரு கூறு வாழ்க்கைச் சுழற்சி போன்ற அம்சங்கள் அடங்கும். இது ஒரு அம்சம் நிறைந்த சூழலை விரும்பும் அல்லது வலை கூறுகளின் தொகுப்புகளாக சிக்கலான பயன்பாடுகளை உருவாக்கும் குழுக்களுக்கு ஒரு சிறந்த தேர்வாக அமைகிறது.
அணுகுமுறைகளை ஒப்பிடுதல்
- லிட்டைப் பயன்படுத்தவும் எப்போது: உங்கள் முதன்மை நோக்கம் ஒரு இலகுரக, உயர் செயல்திறன் கொண்ட வடிவமைப்பு அமைப்பு அல்லது பிற பயன்பாடுகளால் நுகரப்படும் தனிப்பட்ட கூறுகளின் நூலகத்தை உருவாக்குவது. நீங்கள் தள தரநிலைகளுக்கு நெருக்கமாக இருப்பதை மதிக்கிறீர்கள்.
- ஸ்டென்சிலைப் பயன்படுத்தவும் எப்போது: நீங்கள் ஒரு முழுமையான பயன்பாடு அல்லது ஒரு பெரிய சிக்கலான கூறுகளின் தொகுப்பை உருவாக்குகிறீர்கள். உங்கள் குழு டைப்ஸ்கிரிப்ட், JSX, மற்றும் ஒரு உள்ளமைக்கப்பட்ட டெவ் சர்வர் மற்றும் கருவிகளுடன் கூடிய "batteries-included" அனுபவத்தை விரும்புகிறது.
- வெண்ணிலா JS-ஐப் பயன்படுத்தவும் எப்போது: திட்டம் மிகவும் சிறியது, உங்களுக்கு கடுமையான சார்பு-இல்லாத கொள்கை உள்ளது, அல்லது நீங்கள் மிகவும் வள-கட்டுப்படுத்தப்பட்ட சூழல்களுக்காக உருவாக்குகிறீர்கள்.
அளவிடக்கூடிய செயலாக்கத்திற்கான கட்டமைப்பு முறைகள்
இப்போது, தனிப்பட்ட கூறுகளைத் தாண்டி, முழு பயன்பாடுகள் மற்றும் அமைப்புகளை அளவிடுதலுக்காக எவ்வாறு கட்டமைப்பது என்பதை ஆராய்வோம்.
முறை 1: மையப்படுத்தப்பட்ட, கட்டமைப்பு-சார்பற்ற வடிவமைப்பு அமைப்பு
இது ஒரு பெரிய நிறுவனத்தில் வலை கூறுகளுக்கான மிகவும் பொதுவான மற்றும் சக்திவாய்ந்த பயன்பாட்டு வழக்கு. அனைத்து UI கூறுகளுக்கும் உண்மையின் ஒற்றை மூலத்தை உருவாக்குவதே இதன் குறிக்கோள்.
இது எப்படி வேலை செய்கிறது: ஒரு பிரத்யேக குழு லிட் அல்லது ஸ்டென்சிலைப் பயன்படுத்தி முக்கிய UI கூறுகளின் (எ.கா., <brand-button>, <data-table>, <global-header>) ஒரு நூலகத்தை உருவாக்கி பராமரிக்கிறது. இந்த நூலகம் ஒரு தனிப்பட்ட NPM பதிவேட்டில் வெளியிடப்படுகிறது. நிறுவனம் முழுவதும் உள்ள தயாரிப்புக் குழுக்கள், அவர்கள் ரியாக்ட், ஆங்குலர் அல்லது வ்யூவைப் பயன்படுத்தினாலும், இந்தக் கூறுகளை நிறுவி பயன்படுத்தலாம். வடிவமைப்பு அமைப்பு குழு தெளிவான ஆவணங்கள் (பெரும்பாலும் ஸ்டோரிபுக் போன்ற கருவிகளைப் பயன்படுத்தி), பதிப்பு மேலாண்மை மற்றும் ஆதரவை வழங்குகிறது.
உலகளாவிய தாக்கம்: வட அமெரிக்கா, ஐரோப்பா மற்றும் ஆசியாவில் மேம்பாட்டு மையங்களைக் கொண்ட ஒரு உலகளாவிய நிறுவனம், ஆங்குலரில் உருவாக்கப்பட்ட ஒரு உள் HR போர்ட்டல் முதல் ரியாக்டில் உள்ள பொது-முகம் கொண்ட இ-காமர்ஸ் தளம் வரை ஒவ்வொரு டிஜிட்டல் தயாரிப்பும் ஒரே காட்சி மொழி மற்றும் பயனர் அனுபவத்தைப் பகிர்வதை உறுதிசெய்ய முடியும். இது வடிவமைப்பு மற்றும் மேம்பாட்டுப் பணிச்சுமையை வியத்தகு முறையில் குறைத்து, பிராண்ட் அடையாளத்தை வலுப்படுத்துகிறது.
முறை 2: வலை கூறுகளுடன் மைக்ரோ-ஃபிரண்ட்எண்ட்ஸ் (Micro-Frontends)
மைக்ரோ-ஃபிரண்ட்எண்ட் முறை ஒரு பெரிய, ஒற்றை ஃபிரண்ட்-எண்ட் பயன்பாட்டை சிறிய, சுயாதீனமாகப் பயன்படுத்தக்கூடிய சேவைகளாகப் பிரிக்கிறது. வலை கூறுகள் இந்த முறையைச் செயல்படுத்த ஒரு சிறந்த தொழில்நுட்பமாகும்.
இது எப்படி வேலை செய்கிறது: ஒவ்வொரு மைக்ரோ-ஃபிரண்ட்எண்டும் ஒரு தனிப்பயன் உறுப்பில் (Custom Element) சுற்றப்பட்டுள்ளது. எடுத்துக்காட்டாக, ஒரு இ-காமர்ஸ் தயாரிப்புப் பக்கம் பல மைக்ரோ-ஃபிரண்ட்எண்டுகளால் ஆனது: <search-header> (தேடல் குழுவால் நிர்வகிக்கப்படுகிறது), <product-recommendations> (தரவு அறிவியல் குழுவால் நிர்வகிக்கப்படுகிறது), மற்றும் <shopping-cart-widget> (செக்அவுட் குழுவால் நிர்வகிக்கப்படுகிறது). ஒரு இலகுரக ஷெல் பயன்பாடு இந்தப் பக்கத்தில் இந்தக் கூறுகளை ஒழுங்கமைப்பதற்குப் பொறுப்பாகும். ஒவ்வொரு கூறும் ஒரு நிலையான வலை கூறு என்பதால், குழுக்கள் தங்களுக்கு விருப்பமான எந்தத் தொழில்நுட்பத்தைக் (ரியாக்ட், வ்யூ, முதலியன) கொண்டும் அவற்றை உருவாக்கலாம், যতক্ষণ அவை ஒரு நிலையான தனிப்பயன் உறுப்பு இடைமுகத்தை வெளிப்படுத்துகின்றன.
உலகளாவிய தாக்கம்: இது உலகளவில் விநியோகிக்கப்பட்ட குழுக்களைத் தன்னாட்சியாகச் செயல்பட அனுமதிக்கிறது. இந்தியாவில் உள்ள ஒரு குழு தயாரிப்புப் பரிந்துரைகள் அம்சத்தைப் புதுப்பித்து, ஜெர்மனியில் உள்ள தேடல் குழுவுடன் ஒருங்கிணைக்காமல் அதை பயன்படுத்த முடியும். இந்த நிறுவன மற்றும் தொழில்நுட்பப் பிரிப்பு மேம்பாடு மற்றும் பயன்பாடு இரண்டிலும் பாரிய அளவிடுதலை செயல்படுத்துகிறது.
முறை 3: "தீவுகள்" கட்டமைப்பு ("Islands" Architecture)
இந்த முறை செயல்திறன் மிக முக்கியமானதாக இருக்கும் உள்ளடக்க-அடர்த்தியான வலைத்தளங்களுக்கு ஏற்றது. இதன் யோசனை, பெரும்பாலும் நிலையான, சர்வரில்-ரெண்டர் செய்யப்பட்ட HTML பக்கத்தை வலை கூறுகளால் இயக்கப்படும் சிறிய, தனிமைப்படுத்தப்பட்ட ஊடாடும் "தீவுகளுடன்" வழங்குவதாகும்.
இது எப்படி வேலை செய்கிறது: ஒரு செய்தி கட்டுரைப் பக்கம், உதாரணமாக, முதன்மையாக நிலையான உரை மற்றும் படங்களைக் கொண்டுள்ளது. இந்த உள்ளடக்கம் ஒரு சர்வரில் ரெண்டர் செய்யப்பட்டு, உலாவிக்கு மிக விரைவாக அனுப்பப்படலாம், இதன் விளைவாக ஒரு சிறந்த முதல் உள்ளடக்க வர்ணம் (First Contentful Paint - FCP) நேரம் கிடைக்கும். ஒரு வீடியோ பிளேயர், ஒரு கருத்துப் பிரிவு அல்லது ஒரு சந்தா படிவம் போன்ற ஊடாடும் கூறுகள் வலை கூறுகளாக வழங்கப்படுகின்றன. இந்தக் கூறுகளை சோம்பேறி-ஏற்றலாம் (lazy-loaded), அதாவது அவற்றின் ஜாவாஸ்கிரிப்ட் பயனருக்குத் தெரியவரும்போது மட்டுமே பதிவிறக்கம் செய்யப்பட்டு செயல்படுத்தப்படும்.
உலகளாவிய தாக்கம்: ஒரு உலகளாவிய ஊடக நிறுவனத்திற்கு, இதன் பொருள் மெதுவான இணைய இணைப்பு உள்ள பகுதிகளில் உள்ள பயனர்கள் முக்கிய உள்ளடக்கத்தை கிட்டத்தட்ட உடனடியாகப் பெறுகிறார்கள், ஊடாடும் மேம்பாடுகள் படிப்படியாக ஏற்றப்படுகின்றன. இது உலகெங்கிலும் பயனர் அனுபவத்தையும் எஸ்சிஓ (SEO) தரவரிசையையும் மேம்படுத்துகிறது.
நிறுவன-தர அமைப்புகளுக்கான மேம்பட்ட பரிசீலனைகள்
கூறுகளுக்கு இடையில் நிலை மேலாண்மை (State Management)
தொடர்புக்கு, இயல்புநிலை முறை பண்புகள் கீழே, நிகழ்வுகள் மேலே (properties down, events up) என்பதாகும். பெற்றோர் கூறுகள் பண்புக்கூறுகள்/பண்புகள் வழியாக குழந்தைகளுக்குத் தரவை அனுப்புகின்றன, மேலும் குழந்தைகள் மாற்றங்களைப் பெற்றோருக்குத் தெரிவிக்க தனிப்பயன் நிகழ்வுகளை வெளியிடுகின்றன. பயனர் அங்கீகார நிலை அல்லது ஷாப்பிங் கார்ட் தரவு போன்ற மிகவும் சிக்கலான, குறுக்குவெட்டு நிலைக்கு, நீங்கள் பல உத்திகளைப் பயன்படுத்தலாம்:
- நிகழ்வுப் பேருந்து (Event Bus): பல, தொடர்பில்லாத கூறுகள் கேட்க வேண்டிய செய்திகளை ஒளிபரப்ப ஒரு எளிய உலகளாவிய நிகழ்வுப் பேருந்தைப் பயன்படுத்தலாம்.
- வெளிப்புற ஸ்டோர்கள் (External Stores): நீங்கள் ரெடக்ஸ் (Redux), மோப்எக்ஸ் (MobX) அல்லது ஜுஸ்டாண்ட் (Zustand) போன்ற ஒரு இலகுரக நிலை மேலாண்மை நூலகத்தை ஒருங்கிணைக்கலாம். ஸ்டோர் கூறுகளுக்கு வெளியே உள்ளது, மேலும் கூறுகள் அதனுடன் இணைந்து நிலையைப் படிக்கவும் செயல்களை அனுப்பவும் செய்கின்றன.
- சூழல் வழங்குநர் முறை (Context Provider Pattern): ஒரு கொள்கலன் வலை கூறு நிலையை வைத்திருக்கலாம் மற்றும் அதை அதன் அனைத்து வழித்தோன்றல்களுக்கும் பண்புகள் வழியாக அல்லது குழந்தைகளால் கைப்பற்றப்படும் நிகழ்வுகளை அனுப்புவதன் மூலம் அனுப்பலாம்.
அளவில் ஸ்டைலிங் மற்றும் தீமிங்
உள்ளடக்கப்பட்ட வலை கூறுகளுக்கு தீம் அமைப்பதற்கான திறவுகோல் CSS தனிப்பயன் பண்புகள் (CSS Custom Properties) ஆகும். மாறிகளைப் பயன்படுத்தி உங்கள் கூறுகளுக்கு ஒரு பொது ஸ்டைலிங் API-ஐ நீங்கள் வரையறுக்கிறீர்கள்.
உதாரணமாக, ஒரு பொத்தான் கூறின் உள் CSS இவ்வாறு இருக்கலாம்:
.button { background-color: var(--button-primary-bg, blue); color: var(--button-primary-color, white); }
ஒரு பயன்பாடு இந்த மாறிகளை ஒரு பெற்றோர் உறுப்பு அல்லது :root இல் வரையறுப்பதன் மூலம் எளிதாக ஒரு இருண்ட தீம் உருவாக்கலாம்:
.dark-theme { --button-primary-bg: #333; --button-primary-color: #eee; }
மேலும் மேம்பட்ட ஸ்டைலிங்கிற்கு, ::part() சூடோ-உறுப்பு (pseudo-element) ஒரு கூறின் ஷேடோ டாமிற்குள் குறிப்பிட்ட, முன்-வரையறுக்கப்பட்ட பகுதிகளை இலக்கு வைக்க உங்களை அனுமதிக்கிறது, நுகர்வோருக்கு மேலும் ஸ்டைலிங் கட்டுப்பாட்டை வழங்க ஒரு பாதுகாப்பான மற்றும் வெளிப்படையான வழியை வழங்குகிறது.
படிவங்கள் மற்றும் அணுகல்தன்மை (A11y)
உங்கள் தனிப்பயன் கூறுகள் பல்வேறு தேவைகளைக் கொண்ட உலகளாவிய பார்வையாளர்களுக்கு அணுகக்கூடியதாக இருப்பதை உறுதி செய்வது பேச்சுவார்த்தைக்கு அப்பாற்பட்டது. இதன் பொருள் ARIA (Accessible Rich Internet Applications) பண்புக்கூறுகளுக்கு மிகுந்த கவனம் செலுத்துதல், ஃபோகஸை நிர்வகித்தல் மற்றும் முழுமையான விசைப்பலகை வழிசெலுத்தலை உறுதி செய்தல். தனிப்பயன் படிவக் கட்டுப்பாடுகளுக்கு, ElementInternals பொருள் என்பது ஒரு புதிய API ஆகும், இது உங்கள் தனிப்பயன் உறுப்பை ஒரு சொந்த <input> உறுப்பைப் போலவே படிவம் சமர்ப்பிப்பு மற்றும் சரிபார்ப்பில் பங்கேற்க அனுமதிக்கிறது.
ஒரு நடைமுறை வழக்கு ஆய்வு: ஒரு அளவிடக்கூடிய தயாரிப்பு அட்டையை உருவாக்குதல்
லிட்டைப் பயன்படுத்தி ஒரு கட்டமைப்பு-சார்பற்ற <product-card> கூறை வடிவமைப்பதன் மூலம் இந்தக் கருத்துக்களைப் பயன்படுத்துவோம்.
படி 1: கூறின் API-ஐ வரையறுத்தல் (Props & Events)
நமது கூறு தரவைப் பெறவும், பயனர் செயல்களைப் பற்றி பயன்பாட்டிற்குத் தெரிவிக்கவும் வேண்டும்.
- பண்புகள் (உள்ளீடுகள்):
productName(string),price(number),currencySymbol(string, எ.கா., "$", "€", "¥"),imageUrl(string). - நிகழ்வுகள் (வெளியீடுகள்):
addToCart(தயாரிப்பு விவரங்களுடன் மேலே குமிழிக்கும் CustomEvent).
படி 2: ஸ்லாட்டுகளுடன் HTML-ஐ கட்டமைத்தல்
"விற்பனையில்" அல்லது "புதிய வரவு" போன்ற தனிப்பயன் பேட்ஜ்களைச் சேர்க்க நுகர்வோரை அனுமதிக்க ஒரு ஸ்லாட்டைப் பயன்படுத்துவோம்.
${this.currencySymbol}${this.price}
<div class="card">
<img src="${this.imageUrl}" alt="${this.productName}">
<div class="badge"><slot name="badge"></slot></div>
${this.productName}
படி 3: தர்க்கம் மற்றும் தீமிங்கை செயல்படுத்துதல்
லிட் கூறு வகுப்பு பண்புகளையும், தனிப்பயன் நிகழ்வை அனுப்பும் _handleAddToCart முறையையும் வரையறுக்கும். CSS தீமிங்கிற்காக தனிப்பயன் பண்புகளைப் பயன்படுத்தும்.
CSS உதாரணம்:
:host {
--card-background: #fff;
--card-border-color: #ddd;
--card-primary-font-color: #333;
}
.card {
background-color: var(--card-background);
border: 1px solid var(--card-border-color);
color: var(--card-primary-font-color);
}
படி 4: கூறைப் பயன்படுத்துதல்
இப்போது, இந்தக் கூறு எங்கும் பயன்படுத்தப்படலாம்.
சாதாரண HTML இல்:
<product-card
product-name="குளோபல் ஸ்மார்ட்வாட்ச்"
price="199"
currency-symbol="$"
image-url="/path/to/image.jpg">
<span slot="badge">சிறந்த விற்பனையாளர்</span>
</product-card>
ஒரு ரியாக்ட் கூறில்:
function ProductDisplay({ product }) {
const handleAddToCart = (e) => console.log('கார்ட்டில் சேர்க்கப்பட்டது:', e.detail);
return (
<product-card
productName={product.name}
price={product.price}
currencySymbol={product.currency}
imageUrl={product.image}
onAddToCart={handleAddToCart}
>
<span slot="badge">சிறந்த விற்பனையாளர்</span>
</product-card>
);
}
(குறிப்பு: ரியாக்ட் ஒருங்கிணைப்புக்கு பெரும்பாலும் ஒரு சிறிய ரேப்பர் (wrapper) தேவைப்படுகிறது அல்லது கட்டமைப்பு-சார்ந்த பரிசீலனைகளுக்கு Custom Elements Everywhere போன்ற ஒரு வளத்தை சரிபார்க்க வேண்டும்.)
எதிர்காலம் தரப்படுத்தப்பட்டது
வலை கூறு அடிப்படையிலான ஒரு கட்டமைப்பை ஏற்றுக்கொள்வது உங்கள் ஃபிரண்ட்-எண்ட் சுற்றுச்சூழல் அமைப்பின் நீண்டகால ஆரோக்கியம் மற்றும் அளவிடுதலில் ஒரு மூலோபாய முதலீடாகும். இது ரியாக்ட் அல்லது ஆங்குலர் போன்ற கட்டமைப்புகளை மாற்றுவது பற்றியது அல்ல, ஆனால் அவற்றை ஒரு நிலையான, இயங்கக்கூடிய அடித்தளத்துடன் பெருக்குவது பற்றியது. உங்கள் முக்கிய வடிவமைப்பு அமைப்பை உருவாக்குவதன் மூலமும், தரநிலைகள் அடிப்படையிலான கூறுகளுடன் மைக்ரோ-ஃபிரண்ட்எண்ட்ஸ் போன்ற முறைகளை செயல்படுத்துவதன் மூலமும், நீங்கள் கட்டமைப்புப் பிணைப்பிலிருந்து விடுபடுகிறீர்கள், உலகளவில் விநியோகிக்கப்பட்ட குழுக்களை மிகவும் திறமையாகச் செயல்பட அதிகாரம் அளிக்கிறீர்கள், மேலும் எதிர்காலத்தின் தவிர்க்க முடியாத மாற்றங்களுக்கு மீள்தன்மையுள்ள ஒரு தொழில்நுட்ப அடுக்கை உருவாக்குகிறீர்கள்.
தளத்தில் உருவாக்கத் தொடங்குவதற்கான நேரம் இது. கருவிகள் முதிர்ச்சியடைந்துள்ளன, உலாவி ஆதரவு உலகளாவியது, மேலும் உண்மையான அளவிடக்கூடிய, உலகளாவிய பயன்பாடுகளை உருவாக்குவதற்கான கட்டமைப்பு நன்மைகள் மறுக்க முடியாதவை.