ജാവാസ്ക്രിപ്റ്റ് മൊഡ്യൂൾ ഗ്രാഫ് ഒപ്റ്റിമൈസേഷൻ: ഡിപെൻഡൻസി ഗ്രാഫ് ലഘൂകരണം | MLOG | MLOG
            document.addEventListener("DOMContentLoaded", function() {
 var lazyloadImages = document.querySelectorAll("img.lazy");

 function lazyload () {
 lazyloadImages.forEach(function(img) {
 if (img.offsetTop < (window.innerHeight + window.pageYOffset)) {
 img.src = img.dataset.src;
 img.classList.remove("lazy");
 }
 });
 if(lazyloadImages.length === 0) {
 document.removeEventListener("scroll", lazyload);
 window.removeEventListener("resize", lazyload);
 window.removeEventListener("orientationChange", lazyload);
 }
 }

 document.addEventListener("scroll", lazyload);
 window.addEventListener("resize", lazyload);
 window.addEventListener("orientationChange", lazyload);
 });
            

പ്രവർത്തനപരമായ ഉൾക്കാഴ്ച: സ്ക്രീനിൽ ഉടനടി ദൃശ്യമാകാത്ത ചിത്രങ്ങൾ, വീഡിയോകൾ, മറ്റ് റിസോഴ്സുകൾ എന്നിവയ്ക്കായി ലേസി ലോഡിംഗ് നടപ്പിലാക്കുക. `lozad.js` പോലുള്ള ലൈബ്രറികളോ ബ്രൗസർ-നേറ്റീവ് ലേസി-ലോഡിംഗ് ആട്രിബ്യൂട്ടുകളോ ഉപയോഗിക്കുന്നത് പരിഗണിക്കുക.

6. ട്രീ ഷേക്കിംഗും ഡെഡ് കോഡ് എലിമിനേഷനും

ബിൽഡ് പ്രക്രിയയിൽ നിങ്ങളുടെ ആപ്ലിക്കേഷനിൽ നിന്ന് ഉപയോഗിക്കാത്ത കോഡ് നീക്കം ചെയ്യുന്ന ഒരു സാങ്കേതികതയാണ് ട്രീ ഷേക്കിംഗ്. ഇത് ബണ്ടിൽ വലുപ്പം ഗണ്യമായി കുറയ്ക്കാൻ സഹായിക്കും, പ്രത്യേകിച്ചും നിങ്ങൾക്ക് ആവശ്യമില്ലാത്ത ധാരാളം കോഡുകൾ ഉൾക്കൊള്ളുന്ന ലൈബ്രറികൾ നിങ്ങൾ ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ.

ഉദാഹരണം:

നിങ്ങൾ 100 ഫംഗ്ഷനുകളുള്ള ഒരു യൂട്ടിലിറ്റി ലൈബ്രറി ഉപയോഗിക്കുന്നുവെന്ന് കരുതുക, എന്നാൽ അവയിൽ 5 എണ്ണം മാത്രമേ നിങ്ങളുടെ ആപ്ലിക്കേഷനിൽ ഉപയോഗിക്കുന്നുള്ളൂ. ട്രീ ഷേക്കിംഗ് ഇല്ലാതെ, മുഴുവൻ ലൈബ്രറിയും നിങ്ങളുടെ ബണ്ടിലിൽ ഉൾപ്പെടുത്തും. ട്രീ ഷേക്കിംഗ് ഉപയോഗിച്ച്, നിങ്ങൾ ഉപയോഗിക്കുന്ന 5 ഫംഗ്ഷനുകൾ മാത്രമേ ഉൾപ്പെടുത്തുകയുള്ളൂ.

കോൺഫിഗറേഷൻ:

ട്രീ ഷേക്കിംഗ് നടത്താൻ നിങ്ങളുടെ ബണ്ട്ലർ കോൺഫിഗർ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക. വെബ്പാക്കിൽ, പ്രൊഡക്ഷൻ മോഡ് ഉപയോഗിക്കുമ്പോൾ ഇത് സാധാരണയായി ഡിഫോൾട്ടായി പ്രവർത്തനക്ഷമമാകും. റോൾഅപ്പിൽ, നിങ്ങൾ `@rollup/plugin-commonjs` പ്ലഗിൻ ഉപയോഗിക്കേണ്ടി വന്നേക്കാം.

