தமிழ்

மீண்டும் பயன்படுத்தக்கூடிய வலைக் கூறுகளை உருவாக்குவதற்கான சக்திவாய்ந்த டைப்ஸ்கிரிப்ட் கம்பைலரான ஸ்டென்சிலை ஆராயுங்கள். அதன் முக்கிய அம்சங்கள், நன்மைகள், மற்றும் அளவிடக்கூடிய வலைப் பயன்பாடுகளை உருவாக்குவது பற்றி அறியுங்கள்.

ஸ்டென்சில்: டைப்ஸ்கிரிப்ட் வலைக் கூறு கம்பைலரின் ஒரு ஆழமான ஆய்வு

வலை மேம்பாட்டின் எப்போதும் மாறிவரும் சூழலில், மீண்டும் பயன்படுத்தக்கூடிய, அளவிடக்கூடிய, மற்றும் பராமரிக்கக்கூடிய கூறுகளின் தேவை மிக முக்கியமானது. ஸ்டென்சில், ஒரு டைப்ஸ்கிரிப்ட் கம்பைலர், இந்தத் தேவையைப் பூர்த்தி செய்வதற்கான ஒரு சக்திவாய்ந்த கருவியாக உருவெடுக்கிறது, இது டெவலப்பர்களை பல்வேறு ஃபிரேம்வொர்க்குகளுடன் தடையின்றி ஒருங்கிணைக்கும் அல்லது தனித்தனி கூறுகளாகவும் செயல்படும் வலைக் கூறுகளை உருவாக்க உதவுகிறது.

வலைக் கூறுகள் (Web Components) என்றால் என்ன?

ஸ்டென்சிலுக்குள் செல்வதற்கு முன், அது கட்டமைக்கப்பட்டுள்ள அடித்தளத்தைப் புரிந்துகொள்வோம்: வலைக் கூறுகள். வலைக் கூறுகள் என்பவை வலைத்தள API-களின் ஒரு தொகுப்பாகும், அவை உறைபூசப்பட்ட ஸ்டைலிங் மற்றும் நடத்தை கொண்ட மீண்டும் பயன்படுத்தக்கூடிய தனிப்பயன் HTML கூறுகளை உருவாக்க உங்களை அனுமதிக்கின்றன. இதன் பொருள், நீங்கள் <my-component> போன்ற உங்கள் சொந்த குறிச்சொற்களை வரையறுத்து, நீங்கள் பயன்படுத்தும் (அல்லது பயன்படுத்தாத) ஃபிரேம்வொர்க்கைப் பொருட்படுத்தாமல், உங்கள் வலைப் பயன்பாடுகளில் அவற்றைப் பயன்படுத்தலாம்.

வலைக் கூறுகளின் பின்னணியில் உள்ள முக்கிய தொழில்நுட்பங்கள் பின்வருமாறு:

ஸ்டென்சிலை அறிமுகப்படுத்துதல்

ஸ்டென்சில் என்பது வலைக் கூறுகளை உருவாக்கும் ஒரு கம்பைலர் ஆகும். இது அயோனிக் (Ionic) குழுவால் உருவாக்கப்பட்டது மற்றும் டைப்ஸ்கிரிப்ட், JSX, மற்றும் நவீன வலைத் தரங்களைப் பயன்படுத்தி மிகவும் உகந்ததாக்கப்பட்ட மற்றும் செயல்திறன் மிக்க கூறுகளை உருவாக்குகிறது. ஸ்டென்சில் வெறுமனே குறியீட்டைத் தொகுப்பதைத் தாண்டி, வலைக் கூறுகளை உருவாக்குவதையும் பராமரிப்பதையும் எளிதாகவும் திறமையாகவும் மாற்றும் பல முக்கிய அம்சங்களைச் சேர்க்கிறது.

ஸ்டென்சிலின் முக்கிய அம்சங்கள் மற்றும் நன்மைகள்

1. டைப்ஸ்கிரிப்ட் மற்றும் JSX ஆதரவு

