Next jsとCRAの違い
4022 ワード
最大の根本的な違いは、CRAがクライアントであり、Next jsがサーバ側であることです.
CRAの欠点は以下の通りです.が点滅しています. Client sideの場合、最初の画面はサーバから取得した情報に再構成されます.これは、最初のインポートとリフレッシュのたびに点滅(点滅)する現象と同じです.この問題を解決するために,開発者はcacheなど多様な方法を用いる必要がある. SEOは難しい SEOエンジンはCRAサイトで空のhtmlドームしか見えません.これはSEOを不可能にする.
もちろん、それを克服するために、中にmetaタグを入れる方法があります.しかし、各ページにこのラベルを設定しなければならないので、開発者はうんざりしています.
Next jsは、サーバ側の管理によってこれらの問題をすべて解決します.いくつかの便利な利点があります.
pre-rendering
事前にサーバにログインし、クライアントに渡します.だから点滅しないのもSEOにいい
file-based routing
CRAの場合は、routerを管理する必要があります.しかし、Next jsは、ファイル構成を使用してルーティングを簡略化する.
news/sometルーティングおよびnews/1、news/2などのパラメータを有するルーティングは、ファイル構造によって解決される.コードが少なく、サービスの構造を理解するのも直感的です.サーバとデータベースの結合
サーバ側の管理であるため、nodejsロジックとデータベースを簡単に使用できます.特にauth管理に便利です. 次はapiフォルダ内のハンドルです.
///api/new-meetup
//POST/api/new-meetup
また、CRAであれば、非同期サーバ部をuseEffect部で処理する.したがって,サーバapi部分とdomを実現する際に用いられる論理は混在する.しかしnextjsは2つの方法でそれぞれサーバ上で処理し,情報を取得してprerenderingを行う.
getStaticPropsメソッド
getServerSidePropsメソッド
GetServersizedPropsは、リクエストが発生するたびに正常に動作します.
req,resなどを用いることができ,authに関連する論理の管理が容易である.
リクエストごとに新しいものが受信されると考えられます.
欠点は、getStaticPropsがキャッシュになり、一度だけ受信すればよいのに対し、getServer Sidepropsは毎回再取得する必要があることです.
上記の内容だけを見ると、従来のCRA方式とは全く違います.userEffectを用いた非同期処理に比べてnextjsはより系統的に見え,副作用を低減できる.
CRAの欠点は以下の通りです.
もちろん、それを克服するために、中にmetaタグを入れる方法があります.しかし、各ページにこのラベルを設定しなければならないので、開発者はうんざりしています.
Next jsは、サーバ側の管理によってこれらの問題をすべて解決します.いくつかの便利な利点があります.
pre-rendering
事前にサーバにログインし、クライアントに渡します.だから点滅しないのもSEOにいい
file-based routing
CRAの場合は、routerを管理する必要があります.しかし、Next jsは、ファイル構成を使用してルーティングを簡略化する.
news/sometルーティングおよびnews/1、news/2などのパラメータを有するルーティングは、ファイル構造によって解決される.コードが少なく、サービスの構造を理解するのも直感的です.
サーバ側の管理であるため、nodejsロジックとデータベースを簡単に使用できます.特にauth管理に便利です.
///api/new-meetup
//POST/api/new-meetup
async function handler(req, res) {
if (req.method === 'POST') {
const data = req.body;
const client = await MongoClient.connect(
'url'
);
const db = client.db();
const meetupsCollection = db.collection('meetups');
const result = await meetupsCollection.insertOne(data);
client.close();
res.status(201).json({ message: 'Meetup inserted!' });
}
}
export default handler;
node jsを使ったことがある人はreqを使うことができます.body、res.statusなどはよく知っているはずです.nextjsはapiを作成し,サービス内部で利用できる.また、CRAであれば、非同期サーバ部をuseEffect部で処理する.したがって,サーバapi部分とdomを実現する際に用いられる論理は混在する.しかしnextjsは2つの方法でそれぞれサーバ上で処理し,情報を取得してprerenderingを行う.
getStaticPropsメソッド
// posts will be populated at build time by getStaticProps()
function Blog({ posts }) {
return (
<ul>
{posts.map((post) => (
<li>{post.title}</li>
))}
</ul>
)
}
// This function gets called at build time on server-side.
// It won't be called on client-side, so you can even do
// direct database queries.
export async function getStaticProps() {
// Call an external API endpoint to get posts.
// You can use any data fetching library
const res = await fetch('https://.../posts')
const posts = await res.json()
// By returning { props: { posts } }, the Blog component
// will receive `posts` as a prop at build time
return {
props: {
posts,
},
revalidate: 10,
}
}
export default Blog
構築時に実行します.サーバ側からデータを受信し、propsとしてページに配置します.useEffectを別途受け取る必要はありません.useEffect Dindencyで受けるストレスを考えると便利ですgetServerSidePropsメソッド
function Page({ data }) {
// Render data...
}
// This gets called on every request
export async function getServerSideProps(context) {
// Fetch data from external API
const req = context.req;
const res = await fetch(`https://.../data`)
const data = await res.json()
// Pass data to the page via props
return { props: { data } }
}
export default Page
GetServersizedPropsは、リクエストが発生するたびに正常に動作します.
req,resなどを用いることができ,authに関連する論理の管理が容易である.
リクエストごとに新しいものが受信されると考えられます.
欠点は、getStaticPropsがキャッシュになり、一度だけ受信すればよいのに対し、getServer Sidepropsは毎回再取得する必要があることです.
上記の内容だけを見ると、従来のCRA方式とは全く違います.userEffectを用いた非同期処理に比べてnextjsはより系統的に見え,副作用を低減できる.
Reference
この問題について(Next jsとCRAの違い), 我々は、より多くの情報をここで見つけました https://velog.io/@greyzero/Next-js와-CRA의-차이점テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol