முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 8 · பாடம் 1 இன் 4பாடத்திட்டத்தில் 29/32~12 min
தொகுதி பாடங்கள் (1/4)

ESM தொகுதிகள்: இறக்குமதி / ஏற்றுமதி

ஒரு நிரல் வளரும்போது, ​​அனைத்தையும் ஒரே கோப்பில் வைத்திருப்பது அருவருப்பானது. நவீன ஜாவாஸ்கிரிப்ட் ** ES தொகுதிகள் (ESM)** உடன் சிக்கலை தீர்க்கிறது: ஒவ்வொரு கோப்பும் ஏற்றுமதி செய்யக்கூடிய ஒரு தொகுதி ஆகும். செயல்பாடுகள், மாறிலிகள், வகுப்புகள் மற்றும் பிற கோப்புகளை இறக்குமதி செய்யலாம்.

export

நீங்கள் பகிரங்கப்படுத்த விரும்புவதை ஏற்றுமதி செய்கிறீர்கள். இரண்டு வடிவங்கள்:

JS
// somma.js
export function somma(a, b) {
  return a + b;
}

export const PI = 3.14159;

அல்லது, கோப்பின் முடிவில்:

JS
function somma(a, b) {
  return a + b;
}
const PI = 3.14159;
export { somma, PI };

import

மற்றொரு கோப்பிலிருந்து:

JS
// app.js
import { somma, PI } from './somma.js';

console.log(somma(1, 2)); // 3
console.log(PI); // 3.14159

பொருள் { somma, PI } என்பது நீங்கள் இறக்குமதி செய்ய விரும்பும் பெயர்களின் பட்டியல். அவை பொருந்த வேண்டும் ஏற்றுமதி செய்யப்பட்ட பெயர்கள்.

இயல்புநிலை ஏற்றுமதி

ஒவ்வொரு தொகுதியும் பெயர் இல்லாமல் ஒன்று "முக்கிய" ஏற்றுமதியைக் கொண்டிருக்கலாம்:

JS
// log.js
export default function log(msg) {
  console.log('[app]', msg);
}

உள்ளூரில் பெயரைத் தேர்ந்தெடுப்பதன் மூலம் அதை இறக்குமதி செய்கிறீர்கள்:

JS
import log from './log.js';
log('ciao');

மறுபெயரிடுதல்

JS
import { somma as plus } from './somma.js';
export { somma as add } from './somma.js'; // re-export

ஒரு கோப்பிற்கு ஒரு "பெயர்வெளி"

தொகுதிகள் ** தனிமைப்படுத்தப்பட்டவை**: ஒரு கோப்பில் அறிவிக்கப்பட்ட ஒரு மாறி உலகளாவிய நோக்கத்தில் முடிவடையாது. நீங்கள் அதை வேறு எங்கும் காணும்படி வெளிப்படையாக ஏற்றுமதி செய்ய வேண்டும். இது ஒரு பெரிய முன்னேற்றம் ஒவ்வொரு <script> window ஐப் பகிர்ந்துள்ள பழைய பள்ளி JS.

முயற்சி செய்து பாருங்கள்

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

உடற்பயிற்சி#js.m8.l1.e1
முயற்சிகள்: 0ஏற்றுகிறது…

இரண்டு தனித்தனி செயல்பாடுகளை வரையறுக்கவும்: சதுரத்தைப் பயன்படுத்தும் `square(n)` (returns n*n) மற்றும் `sumOfSquares(a, b)`. சதுரத்தை ஒரு கோப்பிலிருந்து 'ஏற்றுமதி செய்யப்பட்டதாக' நினைத்து, sumOfSquares ஆல் மீண்டும் பயன்படுத்தப்பட்டது.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

sumOfSquares(a,b) = square(a) + square(b)

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#js.m8.l1.e2
முயற்சிகள்: 0ஏற்றுகிறது…

ஒரு வரிசையில் உள்ள உறுப்புகளை எண்ணுவதற்கு isEven ஐப் பயன்படுத்தும் `isEven(n)` (n என்றால் சரி) மற்றும் `countEven(arr)` என்பதை வரையறுக்கவும். அவற்றை இரண்டு தனித்தனி செயல்பாடுகளாக வைத்திருங்கள்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

arr.filter(isEven).நீளம்

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்