ஸ்டென்சில் டைப்ஸ்கிரிப்டை ஏற்றுக்கொள்கிறது, இது வலுவான தட்டச்சு, மேம்பட்ட குறியீடு அமைப்பு மற்றும் மேம்பட்ட டெவலப்பர் உற்பத்தித்திறனை வழங்குகிறது. JSX-ஐப் பயன்படுத்துவது கூறின் பயனர் இடைமுகத்தை (UI) ஒரு அறிவிப்பு மற்றும் உள்ளுணர்வு வழியில் வரையறுக்க அனுமதிக்கிறது.

எடுத்துக்காட்டு:

ஸ்டென்சிலில் எழுதப்பட்ட ஒரு எளிய கவுண்டர் கூறைக் கவனியுங்கள்:


import { Component, State, h } from '@stencil/core';

@Component({
  tag: 'my-counter',
  styleUrl: 'my-counter.css',
  shadow: true
})
export class MyCounter {
  @State() count: number = 0;

  increment() {
    this.count++;
  }

  render() {
    return (
      <div class="counter-container">
        <p>எண்ணிக்கை: {this.count}</p>
        <button onClick={() => this.increment()}>அதிகரி</button>
      </div>
    );
  }
}

2. எதிர்வினை தரவு பிணைப்பு (Reactive Data Binding)

ஸ்டென்சில் கூறின் நிலையை நிர்வகிக்க மற்றும் பயனர் இடைமுகத்தை எதிர்வினையாகப் புதுப்பிக்க ஒரு நேரடியான வழியை வழங்குகிறது. @State டெக்கரேட்டரைப் பயன்படுத்தி, கூறின் நிலையில் ஏற்படும் மாற்றங்கள் தானாகவே மறு-ரெண்டரைத் தூண்டுகின்றன, இது பயனர் இடைமுகம் எப்போதும் தரவுகளுடன் ஒத்திசைவில் இருப்பதை உறுதி செய்கிறது.

எடுத்துக்காட்டு:

மேலே உள்ள கவுண்டர் எடுத்துக்காட்டில், @State() count: number = 0; அறிவிப்பு count மாறியை எதிர்வினையாக்குகிறது. ஒவ்வொரு முறையும் increment() செயல்பாடு அழைக்கப்படும்போது, count மாறி புதுப்பிக்கப்பட்டு, புதிய மதிப்பைப் பிரதிபலிக்க கூறு மீண்டும் ரெண்டர் செய்யப்படுகிறது.

3. மெய்நிகர் DOM மற்றும் திறமையான ரெண்டரிங்

ஸ்டென்சில் ரெண்டரிங் செயல்திறனை மேம்படுத்த மெய்நிகர் DOM-ஐப் பயன்படுத்துகிறது. மாற்றங்கள் முதலில் மெய்நிகர் DOM-இல் பயன்படுத்தப்படுகின்றன, பின்னர் தேவையான புதுப்பிப்புகள் மட்டுமே உண்மையான DOM-இல் பயன்படுத்தப்படுகின்றன, இது செலவுமிக்க DOM கையாளுதல்களைக் குறைக்கிறது.

4. நேரத்திற்கு-முன்பான (AOT) தொகுப்பு

ஸ்டென்சில் AOT தொகுப்பைச் செய்கிறது, அதாவது இயக்க நேரத்தில் இல்லாமல் உருவாக்க செயல்முறையின் போது குறியீடு தொகுக்கப்படுகிறது. இது வேகமான ஆரம்ப சுமை நேரங்கள் மற்றும் மேம்பட்ட இயக்க நேர செயல்திறனுக்கு வழிவகுக்கிறது.

5. சோம்பேறி ஏற்றுதல் (Lazy Loading)

கூறுகள் இயல்பாகவே சோம்பேறித்தனமாக ஏற்றப்படுகின்றன, அதாவது அவை தேவைப்படும்போது மட்டுமே ஏற்றப்படுகின்றன. இது ஆரம்பப் பக்க சுமை நேரத்தைக் குறைக்கவும், பயன்பாட்டின் ஒட்டுமொத்த செயல்திறனை மேம்படுத்தவும் உதவுகிறது.

6. பல-கட்டமைப்பு இணக்கத்தன்மை

