જાવાસ્ક્રિપ્ટ મોડ્યુલ ગ્રાફ ઓપ્ટિમાઇઝેશન: ડિપેન્ડન્સી ગ્રાફનું સરળીકરણ | 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` જેવી લાઇબ્રેરીઓ અથવા બ્રાઉઝર-નેટિવ લેઝી-લોડિંગ એટ્રીબ્યુટ્સનો ઉપયોગ કરવાનું વિચારો.

૬. ટ્રી શેકિંગ અને ડેડ કોડ એલિમિનેશન

ટ્રી શેકિંગ એક એવી તકનીક છે જે બિલ્ડ પ્રક્રિયા દરમિયાન તમારી એપ્લિકેશનમાંથી બિનઉપયોગી કોડને દૂર કરે છે. આ બંડલનું કદ નોંધપાત્ર રીતે ઘટાડી શકે છે, ખાસ કરીને જો તમે એવી લાઇબ્રેરીઓનો ઉપયોગ કરી રહ્યાં હોવ જેમાં ઘણો એવો કોડ શામેલ હોય જેની તમને જરૂર નથી.

ઉદાહરણ:

ધારો કે તમે એક યુટિલિટી લાઇબ્રેરીનો ઉપયોગ કરી રહ્યાં છો જેમાં ૧૦૦ ફંક્શન્સ છે, પરંતુ તમે તમારી એપ્લિકેશનમાં તેમાંથી ફક્ત ૫ નો ઉપયોગ કરો છો. ટ્રી શેકિંગ વિના, આખી લાઇબ્રેરી તમારા બંડલમાં શામેલ થઈ જશે. ટ્રી શેકિંગ સાથે, ફક્ત તે ૫ ફંક્શન્સ જ શામેલ થશે જેનો તમે ઉપયોગ કરો છો.

ગોઠવણી:

ખાતરી કરો કે તમારું બંડલર ટ્રી શેકિંગ કરવા માટે ગોઠવેલું છે. વેબપેકમાં, આ સામાન્ય રીતે પ્રોડક્શન મોડનો ઉપયોગ કરતી વખતે ડિફોલ્ટ રૂપે સક્ષમ હોય છે. રોલઅપમાં, તમારે `@rollup/plugin-commonjs` પ્લગઇનનો ઉપયોગ કરવાની જરૂર પડી શકે છે.

કાર્યક્ષમ સૂચન: તમારા બંડલરને ટ્રી શેકિંગ કરવા માટે ગોઠવો અને ખાતરી કરો કે તમારો કોડ ટ્રી શેકિંગ સાથે સુસંગત હોય તે રીતે લખાયેલ છે (દા.ત., ES મોડ્યુલ્સનો ઉપયોગ કરીને).

૭. ડિપેન્ડન્સી ઘટાડવી

તમારા પ્રોજેક્ટમાં ડિપેન્ડન્સીની સંખ્યા સીધી રીતે મોડ્યુલ ગ્રાફની જટિલતાને અસર કરી શકે છે. દરેક ડિપેન્ડન્સી ગ્રાફમાં ઉમેરો કરે છે, જે સંભવિતપણે બિલ્ડ સમય અને બંડલનું કદ વધારે છે. નિયમિતપણે તમારી ડિપેન્ડન્સીની સમીક્ષા કરો અને જેની હવે જરૂર નથી અથવા જેને નાના વિકલ્પોથી બદલી શકાય છે તેને દૂર કરો.

ઉદાહરણ:

એક સરળ કાર્ય માટે મોટી યુટિલિટી લાઇબ્રેરીનો ઉપયોગ કરવાને બદલે, તમારું પોતાનું ફંક્શન લખવાનું અથવા નાની, વધુ વિશિષ્ટ લાઇબ્રેરીનો ઉપયોગ કરવાનું વિચારો.

કાર્યક્ષમ સૂચન: `npm audit` અથવા `yarn audit` જેવા સાધનોનો ઉપયોગ કરીને નિયમિતપણે તમારી ડિપેન્ડન્સીની સમીક્ષા કરો અને ડિપેન્ડન્સીની સંખ્યા ઘટાડવા અથવા તેને નાના વિકલ્પોથી બદલવાની તકો ઓળખો.

૮. બંડલ સાઈઝ અને પર્ફોર્મન્સનું વિશ્લેષણ

સુધારણા માટેના ક્ષેત્રોને ઓળખવા માટે નિયમિતપણે તમારા બંડલના કદ અને પર્ફોર્મન્સનું વિશ્લેષણ કરો. વેબપેક-બંડલ-એનાલાઈઝર અને લાઇટહાઉસ જેવા સાધનો તમને મોટા મોડ્યુલ્સ, બિનઉપયોગી કોડ અને પર્ફોર્મન્સની સમસ્યાઓ ઓળખવામાં મદદ કરી શકે છે.

ઉદાહરણ (વેબપેક-બંડલ-એનાલાઈઝર):

તમારી વેબપેક ગોઠવણીમાં `webpack-bundle-analyzer` પ્લગઇન ઉમેરો.

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

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

            

જ્યારે તમે તમારું બિલ્ડ ચલાવશો, ત્યારે પ્લગઇન એક ઇન્ટરેક્ટિવ ટ્રીમેપ જનરેટ કરશે જે તમારા બંડલમાં દરેક મોડ્યુલનું કદ બતાવે છે.

કાર્યક્ષમ સૂચન: તમારી બિલ્ડ પ્રક્રિયામાં બંડલ વિશ્લેષણ સાધનોને એકીકૃત કરો અને ઓપ્ટિમાઇઝેશન માટેના ક્ષેત્રોને ઓળખવા માટે નિયમિતપણે પરિણામોની સમીક્ષા કરો.

૯. મોડ્યુલ ફેડરેશન

મોડ્યુલ ફેડરેશન, વેબપેક ૫ માં એક સુવિધા છે, જે તમને રનટાઇમ પર વિવિધ એપ્લિકેશનો વચ્ચે કોડ શેર કરવાની મંજૂરી આપે છે. આ માઇક્રોફ્રન્ટએન્ડ્સ બનાવવા માટે અથવા વિવિધ પ્રોજેક્ટ્સ વચ્ચે સામાન્ય કમ્પોનન્ટ્સ શેર કરવા માટે ઉપયોગી થઈ શકે છે. મોડ્યુલ ફેડરેશન કોડના ડુપ્લિકેશનને ટાળીને બંડલનું કદ ઘટાડવામાં અને પર્ફોર્મન્સ સુધારવામાં મદદ કરી શકે છે.

ઉદાહરણ (મૂળભૂત મોડ્યુલ ફેડરેશન સેટઅપ):

એપ્લિકેશન 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"]
 })
 ]
};

            

કાર્યક્ષમ સૂચન: શેર્ડ કોડવાળી મોટી એપ્લિકેશનો માટે અથવા માઇક્રોફ્રન્ટએન્ડ્સ બનાવવા માટે મોડ્યુલ ફેડરેશનનો ઉપયોગ કરવાનું વિચારો.

વિશિષ્ટ બંડલર વિચારણાઓ

જ્યારે મોડ્યુલ ગ્રાફ ઓપ્ટિમાઇઝેશનની વાત આવે છે ત્યારે વિવિધ બંડલર્સની અલગ-અલગ શક્તિઓ અને નબળાઈઓ હોય છે. અહીં લોકપ્રિય બંડલર્સ માટે કેટલીક વિશિષ્ટ વિચારણાઓ છે:

વેબપેક

રોલઅપ

પાર્સલ

વૈશ્વિક પરિપ્રેક્ષ્ય: વિવિધ સંદર્ભો માટે ઓપ્ટિમાઇઝેશનને અનુકૂળ બનાવવું

મોડ્યુલ ગ્રાફ્સને ઓપ્ટિમાઇઝ કરતી વખતે, તે વૈશ્વિક સંદર્ભને ધ્યાનમાં લેવું મહત્વપૂર્ણ છે જેમાં તમારી એપ્લિકેશનનો ઉપયોગ કરવામાં આવશે. નેટવર્કની સ્થિતિ, ઉપકરણની ક્ષમતાઓ અને વપરાશકર્તાની જનસાंख्यિકી જેવા પરિબળો વિવિધ ઓપ્ટિમાઇઝેશન તકનીકોની અસરકારકતાને પ્રભાવિત કરી શકે છે.

નિષ્કર્ષ

જાવાસ્ક્રિપ્ટ મોડ્યુલ ગ્રાફને ઓપ્ટિમાઇઝ કરવું એ ફ્રન્ટ-એન્ડ ડેવલપમેન્ટનું એક મહત્ત્વનું પાસું છે. ડિપેન્ડન્સીને સરળ બનાવીને, સર્ક્યુલર ડિપેન્ડન્સી દૂર કરીને અને કોડ સ્પ્લિટિંગ લાગુ કરીને, તમે બિલ્ડ પર્ફોર્મન્સમાં નોંધપાત્ર સુધારો કરી શકો છો, બંડલનું કદ ઘટાડી શકો છો અને એપ્લિકેશન લોડિંગ સમયને વધારી શકો છો. સુધારણા માટેના ક્ષેત્રોને ઓળખવા માટે નિયમિતપણે તમારા બંડલના કદ અને પર્ફોર્મન્સનું વિશ્લેષણ કરો અને તમારી ઓપ્ટિમાઇઝેશન વ્યૂહરચનાઓને તે વૈશ્વિક સંદર્ભમાં અનુકૂળ બનાવો જેમાં તમારી એપ્લિકેશનનો ઉપયોગ કરવામાં આવશે. યાદ રાખો કે ઓપ્ટિમાઇઝેશન એક સતત પ્રક્રિયા છે, અને શ્રેષ્ઠ પરિણામો પ્રાપ્ત કરવા માટે સતત દેખરેખ અને સુધારણા આવશ્યક છે.

આ તકનીકોને સતત લાગુ કરીને, વિશ્વભરના ડેવલપર્સ વધુ ઝડપી, વધુ કાર્યક્ષમ અને વધુ વપરાશકર્તા-મૈત્રીપૂર્ણ વેબ એપ્લિકેશન્સ બનાવી શકે છે.