ããã³ããšã³ãã®ã³ãŒãå岿è¡ã«é¢ããå æ¬çãªã¬ã€ããã«ãŒãããŒã¹ãšã³ã³ããŒãã³ãããŒã¹ã®ã¢ãããŒãã«çŠç¹ãåœãŠãããã©ãŒãã³ã¹ãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãã
ããã³ããšã³ãã®ã³ãŒãåå²ïŒã«ãŒãããŒã¹ãšã³ã³ããŒãã³ãããŒã¹
çŸä»£ã®Webéçºã®äžçã§ã¯ãé«éã§å¿çæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããšãæãéèŠã§ããã¢ããªã±ãŒã·ã§ã³ãè€éã«ãªãã«ã€ããŠãJavaScriptãã³ãã«ã®ãµã€ãºãèšãäžãããåæèªã¿èŸŒã¿æéãé·ããªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãäœäžããå¯èœæ§ããããŸããã³ãŒãåå²ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒããããå°ãã管çãããããã£ã³ã¯ã«åå²ãããªã³ããã³ãã§èªã¿èŸŒããããã«ããããšã§ããã®åé¡ã«å¯ŸåŠãã匷åãªææ³ã§ãã
ãã®ã¬ã€ãã§ã¯ãããã³ããšã³ãã®ã³ãŒãåå²ã«ããã2ã€ã®äž»èŠãªæŠç¥ãã«ãŒãããŒã¹ãšã³ã³ããŒãã³ãããŒã¹ãæ¢ããŸããããããã®ã¢ãããŒãã®èåŸã«ããååãæãäžãããã®å©ç¹ã𿬠ç¹ã«ã€ããŠè°è«ããå®è£ ã説æããããã®å®è·µçãªäŸãæäŸããŸãã
ã³ãŒãåå²ãšã¯ïŒ
ã³ãŒãåå²ãšã¯ãã¢ããªã·ãã¯ãªJavaScriptãã³ãã«ãããå°ããªãã³ãã«ããã£ã³ã¯ã«åå²ããææ³ã§ããã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãå šäœãæåã«èªã¿èŸŒãã®ã§ã¯ãªããçŸåšã®ãã¥ãŒãã³ã³ããŒãã³ãã«å¿ èŠãªã³ãŒãã®ã¿ãèªã¿èŸŒã¿ãŸããããã«ãããåæããŠã³ããŒããµã€ãºãåæžãããããŒãžã®èªã¿èŸŒã¿æéãççž®ãããäœæããã©ãŒãã³ã¹ãåäžããŸãã
ã³ãŒãåå²ã®äž»ãªå©ç¹ã¯æ¬¡ã®ãšããã§ãïŒ
- åæèªã¿èŸŒã¿æéã®æ¹åïŒ åæãã³ãã«ãµã€ãºãå°ããã»ã©ãèªã¿èŸŒã¿æéãççž®ããããŠãŒã¶ãŒã«è¯ã第äžå°è±¡ãäžããŸãã
- è§£æã»ã³ã³ãã€ã«æéã®ççž®ïŒ ãã©ãŠã¶ãå°ããªãã³ãã«ã®è§£æãšã³ã³ãã€ã«ã«è²»ããæéãæžããããé«éãªã¬ã³ããªã³ã°ãå®çŸããŸãã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäžïŒ èªã¿èŸŒã¿æéã®ççž®ã¯ãããã¹ã ãŒãºã§å¿çæ§ã®é«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«è²¢ç®ããŸãã
- ãªãœãŒã¹å©çšã®æé©åïŒ å¿ èŠãªã³ãŒãã®ã¿ãèªã¿èŸŒãŸããããã垯åå¹ ãšããã€ã¹ãªãœãŒã¹ãç¯çŽã§ããŸãã
ã«ãŒãããŒã¹ã®ã³ãŒãåå²
ã«ãŒãããŒã¹ã®ã³ãŒãåå²ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒããããŒãžã«åºã¥ããŠã¢ããªã±ãŒã·ã§ã³ã³ãŒããåå²ããããšãå«ã¿ãŸããåã«ãŒãã¯ããŠãŒã¶ãŒããã®ã«ãŒãã«ç§»åãããšãã«ã®ã¿èªã¿èŸŒãŸããåå¥ã®ã³ãŒããã£ã³ã¯ã«å¯Ÿå¿ããŸãããã®ã¢ãããŒãã¯ãé »ç¹ã«ã¢ã¯ã»ã¹ãããªãæç¢ºãªã»ã¯ã·ã§ã³ãæ©èœãæã€ã¢ããªã±ãŒã·ã§ã³ã«ç¹ã«å¹æçã§ãã
å®è£
ReactãAngularãVueãªã©ã®çŸä»£ã®JavaScriptãã¬ãŒã ã¯ãŒã¯ã¯ãã«ãŒãããŒã¹ã®ã³ãŒãåå²ãçµã¿èŸŒã¿ã§ãµããŒãããŠãããå€ãã®å Žåãåçã€ã³ããŒããæŽ»çšããŠããŸããæŠå¿µçã«ã¯æ¬¡ã®ããã«æ©èœããŸãïŒ
- ã«ãŒãã®å®çŸ©ïŒ React RouterãAngular RouterãVue Routerãªã©ã®ã«ãŒãã£ã³ã°ã©ã€ãã©ãªã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒããå®çŸ©ããŸãã
- åçã€ã³ããŒãã®äœ¿çšïŒ ã³ã³ããŒãã³ããçŽæ¥ã€ã³ããŒããã代ããã«ãåçã€ã³ããŒãïŒ
import()ïŒã䜿çšããŠã察å¿ããã«ãŒããã¢ã¯ãã£ãã«ãªã£ããšãã«éåæã§èªã¿èŸŒã¿ãŸãã - ãã«ãããŒã«ã®èšå®ïŒ ãã«ãããŒã«ïŒäŸïŒwebpackãParcelãRollupïŒãèšå®ããŠãåçã€ã³ããŒããèªèããåã«ãŒãããšã«åå¥ã®ãã£ã³ã¯ãäœæããããã«ããŸãã
äŸïŒReactãšReact RouterïŒ
/home ãš /about ãšãã2ã€ã®ã«ãŒããæã€ã·ã³ãã«ãªReactã¢ããªã±ãŒã·ã§ã³ãèããŠã¿ãŸãããã
// App.js
import React, { Suspense, lazy } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
const Home = lazy(() => import('./components/Home'));
const About = lazy(() => import('./components/About'));
function App() {
return (
Loading... ãã®äŸã§ã¯ãHomeã³ã³ããŒãã³ããšAboutã³ã³ããŒãã³ãã¯React.lazy()ãšåçã€ã³ããŒãã䜿çšããŠé
å»¶èªã¿èŸŒã¿ãããŸããSuspenseã³ã³ããŒãã³ãã¯ãã³ã³ããŒãã³ãã®èªã¿èŸŒã¿äžã«ãã©ãŒã«ããã¯UIãæäŸããŸããReact Routerãããã²ãŒã·ã§ã³ãåŠçããçŸåšã®ã«ãŒãã«åºã¥ããŠæ£ããã³ã³ããŒãã³ããã¬ã³ããªã³ã°ãããããã«ããŸãã
äŸïŒAngularïŒ
Angularã§ã¯ãã«ãŒãããŒã¹ã®ã³ãŒãåå²ã¯é å»¶èªã¿èŸŒã¿ã¢ãžã¥ãŒã«ã䜿çšããŠå®çŸãããŸãã
// 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) }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
ããã§ã¯ãã«ãŒãèšå®ã®loadChildrenããããã£ããé
å»¶èªã¿èŸŒã¿ãããã¹ãã¢ãžã¥ãŒã«ãžã®ãã¹ãæå®ããŸããAngularã®ã«ãŒã¿ãŒã¯ããŠãŒã¶ãŒã察å¿ããã«ãŒãã«ç§»åãããšãã«ã®ã¿ããã®ã¢ãžã¥ãŒã«ãšé¢é£ã³ã³ããŒãã³ããèªåçã«èªã¿èŸŒã¿ãŸãã
äŸïŒVue.jsïŒ
Vue.jsããã«ãŒã¿ãŒèšå®ã§åçã€ã³ããŒãã䜿çšããŠã«ãŒãããŒã¹ã®ã³ãŒãåå²ããµããŒãããŠããŸãã
// router.js
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
const routes = [
{ path: '/', component: () => import('./components/Home.vue') },
{ path: '/about', component: () => import('./components/About.vue') }
];
const router = new VueRouter({
routes
});
export default router;
ã«ãŒãèšå®ã®componentãªãã·ã§ã³ã¯ãåçã€ã³ããŒãã䜿çšããŠã³ã³ããŒãã³ããéåæã«èªã¿èŸŒã¿ãŸããVue Routerã¯ãã«ãŒããã¢ã¯ã»ã¹ããããšãã«ã³ã³ããŒãã³ãã®èªã¿èŸŒã¿ãšã¬ã³ããªã³ã°ãåŠçããŸãã
ã«ãŒãããŒã¹ã®ã³ãŒãåå²ã®å©ç¹
- å®è£ ãã·ã³ãã«ïŒ ã«ãŒãããŒã¹ã®ã³ãŒãåå²ã¯ãç¹ã«çŸä»£ã®ãã¬ãŒã ã¯ãŒã¯ãæäŸãããµããŒãã«ãããæ¯èŒçç°¡åã«å®è£ ã§ããŸãã
- é¢å¿ã®æç¢ºãªåé¢ïŒ åã«ãŒãã¯ã¢ããªã±ãŒã·ã§ã³ã®æç¢ºãªã»ã¯ã·ã§ã³ã衚ããããã³ãŒããšãã®äŸåé¢ä¿ã«ã€ããŠæšè«ãããããªããŸãã
- å€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã«å¹æçïŒ ã«ãŒãããŒã¹ã®ã³ãŒãåå²ã¯ãå€ãã®ã«ãŒããšæ©èœãæã€å€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã«ç¹ã«æçã§ãã
ã«ãŒãããŒã¹ã®ã³ãŒãåå²ã®æ¬ ç¹
- ç²åºŠãäžååãªå ŽåãããïŒ è€æ°ã®ã«ãŒãã§å ±æãããè€éãªã³ã³ããŒãã³ããæã€ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã«ãŒãããŒã¹ã®ã³ãŒãåå²ã ãã§ã¯äžååãªå ŽåããããŸãã
- åæèªã¿èŸŒã¿æéããŸã é·ãå¯èœæ§ãããïŒ ã«ãŒãã«å€ãã®äŸåé¢ä¿ãå«ãŸããŠããå Žåããã®ã«ãŒãã®åæèªã¿èŸŒã¿æéã¯äŸç¶ãšããŠé·ããªãå¯èœæ§ããããŸãã
ã³ã³ããŒãã³ãããŒã¹ã®ã³ãŒãåå²
ã³ã³ããŒãã³ãããŒã¹ã®ã³ãŒãåå²ã¯ãåã ã®ã³ã³ããŒãã³ãã«åºã¥ããŠã¢ããªã±ãŒã·ã§ã³ã³ãŒããããå°ããªãã£ã³ã¯ã«åå²ããããšã§ãã³ãŒãåå²ãããã«äžæ©é²ããŸãããã®ã¢ãããŒãã«ãããã³ãŒãã®èªã¿èŸŒã¿ããããã现ããå¶åŸ¡ã§ããè€éãªUIãåå©çšå¯èœãªã³ã³ããŒãã³ããæã€ã¢ããªã±ãŒã·ã§ã³ã«ç¹ã«å¹æçã§ãã
å®è£
ã³ã³ããŒãã³ãããŒã¹ã®ã³ãŒãåå²ãåçã€ã³ããŒãã«äŸåããŸãããã«ãŒãå šäœãèªã¿èŸŒã代ããã«ãåã ã®ã³ã³ããŒãã³ãããªã³ããã³ãã§èªã¿èŸŒãŸããŸããããã¯ã次ã®ãããªæè¡ã䜿çšããŠå®çŸã§ããŸãïŒ
- ã³ã³ããŒãã³ãã®é å»¶èªã¿èŸŒã¿ïŒ åããŠã¬ã³ããªã³ã°ããããšããç¹å®ã®ã€ãã³ããçºçãããšããªã©ãå¿ èŠãªãšãã«ã®ã¿ã³ã³ããŒãã³ããèªã¿èŸŒãããã«åçã€ã³ããŒãã䜿çšããŸãã
- æ¡ä»¶ä»ãã¬ã³ããªã³ã°ïŒ ãŠãŒã¶ãŒã®æäœããã®ä»ã®èŠå ã«åºã¥ããŠã³ã³ããŒãã³ããæ¡ä»¶ä»ãã§ã¬ã³ããªã³ã°ããæ¡ä»¶ãæºãããããšãã«ã®ã¿ã³ã³ããŒãã³ãã³ãŒããèªã¿èŸŒã¿ãŸãã
- Intersection Observer APIïŒ Intersection Observer APIã䜿çšããŠãã³ã³ããŒãã³ãããã¥ãŒããŒãã«è¡šç€ºãããããšãæ€åºããããã«å¿ããŠãã®ã³ãŒããèªã¿èŸŒã¿ãŸããããã¯ãåæç¶æ ã§ã¯ç»é¢å€ã«ããã³ã³ããŒãã³ããèªã¿èŸŒãã®ã«ç¹ã«äŸ¿å©ã§ãã
äŸïŒReactïŒ
import React, { Suspense, lazy } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Loading... }>