ஸ்டென்சிலின் முக்கிய நன்மைகளில் ஒன்று, ரியாக்ட், ஆங்குலர், வியூ.js, மற்றும் சாதாரண HTML உள்ளிட்ட பல்வேறு ஃபிரேம்வொர்க்குகளுடன் இணக்கமான வலைக் கூறுகளை உருவாக்கும் திறன் ஆகும். இது ஒரு கூறு நூலகத்தை ஒரு முறை உருவாக்கி, பயன்படுத்தப்படும் ஃபிரேம்வொர்க்கைப் பொருட்படுத்தாமல் பல திட்டங்களில் மீண்டும் பயன்படுத்த உங்களை அனுமதிக்கிறது.

7. முற்போக்கு வலைப் பயன்பாடு (PWA) ஆதரவு

ஸ்டென்சில் PWA-க்களுக்கு உள்ளமைக்கப்பட்ட ஆதரவை வழங்குகிறது, இது நிறுவக்கூடிய, நம்பகமான மற்றும் ஈர்க்கக்கூடிய வலைப் பயன்பாடுகளை உருவாக்குவதை எளிதாக்குகிறது. இது சேவைப் பணியாளர் உருவாக்கம் மற்றும் மேனிஃபெஸ்ட் ஆதரவு போன்ற அம்சங்களை உள்ளடக்கியது.

8. சிறிய தொகுப்பு அளவுகள்

ஸ்டென்சில் சிறிய தொகுப்பு அளவுகளை உருவாக்க வடிவமைக்கப்பட்டுள்ளது, உங்கள் கூறுகள் விரைவாகவும் திறமையாகவும் ஏற்றப்படுவதை உறுதி செய்கிறது. இது மரம்-குலுக்கல் (tree-shaking) மற்றும் குறியீடு-பிளவு (code splitting) போன்ற நுட்பங்கள் மூலம் இதை அடைகிறது.

9. கருவி மற்றும் மேம்பாட்டு அனுபவம்

ஸ்டென்சில் மேம்பாட்டு அனுபவத்தை மேம்படுத்தும் கருவிகள் மற்றும் அம்சங்களின் வளமான தொகுப்பை வழங்குகிறது, அவற்றுள்:

ஸ்டென்சிலுடன் தொடங்குவது எப்படி

ஸ்டென்சிலுடன் தொடங்க, உங்கள் கணினியில் Node.js மற்றும் npm (அல்லது yarn) நிறுவப்பட்டிருக்க வேண்டும். பின்வரும் கட்டளையைப் பயன்படுத்தி நீங்கள் ஸ்டென்சில் CLI-ஐ உலகளவில் நிறுவலாம்:


npm install -g @stencil/core

CLI நிறுவப்பட்டதும், stencil init கட்டளையைப் பயன்படுத்தி ஒரு புதிய ஸ்டென்சில் திட்டத்தை உருவாக்கலாம்:


stencil init my-component-library

இது my-component-library என்ற ஒரு புதிய கோப்பகத்தை ஒரு அடிப்படை ஸ்டென்சில் திட்ட அமைப்புடன் உருவாக்கும். பின்னர் நீங்கள் கோப்பகத்திற்குச் சென்று npm start கட்டளையைப் பயன்படுத்தி மேம்பாட்டு சேவையகத்தைத் தொடங்கலாம்:


cd my-component-library
npm start

இது மேம்பாட்டு சேவையகத்தைத் தொடங்கி, உங்கள் திட்டத்தை ஒரு வலை உலாவியில் திறக்கும். பின்னர் நீங்கள் src/components கோப்பகத்தில் உள்ள கோப்புகளை மாற்றுவதன் மூலம் உங்கள் சொந்த வலைக் கூறுகளை உருவாக்கத் தொடங்கலாம்.

எடுத்துக்காட்டு: ஒரு எளிய உள்ளீட்டுக் கூறை உருவாக்குதல்

ஸ்டென்சிலைப் பயன்படுத்தி ஒரு எளிய உள்ளீட்டுக் கூறை உருவாக்குவோம். இந்தக் கூறு பயனர்களை உரையை உள்ளிடவும் அதை பக்கத்தில் காட்டவும் அனுமதிக்கும்.

1. ஒரு புதிய கூறு கோப்பை உருவாக்கவும்

src/components கோப்பகத்தில் my-input.tsx என்ற ஒரு புதிய கோப்பை உருவாக்கவும்.

2. கூறினை வரையறுக்கவும்

my-input.tsx கோப்பில் பின்வரும் குறியீட்டைச் சேர்க்கவும்:


import { Component, State, h, Event, EventEmitter } from '@stencil/core';

@Component({
  tag: 'my-input',
  styleUrl: 'my-input.css',
  shadow: true
})
export class MyInput {
  @State() inputValue: string = '';
  @Event() inputChanged: EventEmitter;

  handleInputChange(event: any) {
    this.inputValue = event.target.value;
    this.inputChanged.emit(this.inputValue);
  }

  render() {
    return (
      <div class="input-container">
        <input type="text" value={this.inputValue} onInput={(event) => this.handleInputChange(event)} />
        <p>நீங்கள் உள்ளிட்டது: {this.inputValue}</p>
      </div>
    );
  }
}

இந்தக் குறியீடு my-input என்ற ஒரு புதிய கூறினை வரையறுக்கிறது. இது பயனர் உள்ளிட்ட உரையை சேமிக்கும் ஒரு inputValue நிலை மாறியைக் கொண்டுள்ளது. பயனர் உள்ளீட்டு புலத்தில் தட்டச்சு செய்யும் போது handleInputChange() செயல்பாடு அழைக்கப்படுகிறது. இந்தச் செயல்பாடு inputValue நிலை மாறியைப் புதுப்பித்து, புதிய மதிப்புடன் ஒரு inputChanged நிகழ்வை வெளியிடுகிறது.

3. ஸ்டைலிங் சேர்க்கவும்

src/components கோப்பகத்தில் my-input.css என்ற ஒரு புதிய கோப்பை உருவாக்கி பின்வரும் CSS-ஐச் சேர்க்கவும்:


.input-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 20px;
  border: 1px solid #ccc;
  border-radius: 5px;
  margin-bottom: 10px;
}

input {
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 5px;
  font-size: 16px;
  margin-bottom: 10px;
}

4. உங்கள் பயன்பாட்டில் கூறினைப் பயன்படுத்தவும்

உங்கள் HTML கோப்பில் பின்வரும் குறியீட்டைச் சேர்ப்பதன் மூலம் இப்போது உங்கள் பயன்பாட்டில் my-input கூறினைப் பயன்படுத்தலாம்:


<my-input></my-input>

மேம்பட்ட ஸ்டென்சில் கருத்துக்கள்

1. கூறு கலவை (Component Composition)

ஸ்டென்சில் மிகவும் சிக்கலான பயனர் இடைமுகங்களை உருவாக்க கூறுகளை ஒன்றாக இணைக்க உங்களை அனுமதிக்கிறது. இது கூறுகளை ஒன்றோடொன்று இணைத்து, பண்புகள் மற்றும் நிகழ்வுகளைப் பயன்படுத்தி அவற்றுக்கிடையே தரவைப் பரிமாறிக் கொள்வதை உள்ளடக்கியது.

2. பண்புகள் மற்றும் நிகழ்வுகள்

பண்புகள் (Properties) ஒரு பெற்றோர் கூறிலிருந்து ஒரு குழந்தை கூறுக்கு தரவை அனுப்பப் பயன்படுகின்றன. அவை @Prop() டெக்கரேட்டரைப் பயன்படுத்தி வரையறுக்கப்படுகின்றன.

நிகழ்வுகள் (Events) ஒரு குழந்தை கூறிலிருந்து ஒரு பெற்றோர் கூறுக்குத் தொடர்பு கொள்ளப் பயன்படுகின்றன. அவை @Event() டெக்கரேட்டரைப் பயன்படுத்தி வரையறுக்கப்பட்டு, emit() செயல்பாட்டைப் பயன்படுத்தி வெளியிடப்படுகின்றன.

3. வாழ்க்கைச் சுழற்சி முறைகள்

ஸ்டென்சில் ஒரு கூறின் வாழ்க்கைச் சுழற்சியின் வெவ்வேறு நிலைகளில் இணைக்க உங்களை அனுமதிக்கும் வாழ்க்கைச் சுழற்சி முறைகளின் ஒரு தொகுப்பை வழங்குகிறது. இந்த முறைகள் பின்வருமாறு:

4. சோதனை