പ്രവർത്തനപരമായ ഉൾക്കാഴ്ച: ട്രീ ഷേക്കിംഗ് നടത്താൻ നിങ്ങളുടെ ബണ്ട്ലർ കോൺഫിഗർ ചെയ്യുക, നിങ്ങളുടെ കോഡ് ട്രീ ഷേക്കിംഗുമായി പൊരുത്തപ്പെടുന്ന രീതിയിൽ എഴുതിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക (ഉദാഹരണത്തിന്, ES മൊഡ്യൂളുകൾ ഉപയോഗിച്ച്).

7. ഡിപെൻഡൻസികൾ കുറയ്ക്കുക

നിങ്ങളുടെ പ്രോജക്റ്റിലെ ഡിപെൻഡൻസികളുടെ എണ്ണം മൊഡ്യൂൾ ഗ്രാഫിന്റെ സങ്കീർണ്ണതയെ നേരിട്ട് ബാധിക്കും. ഓരോ ഡിപെൻഡൻസിയും ഗ്രാഫിലേക്ക് ചേർക്കുന്നു, ഇത് ബിൽഡ് സമയവും ബണ്ടിൽ വലുപ്പവും വർദ്ധിപ്പിക്കാൻ സാധ്യതയുണ്ട്. നിങ്ങളുടെ ഡിപെൻഡൻസികൾ പതിവായി അവലോകനം ചെയ്യുകയും ഇനി ആവശ്യമില്ലാത്തവയോ അല്ലെങ്കിൽ ചെറിയ ബദലുകൾ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കാവുന്നവയോ നീക്കം ചെയ്യുക.

ഉദാഹരണം:

ഒരു ലളിതമായ ജോലിക്കായി ഒരു വലിയ യൂട്ടിലിറ്റി ലൈബ്രറി ഉപയോഗിക്കുന്നതിനുപകരം, നിങ്ങളുടെ സ്വന്തം ഫംഗ്ഷൻ എഴുതുന്നതോ അല്ലെങ്കിൽ ചെറുതും കൂടുതൽ പ്രത്യേകതയുള്ളതുമായ ഒരു ലൈബ്രറി ഉപയോഗിക്കുന്നതോ പരിഗണിക്കുക.

പ്രവർത്തനപരമായ ഉൾക്കാഴ്ച: `npm audit` അല്ലെങ്കിൽ `yarn audit` പോലുള്ള ടൂളുകൾ ഉപയോഗിച്ച് നിങ്ങളുടെ ഡിപെൻഡൻസികൾ പതിവായി അവലോകനം ചെയ്യുക, ഡിപെൻഡൻസികളുടെ എണ്ണം കുറയ്ക്കുന്നതിനോ അല്ലെങ്കിൽ ചെറിയ ബദലുകൾ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നതിനോ ഉള്ള അവസരങ്ങൾ കണ്ടെത്തുക.

8. ബണ്ടിൽ വലുപ്പവും പ്രകടനവും വിശകലനം ചെയ്യുക

മെച്ചപ്പെടുത്താനുള്ള മേഖലകൾ കണ്ടെത്തുന്നതിന് നിങ്ങളുടെ ബണ്ടിൽ വലുപ്പവും പ്രകടനവും പതിവായി വിശകലനം ചെയ്യുക. വെബ്പാക്ക്-ബണ്ടിൽ-അനലൈസർ, ലൈറ്റ്ഹൗസ് പോലുള്ള ടൂളുകൾ വലിയ മൊഡ്യൂളുകൾ, ഉപയോഗിക്കാത്ത കോഡ്, പ്രകടനത്തിലെ തടസ്സങ്ങൾ എന്നിവ കണ്ടെത്താൻ നിങ്ങളെ സഹായിക്കും.

ഉദാഹരണം (വെബ്പാക്ക്-ബണ്ടിൽ-അനലൈസർ):

