3.40.28 • Published 3 days ago

@tramvai/module-page-render-mode v3.40.28

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
3 days ago

@tramvai/module-page-render-mode

Enable different rendering modes for specific pages:

  • ssr

    SSR mode - provides default tramvai behaviour, render full page on server-side.

  • client

    Client mode - render only fallback for page component, then render full page on browser, after hydration. This mode can significally improve server rendering performance, but not recommended for pages with high SEO impact. By default, Header and Footer will be rendered as usual.

Installation

You need to install @tramvai/module-page-render-mode

yarn add @tramvai/module-page-render-mode

And connect in the project

import { createApp } from '@tramvai/core';
import { PageRenderModeModule } from '@tramvai/module-page-render-mode';

createApp({
  name: 'tincoin',
  modules: [ PageRenderModeModule ],
});

Usage

Rendering mode

By default, this module connection has no changes, because default rendering mode is ssr. You can change this mode for all pages or for specific pages only.

Default mode

For global rendering mode changing, use token TRAMVAI_RENDER_MODE from @tramvai/tokens-render:

import { TRAMVAI_RENDER_MODE } from '@tramvai/tokens-render';

const provider = {
  provide: TRAMVAI_RENDER_MODE,
  useValue: 'client',
};

Mode for specifig pages

For specific pages available two options:

  • setting mode in route config:

    const routes = [
      {
        name: 'main',
        path: '/',
        config: {
          bundle: 'mainDefault',
          pageComponent: 'pageDefault',
          pageRenderMode: 'client',
        },
      },
    ]
  • setting mode in page component static property:

    const PageComponent = () => <div>Page</div>;
    
    PageComponent.renderMode = 'client';
    
    export default PageComponent;

Fallback

Standard behaviour for SPA applications - render some fallback with spinner or page skeleton before application was rendered. You can set default fallback for all pages with client render mode, or only for specific pages.

Default fallback

For setting default fallback, use token PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT:

import { PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT } from '@tramvai/module-page-render-mode';

const DefaultFallback = () => <div>Loading...</div>;

const provider = {
  provide: PAGE_RENDER_DEFAULT_FALLBACK_COMPONENT,
  useValue: DefaultFallback,
};

Fallback for specific pages

For specific pages available few options:

  • add fallback to page component static property, use name pageRenderFallbackDefault:

    const PageComponent = () => <div>Page</div>;
    
    const PageFallback = () => <div>Loading...</div>;
    
    PageComponent.components = {
      'pageRenderFallbackDefault': PageFallback,
    };
    
    export default PageComponent;
  • add default fallback to bundle, use name pageRenderFallbackDefault:

    const DefaultFallback = () => <div>Loading...</div>;
    
    const mainDefaultBundle = createBundle({
      name: 'mainDefault',
      components: {
        'pageRenderFallbackDefault': DefaultFallback,
      },
    });
    
    export default mainDefaultBundle;
  • and you can add fallback in route config, use key pageRenderFallbackComponent with any fallback name you provided in bundle or page component:

    const routes = [
      {
        name: 'main',
        path: '/',
        config: {
          bundle: 'mainDefault',
          pageComponent: 'pageDefault',
          pageRenderFallbackComponent: 'myOwnFallbackComponent',
        },
      },
    ];

How-to

How to prevent Header and Footer Rendering

By default, Header and Footer will be rendered as usual, because this module provide Page component wrapper. If you want to make less work on server, use token PAGE_RENDER_WRAPPER_TYPE with layout or content value, e.g.:

const providers = [
  {
    provide: PAGE_RENDER_WRAPPER_TYPE,
    useValue: 'layout',
  },
];

With client rendering mode, all layout will be rendered in browser.

PAGE_RENDER_WRAPPER_TYPE value will be passed to default layout, where the library @tinkoff/layout-factory is used.

Troubleshooting

Fallback name conflicts

You might have a potential issue with conflict existing components and render fallback component names - pageRenderFallbackComponent and pageRenderFallbackDefault. For avoiding this issues, just change fallback name prefix using token PAGE_RENDER_FALLBACK_COMPONENT_PREFIX:

import { PAGE_RENDER_FALLBACK_COMPONENT_PREFIX } from '@tramvai/module-page-render-mode';

const provider = {
  provide: PAGE_RENDER_FALLBACK_COMPONENT_PREFIX,
  useValue: 'myOwnRenderFallback',
};
4.9.1

3 days ago

4.9.0

9 days ago

4.8.6

14 days ago

3.40.28

14 days ago

4.8.4

15 days ago

4.8.3

15 days ago

3.40.26

15 days ago

3.40.25

15 days ago

4.7.1

18 days ago

3.40.21

18 days ago

4.7.0

19 days ago

3.40.20

19 days ago

4.4.6

23 days ago

3.40.17

23 days ago

4.4.5

24 days ago

4.4.4

24 days ago

3.40.16

24 days ago

4.4.1

26 days ago

4.4.3

26 days ago

3.40.14

26 days ago

3.40.13

26 days ago

4.3.1

26 days ago

3.40.11

26 days ago

4.3.0

29 days ago

3.40.6

1 month ago

3.40.7

1 month ago

4.2.1

1 month ago

4.2.0

1 month ago

4.1.0

1 month ago

4.0.6

1 month ago

3.40.5

1 month ago

4.0.5

1 month ago

4.0.4

1 month ago

3.40.4

1 month ago

3.38.0

2 months ago

3.37.10

2 months ago

3.37.8

2 months ago

3.37.7

2 months ago

3.37.5

2 months ago

3.37.1

3 months ago

3.34.0

3 months ago

3.33.2

3 months ago

3.33.0

3 months ago

3.32.3

3 months ago

3.31.0

4 months ago

3.31.2

4 months ago

3.31.3

4 months ago

3.30.1

4 months ago

3.27.5

4 months ago

3.27.3

4 months ago

3.27.4

4 months ago

3.27.0

4 months ago

3.26.3

4 months ago

3.26.2

4 months ago

3.25.5

4 months ago

3.25.6

4 months ago

3.25.3

4 months ago

3.25.2

4 months ago

3.24.3

5 months ago

3.25.0

5 months ago

3.24.1

5 months ago

3.24.0

5 months ago

3.23.0

5 months ago

3.21.0

5 months ago

3.19.0

5 months ago

3.19.1

5 months ago

3.17.0

5 months ago

3.12.0

5 months ago

3.14.1

5 months ago

3.14.0

5 months ago

2.160.25

6 months ago

3.13.0

5 months ago

3.10.2

6 months ago

3.11.0

6 months ago

3.15.1

5 months ago

3.16.0

5 months ago

2.142.1

8 months ago

2.142.0

8 months ago

2.139.3

8 months ago

2.139.2

8 months ago

3.2.0

7 months ago

2.154.0

7 months ago

2.149.0

8 months ago

2.149.1

8 months ago

2.141.2

8 months ago

2.141.1

8 months ago

2.130.9

9 months ago

2.130.7

9 months ago

2.130.6

9 months ago

2.153.3

7 months ago

2.160.21

6 months ago

2.130.4

9 months ago

2.153.1

8 months ago

2.153.2

7 months ago

2.153.0

8 months ago

2.160.12

6 months ago

2.160.17

6 months ago

2.160.19

6 months ago

2.160.10

6 months ago

2.121.2

10 months ago

3.9.1

6 months ago

3.9.0

6 months ago

2.118.1

10 months ago

3.0.2

7 months ago

2.133.5

9 months ago

2.133.4

9 months ago

3.10.0

6 months ago

2.133.2

9 months ago

2.156.1

7 months ago

2.133.0

9 months ago

3.0.0

7 months ago

2.143.0

8 months ago

2.143.1

8 months ago

2.120.0

10 months ago

2.130.10

9 months ago

2.117.4

10 months ago

2.130.11

9 months ago

2.117.2

10 months ago

2.117.0

10 months ago

3.7.0

6 months ago

2.132.1

9 months ago

2.155.0

7 months ago

2.132.0

9 months ago

2.123.4

10 months ago

2.146.1

8 months ago

2.123.3

10 months ago

2.123.2

10 months ago

2.123.1

10 months ago

2.146.0

8 months ago

2.150.0

8 months ago

2.150.1

8 months ago

2.145.0

8 months ago

2.145.1

8 months ago

2.160.4

7 months ago

2.122.0

10 months ago

2.160.2

7 months ago

2.160.1

7 months ago

2.119.5

10 months ago

2.119.4

10 months ago

2.119.3

10 months ago

2.119.2

10 months ago

2.119.0

10 months ago

3.5.0

6 months ago

2.134.0

9 months ago

2.125.4

9 months ago

2.148.1

8 months ago

2.125.3

9 months ago

2.125.2

9 months ago

2.148.0

8 months ago

2.125.0

9 months ago

2.137.0

9 months ago

3.4.1

6 months ago

2.152.2

8 months ago

2.152.3

8 months ago

2.152.1

8 months ago

2.147.1

8 months ago

2.124.0

9 months ago

3.4.6

6 months ago

3.4.5

6 months ago

2.159.5

7 months ago

2.159.6

7 months ago

2.159.4

7 months ago

2.159.1

7 months ago

2.159.2

7 months ago

3.3.2

6 months ago

2.151.0

8 months ago

2.112.0

11 months ago

2.111.1

11 months ago

2.111.0

11 months ago

2.95.0

1 year ago

2.95.4

1 year ago

2.103.1

12 months ago

2.94.27

1 year ago

2.94.24

1 year ago

2.94.23

1 year ago

2.94.25

1 year ago

2.104.0

12 months ago

2.104.2

12 months ago

2.104.3

12 months ago

2.104.4

12 months ago

2.106.3

12 months ago

2.106.4

12 months ago

2.106.5

12 months ago

2.105.0

12 months ago

2.110.0

11 months ago

2.106.2

12 months ago

2.108.1

11 months ago

2.109.0

11 months ago

2.109.1

11 months ago

2.98.2

12 months ago

2.98.0

1 year ago

2.100.0

12 months ago

2.108.0

12 months ago

2.97.2

1 year ago

2.97.0

1 year ago

2.101.0

12 months ago

2.101.1

12 months ago

2.102.1

12 months ago

2.94.17

1 year ago

2.94.16

1 year ago

2.94.2

1 year ago

2.94.19

1 year ago

2.94.18

1 year ago

2.94.13

1 year ago

2.94.12

1 year ago

2.94.6

1 year ago

2.94.15

1 year ago

2.94.4

1 year ago

2.94.9

1 year ago

2.94.7

1 year ago

2.94.8

1 year ago

2.76.2

1 year ago

2.91.1

1 year ago

2.87.0

1 year ago

2.94.0

1 year ago

2.90.0

1 year ago

2.79.9

1 year ago

2.79.7

1 year ago

2.79.6

1 year ago

2.79.5

1 year ago

2.79.4

1 year ago

2.82.0

1 year ago

2.93.0

1 year ago

2.78.2

1 year ago

2.78.1

1 year ago

2.85.1

1 year ago

2.89.2

1 year ago

2.92.1

1 year ago

2.77.0

1 year ago

2.92.0

1 year ago

2.84.0

1 year ago

2.84.2

1 year ago

2.75.0

1 year ago

2.74.0

1 year ago

2.73.1

1 year ago

2.73.0

1 year ago

2.72.0

1 year ago

2.72.5

1 year ago

2.72.4

1 year ago

2.72.3

1 year ago

2.67.1

1 year ago

2.70.1

1 year ago

2.70.0

1 year ago

2.65.9

1 year ago

2.67.0

1 year ago

2.66.0

1 year ago

2.66.2

1 year ago

2.66.3

1 year ago

2.64.0

1 year ago

2.49.5

1 year ago

2.49.2

1 year ago

2.49.3

1 year ago

2.49.0

1 year ago

2.56.0

1 year ago

2.56.5

1 year ago

2.56.1

1 year ago

2.56.2

1 year ago

2.63.0

1 year ago

2.48.3

1 year ago

2.48.0

1 year ago

2.51.2

1 year ago

2.51.0

1 year ago

2.51.1

1 year ago

2.59.2

1 year ago

2.59.3

1 year ago

2.59.4

1 year ago

2.59.0

1 year ago

2.50.0

1 year ago

2.61.1

1 year ago

2.61.2

1 year ago

2.34.0

2 years ago

2.45.0

1 year ago

2.45.1

1 year ago

2.33.1

2 years ago

2.37.3

2 years ago

2.33.3

2 years ago

2.33.2

2 years ago

2.37.1

2 years ago

2.37.0

2 years ago

2.40.0

1 year ago

2.44.2

1 year ago

2.32.0

2 years ago

2.36.0

2 years ago

2.47.3

1 year ago

2.47.0

1 year ago

2.47.2

1 year ago

2.47.1

1 year ago

2.31.0

2 years ago

2.39.0

2 years ago

2.39.3

1 year ago

2.39.2

1 year ago

2.35.0

2 years ago

2.29.0

2 years ago

2.27.0

2 years ago

2.25.1

2 years ago

2.20.0

2 years ago

2.22.0

2 years ago

2.20.1

2 years ago

2.28.0

2 years ago

2.26.2

2 years ago

2.24.1

2 years ago

2.24.0

2 years ago

2.24.3

2 years ago

2.26.0

2 years ago

2.21.0

2 years ago

2.21.1

2 years ago

2.11.0

2 years ago

2.0.2

2 years ago

2.2.3

2 years ago

2.4.0

2 years ago

2.2.2

2 years ago

2.0.7

2 years ago

2.6.2

2 years ago

1.109.0

2 years ago

2.0.0

2 years ago

2.3.0

2 years ago

2.10.2

2 years ago

2.5.0

2 years ago

2.7.0

2 years ago

2.7.1

2 years ago

1.108.1

2 years ago

1.110.2

2 years ago

1.110.0

2 years ago

1.94.5

2 years ago

1.98.0

2 years ago

1.96.0

2 years ago

1.94.2

2 years ago

1.94.1

2 years ago

1.94.0

2 years ago

1.105.3

2 years ago

1.101.8

2 years ago

1.105.2

2 years ago

1.101.6

2 years ago

1.101.3

2 years ago

1.101.4

2 years ago

1.103.0

2 years ago

1.101.2

2 years ago

1.99.1

2 years ago

1.97.0

2 years ago

1.95.2

2 years ago

1.95.1

2 years ago

1.95.0

2 years ago

1.106.0

2 years ago

1.104.2

2 years ago

1.102.1

2 years ago

1.101.9

2 years ago

1.105.6

2 years ago

1.90.6

2 years ago

1.92.3

2 years ago

1.93.1

2 years ago

1.92.2

2 years ago

1.90.4

2 years ago

1.92.0

2 years ago

1.91.1

2 years ago

1.90.2

2 years ago

1.91.0

2 years ago

1.90.1

2 years ago

1.84.0

2 years ago

1.85.0

2 years ago

1.84.2

2 years ago

1.89.1

2 years ago

1.82.1

2 years ago

1.82.2

2 years ago

1.82.3

2 years ago

1.78.0

2 years ago

1.76.2

2 years ago

1.79.0

2 years ago

1.78.1

2 years ago

1.78.2

2 years ago

1.78.3

2 years ago

1.81.0

2 years ago

1.77.0

2 years ago

1.76.1

2 years ago

1.76.0

2 years ago

1.75.1

2 years ago

1.75.0

2 years ago

1.74.0

2 years ago

1.73.0

2 years ago

1.72.2

2 years ago