ஸ்டென்சில் ஜெஸ்ட்டை அடிப்படையாகக் கொண்ட ஒரு உள்ளமைக்கப்பட்ட சோதனை கட்டமைப்பை வழங்குகிறது. உங்கள் கூறுகளுக்கு யூனிட் மற்றும் ஒருங்கிணைப்பு சோதனைகளை எழுத இந்த கட்டமைப்பைப் பயன்படுத்தலாம். உங்கள் கூறுகள் சரியாக வேலை செய்கின்றன என்பதை உறுதிப்படுத்தவும், பின்னடைவுகளைத் தடுக்கவும் சோதனை செய்வது முக்கியம்.

ஸ்டென்சில் மற்றும் பிற வலைக் கூறு ஃபிரேம்வொர்க்குகளுக்கு இடையிலான ஒப்பீடு

வலைக் கூறுகளை உருவாக்குவதற்கான ஒரே வழி ஸ்டென்சில் அல்ல என்றாலும், அது செயல்திறன், பல-கட்டமைப்பு இணக்கத்தன்மை மற்றும் ஒரு நெறிப்படுத்தப்பட்ட டெவலப்பர் அனுபவம் ஆகியவற்றில் கவனம் செலுத்துவதன் மூலம் தன்னை வேறுபடுத்திக் கொள்கிறது. லிட்எலெமென்ட் மற்றும் பாலிமர் போன்ற பிற ஃபிரேம்வொர்க்குகளும் வலைக் கூறு மேம்பாட்டிற்கான தீர்வுகளை வழங்குகின்றன, ஆனால் ஸ்டென்சிலின் AOT தொகுப்பு மற்றும் சோம்பேறி ஏற்றுதல் போன்ற தனித்துவமான அம்சங்கள் சில சூழ்நிலைகளில் தனித்துவமான நன்மைகளை வழங்குகின்றன.

நிஜ உலக எடுத்துக்காட்டுகள் மற்றும் பயன்பாட்டு வழக்குகள்

முடிவுரை

ஸ்டென்சில் வலைக் கூறுகளை உருவாக்குவதற்கான ஒரு சக்திவாய்ந்த மற்றும் பல்துறை கருவியாகும். செயல்திறன், பல-கட்டமைப்பு இணக்கத்தன்மை மற்றும் ஒரு சிறந்த டெவலப்பர் அனுபவம் ஆகியவற்றில் அதன் கவனம், நவீன வலைப் பயன்பாடுகளுக்கு மீண்டும் பயன்படுத்தக்கூடிய பயனர் இடைமுகக் கூறுகளை உருவாக்குவதற்கான ஒரு சிறந்த தேர்வாக அமைகிறது. நீங்கள் ஒரு வடிவமைப்பு அமைப்பு, ஒரு மின்-வணிக தளம் அல்லது ஒரு எளிய வலைத்தளத்தை உருவாக்கினாலும், உங்கள் பயன்பாட்டின் செயல்திறன் மற்றும் பராமரிப்பை மேம்படுத்தும் அளவிடக்கூடிய மற்றும் பராமரிக்கக்கூடிய கூறுகளை உருவாக்க ஸ்டென்சில் உங்களுக்கு உதவும். வலைக் கூறுகளை ஏற்றுக்கொண்டு, ஸ்டென்சிலின் அம்சங்களைப் பயன்படுத்துவதன் மூலம், டெவலப்பர்கள் மிகவும் வலுவான, நெகிழ்வான மற்றும் எதிர்காலத்திற்கு ஏற்ற வலைப் பயன்பாடுகளை உருவாக்க முடியும்.

வலை மேம்பாட்டுச் சூழல் தொடர்ந்து வளர்ந்து வருவதால், பயனர் இடைமுக மேம்பாட்டின் எதிர்காலத்தை வடிவமைப்பதில் ஸ்டென்சில் ஒரு முக்கியப் பங்கை வகிக்க நன்கு நிலைநிறுத்தப்பட்டுள்ளது. வலைத் தரங்களுக்கான அதன் அர்ப்பணிப்பு, செயல்திறன் மேம்படுத்தல் மற்றும் ஒரு நேர்மறையான டெவலப்பர் அனுபவம் ஆகியவை உயர்தர வலைக் கூறுகளை உருவாக்க விரும்பும் எந்தவொரு வலை டெவலப்பருக்கும் ஒரு மதிப்புமிக்க கருவியாக அமைகிறது.