From 66a456f9a3d118138f4f92271961cd88f37ce949 Mon Sep 17 00:00:00 2001
From: esikkala <esko.ikkala@aalto.fi>
Date: Wed, 16 Jun 2021 12:46:20 +0300
Subject: [PATCH] Test route based code splitting

---
 src/client/containers/SemanticPortal.js | 61 +++++++++++++++----------
 src/client/index.js                     |  6 ++-
 2 files changed, 41 insertions(+), 26 deletions(-)

diff --git a/src/client/containers/SemanticPortal.js b/src/client/containers/SemanticPortal.js
index b1f37a50..c6ff9f44 100644
--- a/src/client/containers/SemanticPortal.js
+++ b/src/client/containers/SemanticPortal.js
@@ -1,4 +1,4 @@
-import React, { useEffect } from 'react'
+import React, { useEffect, lazy } from 'react'
 import PropTypes from 'prop-types'
 import intl from 'react-intl-universal'
 import { has } from 'lodash'
@@ -13,29 +13,6 @@ import moment from 'moment'
 import MomentUtils from '@date-io/moment'
 import 'moment/locale/fi'
 import Grid from '@material-ui/core/Grid'
-
-// ** General components **
-import InfoHeader from '../components/main_layout/InfoHeader'
-import TextPage from '../components/main_layout/TextPage'
-import Message from '../components/main_layout/Message'
-import FacetBar from '../components/facet_bar/FacetBar'
-// ** General components end **
-
-// ** Portal specific components and configs **
-import TopBar from '../components/perspectives/sampo/TopBar'
-import Main from '../components/perspectives/sampo/Main'
-import FacetedSearchPerspective from '../components/perspectives/sampo/FacetedSearchPerspective'
-import FullTextSearch from '../components/perspectives/sampo/FullTextSearch'
-import ClientFSPerspective from '../components/perspectives/sampo/client_fs/ClientFSPerspective'
-import ClientFSMain from '../components/perspectives/sampo/client_fs/ClientFSMain'
-import InstanceHomePage from '../components/perspectives/sampo/InstanceHomePage'
-import Footer from '../components/perspectives/sampo/Footer'
-import KnowledgeGraphMetadataTable from '../components/perspectives/sampo/KnowledgeGraphMetadataTable'
-import { perspectiveConfig } from '../configs/sampo/PerspectiveConfig'
-import { perspectiveConfigOnlyInfoPages } from '../configs/sampo/PerspectiveConfigOnlyInfoPages'
-import { rootUrl, layoutConfig } from '../configs/sampo/GeneralConfig'
-// ** Portal specific components and configs end **
-
 import {
   fetchResultCount,
   fetchPaginatedResults,
@@ -70,6 +47,42 @@ import {
   fetchKnowledgeGraphMetadata
 } from '../actions'
 import { filterResults } from '../selectors'
+import { perspectiveConfig } from '../configs/sampo/PerspectiveConfig'
+import { perspectiveConfigOnlyInfoPages } from '../configs/sampo/PerspectiveConfigOnlyInfoPages'
+import { rootUrl, layoutConfig } from '../configs/sampo/GeneralConfig'
+
+// ** General components **
+// import InfoHeader from '../components/main_layout/InfoHeader'
+// import TextPage from '../components/main_layout/TextPage'
+// import Message from '../components/main_layout/Message'
+// import FacetBar from '../components/facet_bar/FacetBar'
+const InfoHeader = lazy(() => import('../components/main_layout/InfoHeader'))
+const TextPage = lazy(() => import('../components/main_layout/TextPage'))
+const Message = lazy(() => import('../components/main_layout/Message'))
+const FacetBar = lazy(() => import('../components/facet_bar/FacetBar'))
+// ** General components end **
+
+// ** Portal specific components and configs **
+// import TopBar from '../components/perspectives/sampo/TopBar'
+// import FacetedSearchPerspective from '../components/perspectives/sampo/FacetedSearchPerspective'
+// import Main from '../components/perspectives/sampo/Main'
+// import FullTextSearch from '../components/perspectives/sampo/FullTextSearch'
+// import ClientFSPerspective from '../components/perspectives/sampo/client_fs/ClientFSPerspective'
+// import ClientFSMain from '../components/perspectives/sampo/client_fs/ClientFSMain'
+// import InstanceHomePage from '../components/perspectives/sampo/InstanceHomePage'
+// import Footer from '../components/perspectives/sampo/Footer'
+// import KnowledgeGraphMetadataTable from '../components/perspectives/sampo/KnowledgeGraphMetadataTable'
+const portalID = 'sampo'
+const TopBar = lazy(() => import('../components/perspectives/' + portalID + '/TopBar'))
+const Main = lazy(() => import('../components/perspectives/' + portalID + '/Main'))
+const FacetedSearchPerspective = lazy(() => import('../components/perspectives/' + portalID + '/FacetedSearchPerspective'))
+const FullTextSearch = lazy(() => import('../components/perspectives/' + portalID + '/FullTextSearch'))
+const ClientFSPerspective = lazy(() => import('../components/perspectives/' + portalID + '/client_fs/ClientFSPerspective'))
+const ClientFSMain = lazy(() => import('../components/perspectives/' + portalID + '/client_fs/ClientFSMain'))
+const InstanceHomePage = lazy(() => import('../components/perspectives/' + portalID + '/InstanceHomePage'))
+const Footer = lazy(() => import('../components/perspectives/' + portalID + '/Footer'))
+const KnowledgeGraphMetadataTable = lazy(() => import('../components/perspectives/' + portalID + '/KnowledgeGraphMetadataTable'))
+// ** Portal specific components and configs end **
 
 const useStyles = makeStyles(theme => ({
   root: {
diff --git a/src/client/index.js b/src/client/index.js
index fc312ff8..8de2fb66 100644
--- a/src/client/index.js
+++ b/src/client/index.js
@@ -1,4 +1,4 @@
-import React from 'react'
+import React, { Suspense } from 'react'
 import { render } from 'react-dom'
 import { Provider } from 'react-redux'
 import ReduxToastr from 'react-redux-toastr'
@@ -44,7 +44,9 @@ render(
   <Provider store={store}>
     <div id='app'>
       <Router history={history}>
-        <App />
+        <Suspense fallback={<div>Loading...</div>}>
+          <App />
+        </Suspense>
       </Router>
       <ReduxToastr
         timeOut={0}
-- 
GitLab