TIL 35. NextJSって何?
6368 ワード
🔥 next.jsはサーバ側レンダリング
設定
mkdir 파일 이름
cd 파일 이름
yarn init -y (npm도 되지만 yarn이 더 빠르다!)
yarn add react react-dom next
package.jsonファイルへ“script”: {
“dev”: “next”,
“build”: “next build”,
“start”: “next start”
}
次のスクリプトを追加糸devをクリックすると、サーバーが開きます!
Next.jsの利点🌸
-サーバー側レンダリングの利点
-検索エンジンの最適化
-初期ロードパフォーマンスの向上
- SEO ( Search Engine Optimization)
サーバ側リストア(SSR)のフレームワークを簡単に実装
👀 簡単な追加説明
従来,ほとんどがSSRによって操作されていたため,ページには複数のマルチページフォームが用いられていた.
しかし、スマートフォンの登場に伴い、従来のアプリケーションではモバイル機器の最適化が行われていなかったため、この問題を解決するためにreact、Angular、Vueなど複数のライブラリ、フレームワークが出現し、クライアントサーバのレンダリングが可能なSPA(Single Page Application)が出現した.
ページコンポーネントでは、ファイルがページになります。
ルーティングコンポーネントを必要としない組み込みルーティング!🥺
ファイル名を
[key].js
に変更し、新しいタグで名前を付けます.それがルーティングです.クラス関数を書き込むには、reactからインポートします。 こう書く
リンク構成部品
import Link from ‘next/link’;
<Link>
を使用する場合、react-routerはto
を使用しますが、href
という点と、素子内部に文字列以外の素子または素子が必要です<Link><a>blahblah</a></Link>
をこのように使うべきです.cssをあげるときは
inline-style
かclassName
にすればいいです.コンポーネントを追加する場合は、コンポーネントにonclick propsを受信して実行する必要があります.
リンクにはhrefとasというpropsがあり、hrefはページのナビゲーションロールとして機能し、asはhrefのURLをより直感的にするロールです.
(直接アクセスも簡単)
Next.jsではhistory=>router!!
historyで使われている
goback
は、ここではback
と書くだけでいいです.history.「next/router」からpushではなくルータをインポートします.
Router.push(
/brand=${props}
);このように使う
👍🏻 server.jsは「カスタムサーバ」を使用してルーティングマスクを行います。
リンクコンポーネントがasを使用する場合、実際のページがない場所で要求されます.したがって、asのURLにhrefが表示されるように、Custom Serverを直接作成し、リフレッシュまたは後退時にレンダリングできるように個別に処理する必要があります.
本来はpagesディレクトリに入れるべきですが、ここではcomponentsディレクトリに置く必要はなく、相対パスでロードすることもできます.
✏️ Query Parameter
クエリー・パラメータは
/brand?sectorsType=brand
です.propsの{url.query.keyword}を読めばいいです.
直接住所に電話すると
keyword
を確認できます.pathname parameterは/brand/:idを使用します.ここではカスタムサーバAPIを使用する必要があります.
構造上/brand/13にこのような要求があればpage/brand/13.jsファイルをレンダリングしようとする
✅ getInitialProps
getInitialPropsメソッドは、サーバ側にあるかクライアント側にあるかを決定します.
通常のReactレンダリング方法は、まず()をレンダリングし、次にComponentDidMount()関数でデータをインポートしてから、もう一度!これはレンダリングの方法です.👀
逆に、NextはgetInitialProps()という関数を使用するので、まずデータをインポートし、次にレンダリングします.
これにより、SSRは1回のレンダリングで初期ロード速度を速めることができますが、ページ移動時にデータをロードする必要があるため、CSRより遅いです.
コード剥離
一般的に、SPAは初期レンダリング時にすべての構成部品を取り外してページを表示しますが、スケールが大きくなり容量が大きくなるにつれてロード速度が遅くなります.
Nextはこれらの問題を改善し,必要に応じてファイルをロードし,コード剥離を用いて複数のファイルを分離した.
static async getInitialProps ({req}) {
return req ? { from : ‘server’ } : { from : ‘client } }
return (
<Layout>
{ this.props.from } 에서 실행이 되었어요
</Layout>
)
メソッドで返される値は、構成部品のpropsに渡されます。
パラメータがサーバ側のreqである場合、clientはundefinedを表示します。
static async getInitialProps ({req}) {
const response = await axios.get('https://jsonplaceholder.typicode.com/users');
return {
users: response.data
}
}
プリフェッチはリンク構成部品で行い、リンク構成部品をレンダリングするときプリフェッチ値が
<Link prefetch href=‘…’>
形式で渡されると、データがロードされ、ルーティングが開始される.Reference
この問題について(TIL 35. NextJSって何?), 我々は、より多くの情報をここで見つけました https://velog.io/@rhdwnals1/TIL-35.-NextJSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol