നൂതന ലോഡിംഗ് ഒപ്റ്റിമൈസേഷൻ ടെക്നിക്കുകൾ ഉപയോഗിച്ച് ജാവാസ്ക്രിപ്റ്റ് മൊഡ്യൂൾ പെർഫോമൻസ് മെച്ചപ്പെടുത്തുക. ഈ ഗൈഡിൽ ഡൈനാമിക് ഇമ്പോർട്ടുകൾ, കോഡ് സ്പ്ലിറ്റിംഗ്, ട്രീ ഷേക്കിംഗ്, ആഗോള വെബ് ആപ്ലിക്കേഷനുകൾക്കായുള്ള സെർവർ-സൈഡ് ഒപ്റ്റിമൈസേഷനുകൾ എന്നിവ ഉൾക്കൊള്ളുന്നു.
ജാവാസ്ക്രിപ്റ്റ് മൊഡ്യൂൾ പെർഫോമൻസ്: ആഗോള ആപ്ലിക്കേഷനുകൾക്കായുള്ള ലോഡിംഗ് ഒപ്റ്റിമൈസേഷൻ സ്ട്രാറ്റജികൾ
ഇന്നത്തെ പരസ്പരം ബന്ധപ്പെട്ടിരിക്കുന്ന ഡിജിറ്റൽ ലോകത്ത്, ലോകമെമ്പാടുമുള്ള വിവിധ നെറ്റ്വർക്ക് സാഹചര്യങ്ങളിലും ഉപകരണങ്ങളിലും വെബ് ആപ്ലിക്കേഷനുകൾ കുറ്റമറ്റ രീതിയിൽ പ്രവർത്തിക്കുമെന്ന് പ്രതീക്ഷിക്കുന്നു. ആധുനിക ജാവാസ്ക്രിപ്റ്റ് ഡെവലപ്മെൻ്റിൻ്റെ ഹൃദയഭാഗത്ത് മൊഡ്യൂൾ സിസ്റ്റം നിലകൊള്ളുന്നു, ഇത് സങ്കീർണ്ണമായ ആപ്ലിക്കേഷനുകളെ കൈകാര്യം ചെയ്യാവുന്നതും പുനരുപയോഗിക്കാവുന്നതുമായ ഭാഗങ്ങളായി വിഭജിക്കാൻ ഡെവലപ്പർമാരെ സഹായിക്കുന്നു. എന്നിരുന്നാലും, ഈ മൊഡ്യൂളുകൾ ലോഡ് ചെയ്യുന്ന രീതി ആപ്ലിക്കേഷൻ്റെ പ്രകടനത്തെ സാരമായി ബാധിക്കും. ഈ സമഗ്രമായ ഗൈഡ്, ആഗോള പ്രേക്ഷകരെ ലക്ഷ്യമിടുന്ന ഡെവലപ്പർമാർക്ക് പ്രവർത്തനക്ഷമമായ ഉൾക്കാഴ്ചകൾ നൽകിക്കൊണ്ട്, നിർണായകമായ ജാവാസ്ക്രിപ്റ്റ് മൊഡ്യൂൾ ലോഡിംഗ് ഒപ്റ്റിമൈസേഷൻ സ്ട്രാറ്റജികളിലേക്ക് ആഴത്തിൽ ഇറങ്ങിച്ചെല്ലുന്നു.
മൊഡ്യൂൾ പെർഫോമൻസിൻ്റെ വർദ്ധിച്ചുവരുന്ന പ്രാധാന്യം
ആപ്ലിക്കേഷനുകളുടെ സങ്കീർണ്ണത വർദ്ധിക്കുന്നതിനനുസരിച്ച്, അവയെ പ്രവർത്തിപ്പിക്കാനാവശ്യമായ ജാവാസ്ക്രിപ്റ്റ് മൊഡ്യൂളുകളുടെ എണ്ണവും വർദ്ധിക്കുന്നു. കാര്യക്ഷമമല്ലാത്ത മൊഡ്യൂൾ ലോഡിംഗ് താഴെ പറയുന്ന പ്രശ്നങ്ങൾക്ക് കാരണമാകും:
- പ്രാരംഭ ലോഡ് സമയം വർദ്ധിക്കുന്നത്: വേഗത കുറഞ്ഞ ഇൻ്റർനെറ്റ് കണക്ഷനുകളുള്ള പ്രദേശങ്ങളിലെ ഉപയോക്താക്കൾക്ക് കൂടുതൽ നേരം കാത്തിരിക്കേണ്ടി വരും, ഇത് നിരാശയ്ക്കും ആപ്ലിക്കേഷൻ ഉപേക്ഷിക്കുന്നതിനും കാരണമാകും.
- ഉയർന്ന ബാൻഡ്വിഡ്ത്ത് ഉപഭോഗം: അനാവശ്യ കോഡ് ഡൗൺലോഡ് ചെയ്യുന്നത് ഡാറ്റാ ഉപയോഗം വർദ്ധിപ്പിക്കുന്നു, ഇത് പരിമിതമായ ഡാറ്റാ പ്ലാനുകളുള്ള ഉപയോക്താക്കൾക്ക് ഒരു പ്രധാന ആശങ്കയാണ്.
- വേഗത കുറഞ്ഞ റൺടൈം പെർഫോമൻസ്: വലിയ ജാവാസ്ക്രിപ്റ്റ് ബണ്ടിലുകൾ ബ്രൗസർ വിഭവങ്ങളെ സമ്മർദ്ദത്തിലാക്കും, ഇത് മന്ദഗതിയിലുള്ള പ്രവർത്തനത്തിനും മോശം ഉപയോക്തൃ അനുഭവത്തിനും കാരണമാകും.
- മോശം എസ്ഇഒ (SEO): സെർച്ച് എഞ്ചിനുകൾ വേഗത കുറഞ്ഞ വെബ്സൈറ്റുകളെ താഴ്ന്ന റാങ്കിലേക്ക് മാറ്റുന്നു, ഇത് ദൃശ്യപരതയെയും ഓർഗാനിക് ട്രാഫിക്കിനെയും ബാധിക്കുന്നു.
മൊഡ്യൂൾ ലോഡിംഗ് ഒപ്റ്റിമൈസ് ചെയ്യുന്നത് ഒരു സാങ്കേതിക മികച്ച പരിശീലനം മാത്രമല്ല; ഇത് ഒരു യഥാർത്ഥ ആഗോള ഉപയോക്തൃ അടിത്തറയെ പരിപാലിക്കുന്ന, എല്ലാവരെയും ഉൾക്കൊള്ളുന്നതും ഉയർന്ന പ്രകടനശേഷിയുള്ളതുമായ ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കുന്നതിനുള്ള ഒരു നിർണായക ഘട്ടമാണ്. ഇതിനർത്ഥം, നല്ല കണക്റ്റിവിറ്റിയുള്ള നഗര കേന്ദ്രങ്ങളിലുള്ള ഉപയോക്താക്കളെപ്പോലെ തന്നെ, പരിമിതമായ ബാൻഡ്വിഡ്ത്ത് ഉള്ള വളർന്നുവരുന്ന വിപണികളിലെ ഉപയോക്താക്കളെയും പരിഗണിക്കുക എന്നതാണ്.
ജാവാസ്ക്രിപ്റ്റ് മൊഡ്യൂൾ സിസ്റ്റങ്ങളെ മനസ്സിലാക്കൽ: ES മൊഡ്യൂളുകളും CommonJS-ഉം
ഒപ്റ്റിമൈസേഷനിലേക്ക് കടക്കുന്നതിന് മുമ്പ്, പ്രചാരത്തിലുള്ള മൊഡ്യൂൾ സിസ്റ്റങ്ങളെക്കുറിച്ച് മനസ്സിലാക്കേണ്ടത് അത്യാവശ്യമാണ്:
ECMAScript മൊഡ്യൂളുകൾ (ES മൊഡ്യൂളുകൾ)
ആധുനിക ബ്രൗസറുകളിലും Node.js-ലും സ്വാഭാവികമായി പിന്തുണയ്ക്കുന്ന, ജാവാസ്ക്രിപ്റ്റിനുള്ള സ്റ്റാൻഡേർഡ് മൊഡ്യൂൾ സിസ്റ്റമാണ് ES മൊഡ്യൂളുകൾ. പ്രധാന സവിശേഷതകളിൽ ഇവ ഉൾപ്പെടുന്നു:
- സ്റ്റാറ്റിക് ഘടന: `import`, `export` സ്റ്റേറ്റ്മെൻ്റുകൾ പാഴ്സ് ചെയ്യുന്ന സമയത്ത് തന്നെ വിലയിരുത്തപ്പെടുന്നു, ഇത് സ്റ്റാറ്റിക് അനാലിസിസിനും ഒപ്റ്റിമൈസേഷനും അനുവദിക്കുന്നു.
- അസിൻക്രണസ് ലോഡിംഗ്: ES മൊഡ്യൂളുകൾ അസിൻക്രണസ് ആയി ലോഡ് ചെയ്യാൻ കഴിയും, ഇത് റെൻഡർ-ബ്ലോക്കിംഗ് തടയുന്നു.
- ടോപ്പ്-ലെവൽ `await`: മൊഡ്യൂളിൻ്റെ ഏറ്റവും ഉയർന്ന തലത്തിൽ അസിൻക്രണസ് പ്രവർത്തനങ്ങൾ സാധ്യമാക്കുന്നു.
ഉദാഹരണം:
// math.js
export function add(a, b) {
return a + b;
}
// index.js
import { add } from './math.js';
console.log(add(5, 3));
CommonJS (CJS)
CommonJS പ്രധാനമായും Node.js എൻവയോൺമെൻ്റുകളിലാണ് ഉപയോഗിക്കുന്നത്. ഇത് ഒരു സിൻക്രണസ്, മൊഡ്യൂൾ-ലോഡിംഗ് സംവിധാനം ഉപയോഗിക്കുന്നു:
- ഡൈനാമിക് `require()`: മൊഡ്യൂളുകൾ `require()` ഫംഗ്ഷൻ ഉപയോഗിച്ച് സിൻക്രണസ് ആയി ലോഡ് ചെയ്യപ്പെടുന്നു.
- സെർവർ-സൈഡ് ഫോക്കസ്: സിൻക്രണസ് ലോഡിംഗ് ഒരു പ്രകടന ആശങ്ക കുറഞ്ഞ സെർവർ എൻവയോൺമെൻ്റുകൾക്കായി രൂപകൽപ്പന ചെയ്തതാണ്.
ഉദാഹരണം:
// math.js
function add(a, b) {
return a + b;
}
module.exports = { add };
// index.js
const { add } = require('./math.js');
console.log(add(5, 3));
Node.js ഇപ്പോൾ ES മൊഡ്യൂളുകളെ കൂടുതലായി പിന്തുണയ്ക്കുന്നുണ്ടെങ്കിലും, നിലവിലുള്ള പല പ്രോജക്റ്റുകളും ലൈബ്രറികളും ഇപ്പോഴും CommonJS-നെ ആശ്രയിക്കുന്നതിനാലും ബിൽഡ് ടൂളുകൾ പലപ്പോഴും അവയ്ക്കിടയിൽ ട്രാൻസ്പൈൽ ചെയ്യുന്നതിനാലും രണ്ടും മനസ്സിലാക്കേണ്ടത് അത്യാവശ്യമാണ്.
പ്രധാന മൊഡ്യൂൾ ലോഡിംഗ് ഒപ്റ്റിമൈസേഷൻ സ്ട്രാറ്റജികൾ
മൊഡ്യൂൾ ലോഡിംഗ് ഒപ്റ്റിമൈസേഷൻ്റെ പ്രധാന ലക്ഷ്യം, ആവശ്യമായ ജാവാസ്ക്രിപ്റ്റ് കോഡ് മാത്രം ഉപയോക്താവിന് എത്രയും പെട്ടെന്ന് എത്തിക്കുക എന്നതാണ്.
1. കോഡ് സ്പ്ലിറ്റിംഗ് (Code Splitting)
കോഡ് സ്പ്ലിറ്റിംഗ് എന്നത് നിങ്ങളുടെ ജാവാസ്ക്രിപ്റ്റ് ബണ്ടിലിനെ ആവശ്യാനുസരണം ലോഡ് ചെയ്യാൻ കഴിയുന്ന ചെറിയ ഭാഗങ്ങളായി (chunks) വിഭജിക്കുന്ന സാങ്കേതികതയാണ്. ഇത് പ്രാരംഭ പേലോഡിൻ്റെ വലുപ്പം ഗണ്യമായി കുറയ്ക്കുന്നു.
എൻട്രി പോയിൻ്റ് സ്പ്ലിറ്റിംഗ്
Webpack, Rollup, Parcel പോലുള്ള ആധുനിക ബണ്ട്ലറുകൾക്ക് എൻട്രി പോയിൻ്റുകളെ അടിസ്ഥാനമാക്കി നിങ്ങളുടെ കോഡ് സ്വയമേവ വിഭജിക്കാൻ കഴിയും. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് ഒരു പ്രധാന ആപ്ലിക്കേഷൻ എൻട്രി പോയിൻ്റും, അഡ്മിൻ പാനലുകൾക്കോ പ്രത്യേക ഫീച്ചർ മൊഡ്യൂളുകൾക്കോ വേണ്ടി വെവ്വേറെ എൻട്രി പോയിൻ്റുകളും ഉണ്ടാകാം.
ഡൈനാമിക് ഇമ്പോർട്ടുകൾ (`import()`)
`import()` ഫംഗ്ഷൻ കോഡ് സ്പ്ലിറ്റിംഗിനുള്ള ഒരു ശക്തമായ ഉപകരണമാണ്. ഇത് റൺടൈമിൽ മൊഡ്യൂളുകൾ അസിൻക്രണസ് ആയി ലോഡ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു. പേജ് ലോഡ് ചെയ്യുമ്പോൾ ഉടൻ ആവശ്യമില്ലാത്ത ഘടകങ്ങൾക്കോ ഫീച്ചറുകൾക്കോ ഇത് അനുയോജ്യമാണ്.
ഉപയോഗം: ഒരു മോഡൽ കമ്പോണൻ്റ്, ഒരു യൂസർ പ്രൊഫൈൽ വിഭാഗം, അല്ലെങ്കിൽ ഒരു അനലിറ്റിക്സ് സ്ക്രിപ്റ്റ് എന്നിവ ഉപയോക്താവ് അവയുമായി സംവദിക്കുമ്പോൾ മാത്രം ലേസി-ലോഡ് ചെയ്യുക.
ഉദാഹരണം (React ഉപയോഗിച്ച്):
import React, { Suspense, lazy } from 'react';
const HeavyComponent = lazy(() => import('./HeavyComponent'));
function App() {
return (
My App
Loading... }>
ഈ ഉദാഹരണത്തിൽ, `App` കമ്പോണൻ്റ് റെൻഡർ ചെയ്യുമ്പോൾ മാത്രമേ `HeavyComponent` ലഭ്യമാക്കി ലോഡ് ചെയ്യുകയുള്ളൂ. മൊഡ്യൂൾ ലോഡ് ചെയ്യുമ്പോൾ `Suspense` കമ്പോണൻ്റ് ഒരു ഫാൾബാക്ക് UI നൽകുന്നു.
റൂട്ട് അടിസ്ഥാനമാക്കിയുള്ള കോഡ് സ്പ്ലിറ്റിംഗ്
ആപ്ലിക്കേഷൻ റൂട്ടുകളെ അടിസ്ഥാനമാക്കി കോഡ് വിഭജിക്കുന്നത് ഒരു സാധാരണവും വളരെ ഫലപ്രദവുമായ ഒരു തന്ത്രമാണ്. ഇത് ഉപയോക്താക്കൾ നാവിഗേറ്റ് ചെയ്യുന്ന നിലവിലെ കാഴ്ചയ്ക്ക് ആവശ്യമായ ജാവാസ്ക്രിപ്റ്റ് മാത്രം ഡൗൺലോഡ് ചെയ്യുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
React Router, Vue Router, Angular റൂട്ടിംഗ് പോലുള്ള ഫ്രെയിംവർക്കുകൾ ഡൈനാമിക് ഇമ്പോർട്ടുകൾ ഉപയോഗിച്ച് റൂട്ട് അടിസ്ഥാനമാക്കിയുള്ള കോഡ് സ്പ്ലിറ്റിംഗ് നടപ്പിലാക്കുന്നതിന് ബിൽറ്റ്-ഇൻ പിന്തുണയോ പാറ്റേണുകളോ വാഗ്ദാനം ചെയ്യുന്നു.
ഉദാഹരണം (റൂട്ടറിനൊപ്പമുള്ള ആശയം):
// Assuming a routing setup
const routes = [
{
path: '/',
component: lazy(() => import('./HomePage'))
},
{
path: '/about',
component: lazy(() => import('./AboutPage'))
},
// ... other routes
];
2. ട്രീ ഷേക്കിംഗ് (Tree Shaking)
ട്രീ ഷേക്കിംഗ് എന്നത് നിങ്ങളുടെ ജാവാസ്ക്രിപ്റ്റ് ബണ്ടിലുകളിൽ നിന്ന് ഉപയോഗിക്കാത്ത കോഡ് (ഡെഡ് കോഡ്) ഒഴിവാക്കുന്ന ഒരു പ്രക്രിയയാണ്. ബണ്ട്ലറുകൾ നിങ്ങളുടെ മൊഡ്യൂൾ ഗ്രാഫിലൂടെ സഞ്ചരിച്ച് എക്സ്പോർട്ട് ചെയ്യുകയും ഇമ്പോർട്ട് ചെയ്യുകയും ചെയ്യാത്ത എന്തും നീക്കംചെയ്യുന്നു.
- ES മൊഡ്യൂൾ ആശ്രിതത്വം: ES മൊഡ്യൂളുകളിൽ ട്രീ ഷേക്കിംഗ് ഏറ്റവും നന്നായി പ്രവർത്തിക്കുന്നു, കാരണം അവയുടെ സ്റ്റാറ്റിക് ഘടന ബണ്ട്ലറുകൾക്ക് ഏതൊക്കെ എക്സ്പോർട്ടുകളാണ് യഥാർത്ഥത്തിൽ ഉപയോഗിക്കുന്നതെന്ന് സ്റ്റാറ്റിക് ആയി വിശകലനം ചെയ്യാൻ അനുവദിക്കുന്നു.
- സൈഡ് എഫക്റ്റുകൾ: സൈഡ് എഫക്റ്റുകളുള്ള മൊഡ്യൂളുകളെക്കുറിച്ച് ശ്രദ്ധിക്കുക (വ്യക്തമായി ഉപയോഗിച്ചില്ലെങ്കിലും, ഇമ്പോർട്ട് ചെയ്യുമ്പോൾ പ്രവർത്തിക്കുന്ന കോഡ്). ബണ്ട്ലറുകൾക്ക് പലപ്പോഴും സൈഡ് എഫക്റ്റുകളുള്ള മൊഡ്യൂളുകളെ അടയാളപ്പെടുത്തുന്നതിനോ ഒഴിവാക്കുന്നതിനോ കോൺഫിഗറേഷനുകൾ ഉണ്ട്.
- ബണ്ട്ലർ കോൺഫിഗറേഷൻ: നിങ്ങളുടെ ബണ്ട്ലർ (Webpack, Rollup) ട്രീ ഷേക്കിംഗ് പ്രവർത്തനക്ഷമമാക്കാൻ കോൺഫിഗർ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക (ഉദാഹരണത്തിന്, Webpack-ൽ `mode: 'production'`, അല്ലെങ്കിൽ പ്രത്യേക Rollup പ്ലഗിനുകൾ).
ഉദാഹരണം: നിങ്ങൾ ഒരു യൂട്ടിലിറ്റി ലൈബ്രറി മുഴുവനായി ഇമ്പോർട്ട് ചെയ്യുകയും എന്നാൽ ഒരു ഫംഗ്ഷൻ മാത്രം ഉപയോഗിക്കുകയും ചെയ്യുന്നുവെങ്കിൽ, ട്രീ ഷേക്കിംഗിന് ഉപയോഗിക്കാത്ത ഫംഗ്ഷനുകൾ നീക്കം ചെയ്യാൻ കഴിയും, ഇത് ബണ്ടിലിൻ്റെ വലുപ്പം ഗണ്യമായി കുറയ്ക്കുന്നു.
// Assuming 'lodash-es' which supports tree shaking
import { debounce } from 'lodash-es';
// If only 'debounce' is imported and used, other lodash functions are shaken off.
const optimizedFunction = debounce(myFunc, 300);
3. മൊഡ്യൂൾ കോൺകാറ്റിനേഷൻ (സ്കോപ്പ് ഹോയിസ്റ്റിംഗ്)
മൊഡ്യൂൾ കോൺകാറ്റിനേഷൻ, അഥവാ സ്കോപ്പ് ഹോയിസ്റ്റിംഗ്, ഓരോ മൊഡ്യൂളിനും വെവ്വേറെ റാപ്പറുകൾ ഉണ്ടാക്കുന്നതിന് പകരം മൊഡ്യൂളുകളെ ഒരൊറ്റ സ്കോപ്പിലേക്ക് ബണ്ടിൽ ചെയ്യുന്ന ഒരു ബിൽഡ് ഒപ്റ്റിമൈസേഷൻ ടെക്നിക്കാണ്. ഇത് മൊഡ്യൂൾ ലോഡിംഗിൻ്റെ ഓവർഹെഡ് കുറയ്ക്കുകയും റൺടൈം പ്രകടനം മെച്ചപ്പെടുത്തുകയും ചെയ്യും.
- പ്രയോജനങ്ങൾ: കോഡിൻ്റെ വലുപ്പം കുറയുന്നു, കുറഞ്ഞ ഫംഗ്ഷൻ കോളുകൾ കാരണം വേഗത്തിലുള്ള എക്സിക്യൂഷൻ, ട്രീ ഷേക്കിംഗിന് മികച്ച സാധ്യത.
- ബണ്ട്ലർ പിന്തുണ: Webpack-ൻ്റെ `optimization.concatenateModules` (പ്രൊഡക്ഷൻ മോഡിൽ ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു) Rollup-ൻ്റെ ഡിഫോൾട്ട് സ്വഭാവവും ഇത് നടപ്പിലാക്കുന്നു.
4. മിനിമൈസേഷനും കംപ്രഷനും
ഇവ കർശനമായി മൊഡ്യൂൾ ലോഡിംഗിൻ്റെ ഭാഗമല്ലെങ്കിലും, ഡെലിവർ ചെയ്യുന്ന കോഡിൻ്റെ വലുപ്പം കുറയ്ക്കുന്നതിന് ഇവ നിർണായകമാണ്.
- മിനിഫിക്കേഷൻ: വൈറ്റ്സ്പെയ്സ്, കമൻ്റുകൾ എന്നിവ നീക്കംചെയ്യുകയും വേരിയബിൾ പേരുകൾ ചെറുതാക്കുകയും ചെയ്യുന്നു.
- കംപ്രഷൻ: Gzip, Brotli പോലുള്ള അൽഗോരിതങ്ങൾ HTTP വഴി കൈമാറ്റം ചെയ്യുന്നതിനായി മിനിഫൈ ചെയ്ത കോഡിനെ കൂടുതൽ കംപ്രസ് ചെയ്യുന്നു. കംപ്രസ് ചെയ്ത അസറ്റുകൾ നൽകാൻ നിങ്ങളുടെ സെർവർ കോൺഫിഗർ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക. Gzip-നേക്കാൾ മികച്ച കംപ്രഷൻ അനുപാതം സാധാരണയായി Brotli നൽകുന്നു.
5. അസിൻക്രണസ് മൊഡ്യൂൾ ലോഡിംഗ് (ബ്രൗസർ സവിശേഷതകൾ)
സ്ക്രിപ്റ്റ് ലോഡിംഗ് കൈകാര്യം ചെയ്യുന്നതിൽ ബ്രൗസറുകൾ വികസിച്ചിട്ടുണ്ട്. ഇവ മനസ്സിലാക്കുന്നത് പ്രധാനമാണ്:
- `defer` ആട്രിബ്യൂട്ട്: `defer` ആട്രിബ്യൂട്ടുള്ള സ്ക്രിപ്റ്റുകൾ അസിൻക്രണസ് ആയി ഡൗൺലോഡ് ചെയ്യുകയും HTML ഡോക്യുമെൻ്റ് പൂർണ്ണമായി പാഴ്സ് ചെയ്തതിനുശേഷം മാത്രം, ഡോക്യുമെൻ്റിൽ കാണുന്ന ക്രമത്തിൽ എക്സിക്യൂട്ട് ചെയ്യുകയും ചെയ്യുന്നു. മിക്ക ജാവാസ്ക്രിപ്റ്റ് ഫയലുകൾക്കും ഇത് പൊതുവെ അഭികാമ്യമാണ്.
- `async` ആട്രിബ്യൂട്ട്: `async` ആട്രിബ്യൂട്ടുള്ള സ്ക്രിപ്റ്റുകൾ അസിൻക്രണസ് ആയി ഡൗൺലോഡ് ചെയ്യുകയും HTML പാഴ്സിംഗിനായി കാത്തിരിക്കാതെ, ഡൗൺലോഡ് ചെയ്താലുടൻ എക്സിക്യൂട്ട് ചെയ്യുകയും ചെയ്യുന്നു. ഇത് ക്രമം തെറ്റിയുള്ള എക്സിക്യൂഷനിലേക്ക് നയിച്ചേക്കാം, സ്വതന്ത്ര സ്ക്രിപ്റ്റുകൾക്കായി ഇത് ഉപയോഗിക്കണം.
- ES മൊഡ്യൂൾ പിന്തുണ: ആധുനിക ബ്രൗസറുകൾ `