[OZの製作所NINJA]appjs構造の変更
構造を変更する理由
ログインレジストリを変更する時です.HeaderコンポーネントでコンソールをuseEffect(의존성 빈배열)
に撮影し、ログインリダイレクトエラーをキャプチャしたことがありますが、ページが変更されるたびに常に撮影されます.
最初は再レンダリングされていたので、撮れると思いますが、よく考えてみるとuseEffect(依存性空配列)`が再レンダリングされるわけではありません.useEffect(의존성 빈배열)
初回マウント時のみ撮影.ページごとにタイトルとツイッターを再インストールするのではなく、最初に_app.js
をロードしたときにタイトルツイッターをマウントし、マウントしません.
_app.js
<>
<Head>
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
/>
<style>{fontFace}</style>
{/* Open Graph */}
<meta property="og:type" content="website" />
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:url" content="https://ozjejakso.com" />
<meta
property="og:image"
content="https://ozjejakso.com/image/ogImg.png"
/>
{/* Twitter Card */}
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@ozjejakso" />
<meta name="twitter:creator" content="@ozjejakso" />
<meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} />
<meta name="twitter:url" content="https://ozjejakso.com" />
<meta
name="twitter:image"
content="https://ozjejakso.com/image/twitCardImg.png"
/>
<title>{title}</title>
<meta name="description" content={description} />
</Head>
<GlobalStyle />
<ThemeProvider theme={Theme}>
<Component {...pageProps} />
</ThemeProvider>
</>
ページが変更されると、ページコンポーネントはpropsになります.コンポーネントから渡されます.console.log
としてマークしようとすると、commuty page
がパラメータとして渡されます.このような環境で渡された構成部品にヘッダーが含まれている場合、ヘッダーは実際に変更されていない場合でも再マウントされます.=>問題があると判断して最適化する
ホットスポットの整理
解決する
方法1:AppLayoutに必要なpropsをサーバ側から返す
辞書の知識
community Component
データはheadress CMSからインポートされます.
データは公開キャッシュできます(ユーザー指定ではありません).
ページは事前にレンダリング(SEO用)する必要があり、getStaticPropsは非常に速いです.CDNにキャッシュできるHTMLファイルとJSONファイルを生成し、パフォーマンスを向上させます.
これにより、構築時に静的ページが生成されます.pageでのみ使用可能で、構築するgetStaticPropsに対して返されるpropsプリレンダリングページに基づいています.したがって、ページを非常に迅速に開くことができます.
getStaticProps
getServerSidePropsを使用する必要があります.ページを事前にレンダリングする必要があるのは、誰かのデータ要求時に抽出する必要がある場合だけです.TTFB(Time to First byte)は、getStaticPropsサーバがすべてのリクエストに対して結果を計算する必要があり、他の構成がなく、結果をCDNでキャッシュできないため、遅い.プリレンダリングデータが不要な場合は、クライアントからデータをインポートすることを考慮します.詳細については、ここをクリックしてください.
getServerSideProps
SEOに適しています.構築時にリクエストしてクライアントに渡すため、より高速です.プリレンダリングが必要なデータがある場合はstatic propsを使用します(構築時に1回しか実行されないことを知っておく必要があります!)構築時に静的HTMLを実行して生成するため、クエリーパラメータやHTTPヘッダなどの要求時にのみ使用可能なデータは受信されません.getStaticProps
と一緒に使用します.📛
getStaticPath
&getStaticPath
はgetStaticProps
と一緒に使用できません.▼▼開発モードでは要請を続けるが、生産モードでは一度だけ!(構築時)
インプリメンテーション
import React from 'react';
import Component from '../components/aboutus';
import AppLayout from '../components/common/AppLayout';
import wrapper from '../store/configureStore';
const AboutUsPage = () => {
return (
<AppLayout focusText="About us">
<Component />
</AppLayout>
);
};
import React from 'react';
import Component from '../components/aboutus';
import AppLayout from '../components/common/AppLayout';
import wrapper from '../store/configureStore';
const AboutUsPage = () => {
return (
<Component />
);
};
export const getStaticProps = () => {
return { props: { layoutProps: { focuseText: 'About us' } } };
};
export default AboutUsPage;
getServerSideProps
では、getStaticProps
に入る必要があるAppLayout
を予め返す.props
は、情報を変更する必要がなく、構築時にクラダンに一度情報を提供する必要があるため使用されています.次はappjsコード.
<AppLayout {...pageProps.layoutProps}>
<Component {...pageProps} />
</AppLayout>
すべてのページのgetStaticProps
から返される値は、getServerSideProps | getStaticProps
の_app.js
に転送されます.(オルブルーのように…??!)
サスペンス pageProps
の_app.js
ページコンポーネントの内部に包む必要があるかどうかは不明です.Layout
,エクスポート時に囲む
Layout
包囲AppLayout
ボイラープレートを調べたところ、ほとんどのLayoutが素子内で使用されていました.ページごとに異なるレイアウトを適用するからかもしれません.しかし、私たちのプロジェクトはすべてのページが同じレイアウトを維持しています.(レイアウトの範囲はタイトルプロペラのみを含む)
n/a.結論
今月から新機能開発を始める.これはベンダーナビゲーションと呼ばれる機能ですが、セキュリティ上、パブリケーションには含まれません.新機能ページが実装された時点で、そのページに適用されるレイアウト(既存のComponent
か他のレイアウトか)はまだ確定していないので、最小ワイヤフレームが現れた後、今日の内容を再適用したいと思います!
Reference
今月から新機能開発を始める.これはベンダーナビゲーションと呼ばれる機能ですが、セキュリティ上、パブリケーションには含まれません.新機能ページが実装された時点で、そのページに適用されるレイアウト(既存の
Component
か他のレイアウトか)はまだ確定していないので、最小ワイヤフレームが現れた後、今日の内容を再適用したいと思います!Reference
Reference
この問題について([OZの製作所NINJA]appjs構造の変更), 我々は、より多くの情報をここで見つけました https://velog.io/@rat8397/오즈의-제작소-TIL-app.js-구조-바꾸기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol