서버 측 렌더링으로 대용량 콘텐츠 및 중복에 대응

Artru

ReactJS 단일 벗겨진 페이지 응용 프로그램

  1. 서버 측 렌더링 (SSR) 없음, 문제 재현 요구 사항 : SSR없이 aspnet 코어 React 프로젝트에
    ReactJS + WebPack + React-Router
    Yeoman 생성기를 사용하고 Startup.cs에서 HotReloading을 비활성화했습니다 (또는 프로덕션 모드를 실행할 수 있음).

    <Route component={ Layout }>
       <Route path='/' components={{ body: Home }} />
       <Route path='/counter' components={{ body: Counter }} />      
    </Route>;
    /* project includes Home.tsx, Counter.tsx and other components/subpages */
    

    Home.tsx의 일부 :

    class Home extends React.Component<any, void> {
      public render() {
        return <div>
            <h1>Hello, world!</h1>
            <p>Welcome to your new single-page application, built with:</p>
    

    결과

    • main-client.js홈 및 카운터 구성 요소 (하위 페이지)에 대한 모든 콘텐츠 / 레이아웃과 다른 하위 페이지에 대한 모든 콘텐츠 및 레이아웃이 포함됩니다.
      , 하나의 하위 범주 만 요청 했더라도 응용 프로그램전체 레이아웃을 로드하고 있음을 의미합니다 . 예 : Counter
      웹 사이트를 중지 한 후에도 webpacked를 통해로드되는 하위 페이지간에 전환 할 수 있습니다 main-client.js.

      여기에 이미지 설명 입력

      질문 1 : 현재 페이지 (애플리케이션 셸 + 현재 하위 범주)에 대해 요청한 것만로드 할 수 있습니까?
      (그런 다음 다른 섹션의 경우 캐시 된 앱 셸로 인해 하나의 새 하위 범주 만 제공됨)
      (아마도 다른 라우터 및 특수 (웹) 팩 설정 사용)

  2. 서버 측 렌더링 (SSR), 문제 재현 요구 사항 : Redux 및 SSR 과 함께 aspnet 코어 React 프로젝트에
    ReactJS + WebPack + React-Router + SSR
    Yeoman 생성기를 사용하고 Startup.cs에서 HotReloading을 비활성화했습니다 (또는 프로덕션 모드를 실행할 수 있음).

    결과

    • 이제는 전체 웹 사이트 레이아웃을 두 번로드하므로 더 나빠집니다. 처음에는 완전히 렌더링 된 html에서 다음으로 main-client.js

    이것은 React의 경우 기본적으로 정적 콘텐츠 (컨트롤 내부의 정적 텍스트)와 동적 콘텐츠 (일부 조건부 HTML 출력)간에 차이가 없으므로 모든 정보를 거대한 JS 파일에 넣습니다.

    질문 2 : 정적 부분에 대한 React에 대한 힌트를 줄 수 있으므로 서버에서 한 번만 렌더링하고 동적 계산 / 구성 요소 만 남기고 클라이언트 자바 스크립트에서 제거하면 되나요?

================================================ ======

그것은 솔기 하지 이러한 문제는 내부에 많은 샘플 그리고 그들은이 자습서에 언급되지 않기 때문에 많은 사람들이 그것을 알고 있습니다.

요즘 일반적인 접근 방식 중 하나는 처음에는 빈 애플리케이션 셸 레이아웃을로드 한 다음 클라이언트 자바 스크립트를 통해 콘텐츠에 대한 JSON 데이터를로드하는 것입니다. 그러나 이러한 문제는 해결되지 않습니다. 예를 들어 첫 번째 문제의 경우 여전히 구멍 앱용 셸을로드하고 있으며 풍부한 레이아웃의 경우 빈 DOM 요소가 많은 정말 거대한 JS 파일이 될 수 있습니다.

<h1 id="react-hint-for-element-9997">/* here will be header*/</h1>
    <h2 id="react-hint-for-element-9998">/* here will be subheader*/</h2>
        /*and so on and on */
Joews

질문 1

Webpack 코드 분할을 사용하여 앱을 여러 번들로 나눌 수 있습니다.

require.ensure필요할 때 (예 : 사용자가 새 경로에 도달 할 때) 번들을 지연로드하도록 제공 합니다.

예 (Webpack 문서에서) :

//static imports
import _ from 'lodash'

// dynamic imports
require.ensure([], function(require) {
  let contacts = require('./contacts')
})

질문 2

React는 (아직) 정적 콘텐츠와 동적 콘텐츠를 구분하지 않습니다. Inferno 는 렌더링 성능을 향상시키기 위해 이러한 구분을하는 React와 유사한 라이브러리입니다. 사용 사례에 대해 React보다 더 적합 할 수 있습니다.

예 (Inferno 문서에서) :

import Inferno from 'inferno';
import InfernoDOM from 'inferno-dom';

const message = "Hello world";

InfernoDOM.render(
  <MyComponent message={ message } />,
  document.getElementById("app")
)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

최대 너비 및 측면 여백 %로 콘텐츠 중앙 정렬

분류에서Dev

Next.js에서 콘텐츠가 많은 서버 측 렌더링 동적 경로?

분류에서Dev

Powershell : 대용량 파일 (서버 목록)에서 콘텐츠 가져 오기

분류에서Dev

대용량 파일에서 콘텐츠를 찾는 방법

분류에서Dev

IONIC 2/3에서 이온 함량의 콘텐츠를 화면 중앙으로 렌더링

분류에서Dev

클라이언트 측 라우팅으로 서버 측 렌더링에 반응

분류에서Dev

Windows Phone 범용 응용 프로그램에서 콘텐츠 대화 상자 버튼의 스타일 변경

분류에서Dev

Windows Phone 범용 응용 프로그램에서 콘텐츠 대화 상자 버튼의 스타일 변경

분류에서Dev

Ajax 응답에서로드 된 데이터로 mathjax 콘텐츠 렌더링

분류에서Dev

Next.js를 사용하여 서버 측 렌더링으로 쿼리 반응

분류에서Dev

Wagtail / Django 블록이 사용자 지정 / 중첩 StructBlock 템플릿에서 콘텐츠를 제대로 렌더링하지 않습니다.

분류에서Dev

Listview : 헤더 및 콘텐츠에 대한 다른 패딩

분류에서Dev

Android 알림 : 제목 및 콘텐츠에 대한 서체 추가

분류에서Dev

Android 알림 : 제목 및 콘텐츠에 대한 서체 추가

분류에서Dev

SCNCylinder diffuse.contents-반경 및 높이 섹션 모두에 대해 다른 콘텐츠 렌더링

분류에서Dev

Python에서 Selenium을 사용하여 JavaScript로 렌더링 된 콘텐츠 WebScraping

분류에서Dev

CSS에서 콘텐츠 편집 가능한 div에 대한 닫기 및 크기 조정 버튼 스타일링 및 jQuery로 rsize 기능 추가

분류에서Dev

Laravel 경로의 URI에서 콘텐츠 ID 및 Slug 사용

분류에서Dev

div 콘텐츠 렌더링에 대한 콘텐츠 편집 가능 속성의 잘못된 효과

분류에서Dev

Shiny에서 루프 내부의 상자에 대한 HTML 콘텐츠를 어떻게 렌더링합니까?

분류에서Dev

wordpress 단축 코드는 대시 보드에서 콘텐츠를 렌더링합니다.

분류에서Dev

부모 창 WPF의 렌더링 페이지 콘텐츠에 대한 메서드 호출

분류에서Dev

삼각 측량 큐브가 lwjgl에서 제대로 렌더링되지 않는 이유는 무엇입니까?

분류에서Dev

온라인 Adobe Flash 응용 프로그램의 텍스트가 서버 측에서 렌더링됩니까?

분류에서Dev

PHP 콘텐츠로 jquery에서 대화 상자 열기

분류에서Dev

대화 팝업에서 편집기로 TinyMCE 콘텐츠 전달

분류에서Dev

Ractive.js에서 HTML 태그로 콘텐츠 렌더링

분류에서Dev

Nodejs Express는 페이지를 렌더링하는 대신 서버 콘텐츠를 표시합니다.

분류에서Dev

동적으로 생성 된 버튼에 대한 클릭시 콘텐츠 제거

Related 관련 기사

  1. 1

    최대 너비 및 측면 여백 %로 콘텐츠 중앙 정렬

  2. 2

    Next.js에서 콘텐츠가 많은 서버 측 렌더링 동적 경로?

  3. 3

    Powershell : 대용량 파일 (서버 목록)에서 콘텐츠 가져 오기

  4. 4

    대용량 파일에서 콘텐츠를 찾는 방법

  5. 5

    IONIC 2/3에서 이온 함량의 콘텐츠를 화면 중앙으로 렌더링

  6. 6

    클라이언트 측 라우팅으로 서버 측 렌더링에 반응

  7. 7

    Windows Phone 범용 응용 프로그램에서 콘텐츠 대화 상자 버튼의 스타일 변경

  8. 8

    Windows Phone 범용 응용 프로그램에서 콘텐츠 대화 상자 버튼의 스타일 변경

  9. 9

    Ajax 응답에서로드 된 데이터로 mathjax 콘텐츠 렌더링

  10. 10

    Next.js를 사용하여 서버 측 렌더링으로 쿼리 반응

  11. 11

    Wagtail / Django 블록이 사용자 지정 / 중첩 StructBlock 템플릿에서 콘텐츠를 제대로 렌더링하지 않습니다.

  12. 12

    Listview : 헤더 및 콘텐츠에 대한 다른 패딩

  13. 13

    Android 알림 : 제목 및 콘텐츠에 대한 서체 추가

  14. 14

    Android 알림 : 제목 및 콘텐츠에 대한 서체 추가

  15. 15

    SCNCylinder diffuse.contents-반경 및 높이 섹션 모두에 대해 다른 콘텐츠 렌더링

  16. 16

    Python에서 Selenium을 사용하여 JavaScript로 렌더링 된 콘텐츠 WebScraping

  17. 17

    CSS에서 콘텐츠 편집 가능한 div에 대한 닫기 및 크기 조정 버튼 스타일링 및 jQuery로 rsize 기능 추가

  18. 18

    Laravel 경로의 URI에서 콘텐츠 ID 및 Slug 사용

  19. 19

    div 콘텐츠 렌더링에 대한 콘텐츠 편집 가능 속성의 잘못된 효과

  20. 20

    Shiny에서 루프 내부의 상자에 대한 HTML 콘텐츠를 어떻게 렌더링합니까?

  21. 21

    wordpress 단축 코드는 대시 보드에서 콘텐츠를 렌더링합니다.

  22. 22

    부모 창 WPF의 렌더링 페이지 콘텐츠에 대한 메서드 호출

  23. 23

    삼각 측량 큐브가 lwjgl에서 제대로 렌더링되지 않는 이유는 무엇입니까?

  24. 24

    온라인 Adobe Flash 응용 프로그램의 텍스트가 서버 측에서 렌더링됩니까?

  25. 25

    PHP 콘텐츠로 jquery에서 대화 상자 열기

  26. 26

    대화 팝업에서 편집기로 TinyMCE 콘텐츠 전달

  27. 27

    Ractive.js에서 HTML 태그로 콘텐츠 렌더링

  28. 28

    Nodejs Express는 페이지를 렌더링하는 대신 서버 콘텐츠를 표시합니다.

  29. 29

    동적으로 생성 된 버튼에 대한 클릭시 콘텐츠 제거

뜨겁다태그

보관