다음.제가 직접 만든 JS+ 프리렌더링입니다.

7473 단어 nextjsjavascriptnode

미리 렌더링
  • 기본적으로 다음 단계를 수행합니다.js는 미리 렌더링 과정을 사용하여 매번 렌더링을 진행합니다 page.이것이 바로 다음 단계다.js 프레임워크는 클라이언트가 아닌 서버에서 HTML을 생성합니다.js 도서관.
  • HTML이 생성될 때마다 이 페이지는 Javascript 코드와 연결됩니다.모든 요청이 HTML을 불러오고 이 자바스크립트 코드가 실행되며 완전히 상호작용합니다. 이 과정을 hydration 라고 명명합니다.

  • 정적 생성
  • HTML은 build time-npm run build에서 생성되고 요청마다 다시 사용됩니다.즉, HTML이 이미 서버에 존재하므로 프레임에서 HTML을 생성할 필요가 없습니다.

  • 서버측 렌더링
  • HTML은 브라우저 또는 최종 사용자의 요청에 따라 생성됩니다.이것은 서버에 HTML이 존재하지 않는다는 것을 의미하며, 프레임워크는 브라우저의 모든 요청에 HTML을 생성합니다.

  • 우리는 정적 생성과 서버 쪽 렌더링 사이에서 무엇을 선택할 수 있습니까?
  • 페이지의 방법을 선택하기 전에.우리는 우리가 원하는 페이지의 목적 키를 정의해야 한다.I recommend that is the data dependence . 페이지의 내용이 시간에 따라 바뀌지 않으면우리는 정적 생성을 사용해야 한다. 반대로 서버측에서 보여야 한다. 페이지의 내용 데이터는 시간의 추이에 따라 변화한다.
  • NEXT는 정적 생성을 권장합니다.JS, 페이지는 서버에서 만들어졌기 때문에 일회성으로 만들어지고 CDN-Content Delivery 네트워크는 요청에 내용을 보냅니다.즉, 최종 사용자 또는 브라우저가 컨텐트를 더 빨리 보고 각 요청에 대해 HTML을 생성합니다.
  • 만약 페이지가 요청 시간 전에 미리 보일 수 없다면 큰일이다.많은 이유로 데이터는 댓글의 평론, 제품의 수량에 따라...이 경우 서버 쪽 렌더링은 좋은 선택입니다.

  • 데이터와 데이터의 정적 생성.
  • 기본적으로 이 페이지는 외부 데이터가 필요하지 않습니다.다음.JS는 생산 모드에서 build 시간에 HTML을 생성할 수 있다.
  • 그러나 페이지가 파일 시스템, 외부 API, 데이터베이스 조회 등 다른 데이터에 의존하는 경우 다음 단계입니다.JS는 외부 데이터를 사용하여 HTML을 생성할 수 있습니다.
  • 사용getStaticProps 정적 생성 데이터.async 및 명명getStaticProps을 사용하여 이 함수를 내보낸 페이지의 경우
  • getStaticProps는 구축할 때 실행됩니다.
  • 함수는 페이지의 props 속성에 데이터를 추출합니다.
  • export default function ExamplePage({ props }) {
        return ( ... );
    } 
    
    export async function getStaticProps() {
       const data = await fetch('...');
       return {
           props: data
       }
    }
    
  • getStaticPropsServer-side 하에서만 실행됩니다.이것은 이 함수가 client-side 에서 영원히 실행되지 않을 것이라는 것을 의미한다.브라우저에서 코드를 묶지 마십시오.client-side의 조회 데이터베이스에 영원히 접근하지 마십시오.그것은 server-side에서만 운행된다.
  • 그러나 이런 방법은 결점이 있다.페이지 컨텐트는 최종 사용자 또는 브라우저의 URL 동적 매개 변수에서 요청할 때 변경되지 않으므로 클라이언트의 요청에 적용할 수 없습니다.이것이 바로 우리가 getStaticPaths 함수를 사용하여 URL에서 동적 인자를 해석해야 하는 이유이다.
  • export default function ExamplePage({ props }) {
        return ( ... );
    }
    
    export async function getStaticPaths() {
       return {
        paths: [
          { params: { id: '1' } },
          { params: { id: '2' } }
        ],
        fallback: true
      };
    }
    
    export async function getStaticProps(context) {
       const data = await fetch('...');
       return {
           props: { data }
       }
    }
    

    서버측 렌더링
    export async function getServerSideProps(context) {
      return {
        props: {
          // props for your component
        }
      }
    }
    
  • getServerSideProps는 모든 요청에서 호출되기 때문에 함수의 context 매개 변수는 항상 요청한 데이터에서 나온다. 이것은 모든 요청이fetch 데이터를 호출하고 time by time의 데이터가 변화한다는 것을 의미한다.
  • 이것은 내용의 동적 데이터에 있어서 매우 좋지만 TTFB-가 첫 번째 바이트에 도착하는 시간은 비교적 낮다getStaticProps.서버가 모든 요청의 결과를 계산하기 때문이다.

  • 클라이언트 렌더링.
  • 페이지의 용도는 다음과 같습니다client-side rendering.
  • 페이지의 일부분은 정적이며 다른 외부 데이터가 필요하지 않습니다.
  • 페이지를 불러올 때 가져온 데이터는 자바스크립트 클라이언트가 실행하고 페이지의 구성 요소나 부분에 표시합니다.
  • 또는 dashboard 페이지에 사용됩니다.

  • SWR
  • 는 NextJS가 작성한 private입니다.그들은 우리가 반드시 이런 방법을 써서 React hook의 다른 데이터를 얻어야 한다고 건의했다.
  • 좋은 웹페이지 즐겨찾기