മെച്ചപ്പെട്ട പ്രകടനത്തിനും ഉപയോക്തൃ അനുഭവത്തിനുമായി റൂട്ട്-ബേസ്ഡ്, കമ്പോണന്റ്-ബേസ്ഡ് ഉൾപ്പെടെയുള്ള നൂതന ജാവാസ്ക്രിപ്റ്റ് കോഡ് സ്പ്ലിറ്റിംഗ് ടെക്നിക്കുകൾ പഠിക്കുക.
ജാവസ്ക്രിപ്റ്റ് കോഡ് സ്പ്ലിറ്റിംഗ് അഡ്വാൻസ്ഡ്: റൂട്ട്-ബേസ്ഡ് വേഴ്സസ് കമ്പോണന്റ്-ബേസ്ഡ്
ആധുനിക വെബ് ഡെവലപ്മെന്റിന്റെ ലോകത്ത്, വേഗതയേറിയതും പ്രതികരണാത്മകവുമായ ഒരു ഉപയോക്തൃ അനുഭവം നൽകുന്നത് വളരെ പ്രധാനമാണ്. ഇത് നേടുന്നതിനുള്ള ഒരു ശക്തമായ സാങ്കേതികതയാണ് കോഡ് സ്പ്ലിറ്റിംഗ്. കോഡ് സ്പ്ലിറ്റിംഗ് നിങ്ങളുടെ ജാവാസ്ക്രിപ്റ്റ് ആപ്ലിക്കേഷനെ ചെറിയ ഭാഗങ്ങളായി വിഭജിക്കാൻ അനുവദിക്കുന്നു, നിലവിലെ പേജിനോ കമ്പോണന്റിനോ ആവശ്യമായ കോഡ് മാത്രം ലോഡുചെയ്യുന്നു. ഇത് പ്രാരംഭ ലോഡ് സമയം കുറയ്ക്കുകയും പ്രകടനം മെച്ചപ്പെടുത്തുകയും മൊത്തത്തിലുള്ള ഉപയോക്തൃ അനുഭവം വർദ്ധിപ്പിക്കുകയും ചെയ്യുന്നു.
ഈ ലേഖനം നൂതന കോഡ് സ്പ്ലിറ്റിംഗ് തന്ത്രങ്ങളിലേക്ക് കടന്നുചെല്ലുന്നു, പ്രത്യേകിച്ചും റൂട്ട്-ബേസ്ഡ്, കമ്പോണന്റ്-ബേസ്ഡ് സമീപനങ്ങളിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നു. റിയാക്റ്റ്, ആംഗുലർ, വ്യൂ.ജെഎസ് പോലുള്ള ജനപ്രിയ ജാവാസ്ക്രിപ്റ്റ് ഫ്രെയിംവർക്കുകളിൽ അവയുടെ പ്രയോജനങ്ങൾ, ദോഷങ്ങൾ, അവ എങ്ങനെ ഫലപ്രദമായി നടപ്പിലാക്കാം എന്നിവ ഞങ്ങൾ പരിശോധിക്കും. ആഗോള പ്രേക്ഷകർക്കുള്ള പരിഗണനകളും ഞങ്ങൾ പരിശോധിക്കും, സ്ഥാനം പരിഗണിക്കാതെ തന്നെ പ്രവേശനക്ഷമതയും മികച്ച പ്രകടനവും ഉറപ്പാക്കും.
എന്തുകൊണ്ട് കോഡ് സ്പ്ലിറ്റിംഗ് പ്രധാനമാണ്
വിശദാംശങ്ങളിലേക്ക് കടക്കുന്നതിന് മുമ്പ്, കോഡ് സ്പ്ലിറ്റിംഗ് എന്തുകൊണ്ട് ഇത്ര നിർണായകമാണെന്ന് നമുക്ക് വീണ്ടും ഉറപ്പിക്കാം:
- കുറഞ്ഞ പ്രാരംഭ ലോഡ് സമയം: തുടക്കത്തിൽ ആവശ്യമായ കോഡ് മാത്രം ലോഡ് ചെയ്യുന്നതിലൂടെ, ഉപയോക്താക്കൾക്ക് നിങ്ങളുടെ ആപ്ലിക്കേഷനുമായി വേഗത്തിൽ സംവദിക്കാൻ കഴിയും. ആമസോൺ അല്ലെങ്കിൽ ആലിബാബ പോലുള്ള ഒരു വലിയ ഇ-കൊമേഴ്സ് സൈറ്റ് സങ്കൽപ്പിക്കുക; എല്ലാ ഉൽപ്പന്ന പേജുകൾക്കും ഫീച്ചറുകൾക്കുമായി എല്ലാ ജാവാസ്ക്രിപ്റ്റും ഒരേസമയം ലോഡ് ചെയ്യുന്നത് അവിശ്വസനീയമാംവിധം വേഗത കുറഞ്ഞതായിരിക്കും. കോഡ് സ്പ്ലിറ്റിംഗ് ഉപയോക്താക്കൾക്ക് വേഗത്തിൽ ഉൽപ്പന്നങ്ങൾ ബ്രൗസ് ചെയ്യാൻ കഴിയുമെന്ന് ഉറപ്പാക്കുന്നു.
- മെച്ചപ്പെട്ട പ്രകടനം: ചെറിയ ബണ്ടിലുകൾ എന്നാൽ പാഴ്സ് ചെയ്യാനും എക്സിക്യൂട്ട് ചെയ്യാനും കുറഞ്ഞ കോഡ് എന്നാണ് അർത്ഥമാക്കുന്നത്, ഇത് മെച്ചപ്പെട്ട റൺടൈം പ്രകടനത്തിനും പ്രതികരണശേഷിക്കും കാരണമാകുന്നു. കുറഞ്ഞ പവർ ഉള്ള ഉപകരണങ്ങളിലോ പരിമിതമായ ബാൻഡ്വിഡ്ത്ത് ഉള്ള നെറ്റ്വർക്കുകളിലോ ഇത് പ്രത്യേകിച്ചും ശ്രദ്ധേയമാണ്.
- മെച്ചപ്പെട്ട ഉപയോക്തൃ അനുഭവം: വേഗതയേറിയതും കൂടുതൽ പ്രതികരണാത്മകവുമായ ഒരു ആപ്ലിക്കേഷൻ മികച്ച ഉപയോക്തൃ അനുഭവത്തിലേക്ക് നയിക്കുന്നു, ഇത് വർധിച്ച ഇടപഴകലിനും സംതൃപ്തിക്കും കാരണമാകുന്നു. ഉപയോക്താവിന്റെ സ്ഥാനം പരിഗണിക്കാതെ ഇത് സാർവത്രികമാണ്.
- കാര്യക്ഷമമായ റിസോഴ്സ് വിനിയോഗം: കോഡ് സ്പ്ലിറ്റിംഗ് ബ്രൗസറുകളെ വ്യക്തിഗത ഭാഗങ്ങൾ കാഷെ ചെയ്യാൻ അനുവദിക്കുന്നു, അതിനാൽ തുടർന്നുള്ള സന്ദർശനങ്ങളോ ആപ്ലിക്കേഷനിലെ നാവിഗേഷനോ കാഷെ ചെയ്ത കോഡ് പ്രയോജനപ്പെടുത്താനും പ്രകടനം കൂടുതൽ മെച്ചപ്പെടുത്താനും കഴിയും. ഒരു ആഗോള വാർത്താ വെബ്സൈറ്റ് പരിഗണിക്കുക; സ്പോർട്സ് അല്ലെങ്കിൽ ബിസിനസ്സ് പോലുള്ള നിർദ്ദിഷ്ട വിഭാഗങ്ങൾക്കുള്ള കോഡ് ഉപയോക്താവ് ആ വിഭാഗങ്ങളിലേക്ക് നാവിഗേറ്റ് ചെയ്യുമ്പോൾ മാത്രം ലോഡ് ചെയ്യാൻ കഴിയും.
റൂട്ട്-ബേസ്ഡ് കോഡ് സ്പ്ലിറ്റിംഗ്
റൂട്ട്-ബേസ്ഡ് കോഡ് സ്പ്ലിറ്റിംഗ് എന്നത് നിങ്ങളുടെ ആപ്ലിക്കേഷന്റെ കോഡിനെ വിവിധ റൂട്ടുകൾ അല്ലെങ്കിൽ പേജുകൾ അടിസ്ഥാനമാക്കി വിഭജിക്കുന്നത് ഉൾപ്പെടുന്നു. ഇത് ഒരു സാധാരണവും താരതമ്യേന ലളിതവുമായ ഒരു സമീപനമാണ്. ഒരു ഉപയോക്താവ് ഒരു നിർദ്ദിഷ്ട റൂട്ടിലേക്ക് നാവിഗേറ്റ് ചെയ്യുമ്പോൾ, ആ റൂട്ടിന് ആവശ്യമായ ജാവാസ്ക്രിപ്റ്റ് മാത്രം ലോഡ് ചെയ്യപ്പെടും.
നടപ്പിലാക്കൽ
റൂട്ട്-ബേസ്ഡ് കോഡ് സ്പ്ലിറ്റിംഗിന്റെ നിർദ്ദിഷ്ട നടപ്പാക്കൽ നിങ്ങൾ ഉപയോഗിക്കുന്ന ഫ്രെയിംവർക്കിനെ ആശ്രയിച്ച് വ്യത്യാസപ്പെടുന്നു.
റിയാക്റ്റ്
റിയാക്റ്റിൽ, റൂട്ടുകൾ ലേസിയായി ലോഡ് ചെയ്യുന്നതിന് നിങ്ങൾക്ക് റിയാക്റ്റ് തന്നെ നൽകുന്ന React.lazy
, Suspense
കമ്പോണന്റുകൾ ഉപയോഗിക്കാം.
import React, { Suspense } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = React.lazy(() => import('./Home'));
const About = React.lazy(() => import('./About'));
const Products = React.lazy(() => import('./Products'));
function App() {
return (
Loading...
ഈ ഉദാഹരണത്തിൽ, Home
, About
, Products
കമ്പോണന്റുകൾ ലേസിയായി ലോഡ് ചെയ്യപ്പെടുന്നു. Suspense
കമ്പോണന്റ്, കമ്പോണന്റുകൾ ലോഡ് ചെയ്യുമ്പോൾ ഒരു ഫാൾബാക്ക് യുഐ (ഈ സാഹചര്യത്തിൽ, "Loading...") നൽകുന്നു.
ഉദാഹരണ സാഹചര്യം: ഒരു ആഗോള സോഷ്യൽ മീഡിയ പ്ലാറ്റ്ഫോം സങ്കൽപ്പിക്കുക. ഒരു ഉപയോക്താവ് ആദ്യമായി ലോഗിൻ ചെയ്യുമ്പോൾ, അവരെ അവരുടെ ന്യൂസ് ഫീഡിലേക്ക് (Home) നയിക്കുന്നു. ഉപയോക്തൃ പ്രൊഫൈലുകൾ (About) അല്ലെങ്കിൽ മാർക്കറ്റ്പ്ലേസ് (Products) പോലുള്ള ഫീച്ചറുകൾക്കുള്ള കോഡ് ഉപയോക്താവ് ആ വിഭാഗങ്ങളിലേക്ക് നാവിഗേറ്റ് ചെയ്യുമ്പോൾ മാത്രം ലോഡ് ചെയ്യപ്പെടുന്നു, ഇത് പ്രാരംഭ ലോഡ് സമയം മെച്ചപ്പെടുത്തുന്നു.
ആംഗുലർ
ആംഗുലർ അതിന്റെ റൂട്ടർ കോൺഫിഗറേഷൻ വഴി മൊഡ്യൂളുകളുടെ ലേസി ലോഡിംഗിനെ പിന്തുണയ്ക്കുന്നു. ആവശ്യാനുസരണം ലോഡ് ചെയ്യേണ്ട ഒരു മൊഡ്യൂൾ വ്യക്തമാക്കാൻ നിങ്ങൾക്ക് loadChildren
പ്രോപ്പർട്ടി ഉപയോഗിക്കാം.
// app-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{ path: 'home', loadChildren: () => import('./home/home.module').then(m => m.HomeModule) },
{ path: 'about', loadChildren: () => import('./about/about.module').then(m => m.AboutModule) },
{ path: 'products', loadChildren: () => import('./products/products.module').then(m => m.ProductsModule) },
{ path: '', redirectTo: '/home', pathMatch: 'full' },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
ഈ ഉദാഹരണത്തിൽ, HomeModule
, AboutModule
, ProductsModule
എന്നിവ ഉപയോക്താവ് അതത് റൂട്ടുകളിലേക്ക് നാവിഗേറ്റ് ചെയ്യുമ്പോൾ ലേസിയായി ലോഡ് ചെയ്യപ്പെടുന്നു.
ഉദാഹരണ സാഹചര്യം: ഒരു ബഹുരാഷ്ട്ര കോർപ്പറേഷന്റെ ആന്തരിക വെബ് പോർട്ടലിനെക്കുറിച്ച് ചിന്തിക്കുക. വ്യത്യസ്ത വകുപ്പുകൾക്ക് (ഉദാ. എച്ച്ആർ, ഫിനാൻസ്, മാർക്കറ്റിംഗ്) അവരുടേതായ മൊഡ്യൂളുകളുണ്ട്. കോഡ് സ്പ്ലിറ്റിംഗ് ജീവനക്കാർ അവർ ഇടപഴകുന്ന വകുപ്പുകളുടെ കോഡ് മാത്രം ഡൗൺലോഡ് ചെയ്യുന്നുവെന്ന് ഉറപ്പാക്കുന്നു, ഇത് ലോഡിംഗ് പ്രക്രിയ കാര്യക്ഷമമാക്കുന്നു.
വ്യൂ.ജെഎസ്
വ്യൂ.ജെഎസ് നിങ്ങളുടെ റൂട്ടർ കോൺഫിഗറേഷനിൽ ഡൈനാമിക് ഇമ്പോർട്ടുകൾ ഉപയോഗിച്ച് കമ്പോണന്റുകളുടെ ലേസി ലോഡിംഗിനെ പിന്തുണയ്ക്കുന്നു.
// router.js
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'Home',
component: () => import(/* webpackChunkName: "home" */ '../views/Home.vue')
},
{
path: '/about',
name: 'About',
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
},
{
path: '/products',
name: 'Products',
component: () => import(/* webpackChunkName: "products" */ '../views/Products.vue')
}
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
ഇവിടെ, Home.vue
, About.vue
, Products.vue
കമ്പോണന്റുകൾ അവയുടെ റൂട്ടുകൾ സന്ദർശിക്കുമ്പോൾ ലേസിയായി ലോഡ് ചെയ്യപ്പെടുന്നു. webpackChunkName
കമന്റ് വെബ്പാക്കിനെ ഓരോ കമ്പോണന്റിനും പ്രത്യേക ഭാഗങ്ങൾ സൃഷ്ടിക്കാൻ സഹായിക്കുന്നു.
ഉദാഹരണ സാഹചര്യം: ഒരു ആഗോള ഓൺലൈൻ വിദ്യാഭ്യാസ പ്ലാറ്റ്ഫോം വിഭാവനം ചെയ്യുക. കോഴ്സ് മൊഡ്യൂളുകൾ (ഉദാ. ഗണിതശാസ്ത്രം, ചരിത്രം, ശാസ്ത്രം) വിദ്യാർത്ഥികൾ അവയിൽ ചേരുമ്പോൾ ആവശ്യാനുസരണം ലോഡ് ചെയ്യാൻ കഴിയും. ഈ സമീപനം പ്രാരംഭ ഡൗൺലോഡ് വലുപ്പം കുറയ്ക്കുകയും ഉപയോക്തൃ അനുഭവം ഒപ്റ്റിമൈസ് ചെയ്യുകയും ചെയ്യുന്നു.
റൂട്ട്-ബേസ്ഡ് കോഡ് സ്പ്ലിറ്റിംഗിന്റെ പ്രയോജനങ്ങൾ
- ലളിതമായ നടപ്പാക്കൽ: സജ്ജീകരിക്കാനും മനസ്സിലാക്കാനും താരതമ്യേന എളുപ്പമാണ്.
- പ്രവർത്തനങ്ങളുടെ വ്യക്തമായ വേർതിരിവ്: പല വെബ് ആപ്ലിക്കേഷനുകളുടെയും ഘടനയുമായി നന്നായി യോജിക്കുന്നു.
- മെച്ചപ്പെട്ട പ്രാരംഭ ലോഡ് സമയം: തുടക്കത്തിൽ ലോഡ് ചെയ്യുന്ന കോഡിന്റെ അളവിൽ കാര്യമായ കുറവ്.
റൂട്ട്-ബേസ്ഡ് കോഡ് സ്പ്ലിറ്റിംഗിന്റെ ദോഷങ്ങൾ
- ഡ്യൂപ്ലിക്കേഷനുള്ള സാധ്യത: പങ്കിട്ട കമ്പോണന്റുകളോ ഡിപൻഡൻസികളോ ഒന്നിലധികം റൂട്ട് ഭാഗങ്ങളിൽ ഉൾപ്പെടുത്തിയേക്കാം, ഇത് കോഡ് ഡ്യൂപ്ലിക്കേഷനിലേക്ക് നയിക്കുന്നു.
- ഗ്രാന്യൂലാരിറ്റി പരിമിതികൾ: ഒന്നിലധികം റൂട്ടുകളിൽ പങ്കിട്ട സങ്കീർണ്ണമായ കമ്പോണന്റുകളുള്ള ആപ്ലിക്കേഷനുകൾക്ക് അനുയോജ്യമല്ലായിരിക്കാം.
കമ്പോണന്റ്-ബേസ്ഡ് കോഡ് സ്പ്ലിറ്റിംഗ്
കമ്പോണന്റ്-ബേസ്ഡ് കോഡ് സ്പ്ലിറ്റിംഗ് എന്നത് നിങ്ങളുടെ ആപ്ലിക്കേഷന്റെ കോഡിനെ മുഴുവൻ റൂട്ടുകൾക്ക് പകരം വ്യക്തിഗത കമ്പോണന്റുകളെ അടിസ്ഥാനമാക്കി വിഭജിക്കുന്നത് ഉൾപ്പെടുന്നു. ഇത് കോഡ് ലോഡിംഗിന് കൂടുതൽ സൂക്ഷ്മമായ ഒരു സമീപനം അനുവദിക്കുന്നു, നിർദ്ദിഷ്ട കമ്പോണന്റുകൾക്ക് ആവശ്യമായ കോഡ് ആവശ്യമുള്ളപ്പോൾ മാത്രം ലോഡ് ചെയ്യുന്നു.
നടപ്പിലാക്കൽ
കമ്പോണന്റ്-ബേസ്ഡ് കോഡ് സ്പ്ലിറ്റിംഗ് റൂട്ട്-ബേസ്ഡ് സ്പ്ലിറ്റിംഗിനേക്കാൾ സങ്കീർണ്ണമാണ്, പക്ഷേ കൂടുതൽ വഴക്കവും ഒപ്റ്റിമൈസേഷൻ സാധ്യതകളും വാഗ്ദാനം ചെയ്യുന്നു. വീണ്ടും, നടപ്പാക്കൽ ഫ്രെയിംവർക്കിനെ ആശ്രയിച്ച് വ്യത്യാസപ്പെടുന്നു.
റിയാക്റ്റ്
റിയാക്റ്റിൽ, ഒരു റൂട്ടിനുള്ളിലോ മറ്റ് കമ്പോണന്റുകളിലോ വ്യക്തിഗത കമ്പോണന്റുകൾ ലേസിയായി ലോഡ് ചെയ്യുന്നതിന് നിങ്ങൾക്ക് React.lazy
, Suspense
എന്നിവ ഉപയോഗിക്കാം.
import React, { Suspense } from 'react';
const MyComponent = React.lazy(() => import('./MyComponent'));
function MyPage() {
return (
Welcome to My Page
Loading Component... }>