നിങ്ങളുടെ വെബ്പാക്ക് കോൺഫിഗറേഷനിലേക്ക് `webpack-bundle-analyzer` പ്ലഗിൻ ചേർക്കുക.

            const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

module.exports = {
 // ... other webpack configuration
 plugins: [
 new BundleAnalyzerPlugin()
 ]
};

            

നിങ്ങൾ ബിൽഡ് പ്രവർത്തിപ്പിക്കുമ്പോൾ, പ്ലഗിൻ ഒരു ഇന്ററാക്ടീവ് ട്രീമാപ്പ് ഉണ്ടാക്കും, അത് നിങ്ങളുടെ ബണ്ടിലിലെ ഓരോ മൊഡ്യൂളിന്റെയും വലുപ്പം കാണിക്കുന്നു.

പ്രവർത്തനപരമായ ഉൾക്കാഴ്ച: നിങ്ങളുടെ ബിൽഡ് പ്രക്രിയയിൽ ബണ്ടിൽ അനാലിസിസ് ടൂളുകൾ സംയോജിപ്പിക്കുക, ഒപ്റ്റിമൈസേഷനുള്ള മേഖലകൾ കണ്ടെത്താൻ ഫലങ്ങൾ പതിവായി അവലോകനം ചെയ്യുക.

9. മൊഡ്യൂൾ ഫെഡറേഷൻ

വെബ്പാക്ക് 5-ലെ ഒരു ഫീച്ചറായ മൊഡ്യൂൾ ഫെഡറേഷൻ, റൺടൈമിൽ വ്യത്യസ്ത ആപ്ലിക്കേഷനുകൾക്കിടയിൽ കോഡ് പങ്കിടാൻ നിങ്ങളെ അനുവദിക്കുന്നു. മൈക്രോഫ്രണ്ട്എൻഡുകൾ നിർമ്മിക്കുന്നതിനോ അല്ലെങ്കിൽ വ്യത്യസ്ത പ്രോജക്റ്റുകൾക്കിടയിൽ പൊതുവായ കമ്പോണന്റുകൾ പങ്കിടുന്നതിനോ ഇത് ഉപയോഗപ്രദമാകും. മൊഡ്യൂൾ ഫെഡറേഷൻ കോഡിന്റെ തനിപ്പകർപ്പ് ഒഴിവാക്കി ബണ്ടിൽ വലുപ്പം കുറയ്ക്കാനും പ്രകടനം മെച്ചപ്പെടുത്താനും സഹായിക്കും.

ഉദാഹരണം (അടിസ്ഥാന മൊഡ്യൂൾ ഫെഡറേഷൻ സെറ്റപ്പ്):

ആപ്ലിക്കേഷൻ A (ഹോസ്റ്റ്):

            // webpack.config.js
const ModuleFederationPlugin = require("webpack/lib/container/ModuleFederationPlugin");

module.exports = {
 // ... other webpack configuration
 plugins: [
 new ModuleFederationPlugin({
 name: "appA",
 remotes: {
 appB: "appB@http://localhost:3001/remoteEntry.js",
 },
 shared: ["react", "react-dom"]
 })
 ]
};

            

ആപ്ലിക്കേഷൻ B (റിമോട്ട്):

            // webpack.config.js
const ModuleFederationPlugin = require("webpack/lib/container/ModuleFederationPlugin");

module.exports = {
 // ... other webpack configuration
 plugins: [
 new ModuleFederationPlugin({
 name: "appB",
 exposes: {
 './MyComponent': './src/MyComponent',
 },
 shared: ["react", "react-dom"]
 })
 ]
};

            

പ്രവർത്തനപരമായ ഉൾക്കാഴ്ച: പങ്കിട്ട കോഡുള്ള വലിയ ആപ്ലിക്കേഷനുകൾക്കോ മൈക്രോഫ്രണ്ട്എൻഡുകൾ നിർമ്മിക്കുന്നതിനോ മൊഡ്യൂൾ ഫെഡറേഷൻ ഉപയോഗിക്കുന്നത് പരിഗണിക്കുക.

പ്രത്യേക ബണ്ട്ലർ പരിഗണനകൾ

മൊഡ്യൂൾ ഗ്രാഫ് ഒപ്റ്റിമൈസേഷന്റെ കാര്യത്തിൽ വ്യത്യസ്ത ബണ്ട്ലറുകൾക്ക് വ്യത്യസ്ത ശക്തികളും ബലഹീനതകളും ഉണ്ട്. ജനപ്രിയ ബണ്ട്ലറുകൾക്കുള്ള ചില പ്രത്യേക പരിഗണനകൾ താഴെ നൽകുന്നു:

വെബ്പാക്ക്

റോൾഅപ്പ്

പാർസൽ

ആഗോള വീക്ഷണം: വ്യത്യസ്ത സാഹചര്യങ്ങൾക്കായി ഒപ്റ്റിമൈസേഷനുകൾ ക്രമീകരിക്കുന്നു

മൊഡ്യൂൾ ഗ്രാഫുകൾ ഒപ്റ്റിമൈസ് ചെയ്യുമ്പോൾ, നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഉപയോഗിക്കപ്പെടുന്ന ആഗോള സാഹചര്യം പരിഗണിക്കേണ്ടത് പ്രധാനമാണ്. നെറ്റ്‌വർക്ക് അവസ്ഥകൾ, ഉപകരണത്തിന്റെ കഴിവുകൾ, ഉപയോക്തൃ ജനസംഖ്യാശാസ്ത്രം തുടങ്ങിയ ഘടകങ്ങൾ വ്യത്യസ്ത ഒപ്റ്റിമൈസേഷൻ ടെക്നിക്കുകളുടെ ഫലപ്രാപ്തിയെ സ്വാധീനിക്കും.

ഉപസംഹാരം

ജാവാസ്ക്രിപ്റ്റ് മൊഡ്യൂൾ ഗ്രാഫ് ഒപ്റ്റിമൈസ് ചെയ്യുന്നത് ഫ്രണ്ട്-എൻഡ് ഡെവലപ്‌മെന്റിന്റെ ഒരു നിർണായക വശമാണ്. ഡിപെൻഡൻസികൾ ലഘൂകരിക്കുന്നതിലൂടെയും സർക്കുലർ ഡിപെൻഡൻസികൾ നീക്കം ചെയ്യുന്നതിലൂടെയും കോഡ് സ്പ്ലിറ്റിംഗ് നടപ്പിലാക്കുന്നതിലൂടെയും നിങ്ങൾക്ക് ബിൽഡ് പ്രകടനം ഗണ്യമായി മെച്ചപ്പെടുത്താനും ബണ്ടിൽ വലുപ്പം കുറയ്ക്കാനും ആപ്ലിക്കേഷൻ ലോഡിംഗ് സമയം വർദ്ധിപ്പിക്കാനും കഴിയും. മെച്ചപ്പെടുത്താനുള്ള മേഖലകൾ കണ്ടെത്താൻ നിങ്ങളുടെ ബണ്ടിൽ വലുപ്പവും പ്രകടനവും പതിവായി വിശകലനം ചെയ്യുകയും നിങ്ങളുടെ ആപ്ലിക്കേഷൻ ഉപയോഗിക്കുന്ന ആഗോള സാഹചര്യത്തിനനുസരിച്ച് ഒപ്റ്റിമൈസേഷൻ തന്ത്രങ്ങൾ ക്രമീകരിക്കുകയും ചെയ്യുക. ഒപ്റ്റിമൈസേഷൻ ഒരു തുടർ പ്രക്രിയയാണെന്നും മികച്ച ഫലങ്ങൾ നേടുന്നതിന് തുടർച്ചയായ നിരീക്ഷണവും പരിഷ്കരണവും അനിവാര്യമാണെന്നും ഓർക്കുക.

ഈ ടെക്നിക്കുകൾ സ്ഥിരമായി പ്രയോഗിക്കുന്നതിലൂടെ, ലോകമെമ്പാടുമുള്ള ഡെവലപ്പർമാർക്ക് വേഗതയേറിയതും കൂടുതൽ കാര്യക്ഷമവും കൂടുതൽ ഉപയോക്തൃ-സൗഹൃദവുമായ വെബ് ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കാൻ കഴിയും.