一、同構襯著概述
同構襯著(Isomorphic Rendering)是指在前端跟伺服器端同時襯著同一套代碼,生成雷同的HTML構造。Next.js是一個基於React的框架,它支撐伺服器端襯著(SSR)跟靜態站點生成(SSG),這使得同構襯著成為其核心技巧之一。
二、Next.js同構襯著的核心技巧
2.1 伺服器端襯著(SSR)
伺服器端襯著(SSR)是指伺服器在發送HTML頁面給客戶端之前,就曾經將React組件襯著成了HTML。如許做的好處是:
- 查抄引擎優化(SEO):查抄引擎可能更好地抓取跟索引SSR生成的頁面內容。
- 首屏載入速度:用戶可能看到一個完全的HTML頁面,而無需等待JavaScript載入跟履行。
Next.js利用React的生命周期方法跟getServerSideProps
、getStaticProps
等鉤子來實現SSR。
2.2 靜態站點生成(SSG)
靜態站點生成(SSG)是指Next.js在構建時過後生成靜態HTML頁面,並存儲在伺服器上。如許做的好處是:
- 機能:靜態站點不須要伺服器端襯著,載入速度更快。
- 本錢:因為不須要伺服器端襯著,可能增加伺服器的打算資本耗費。
Next.js利用getStaticProps
鉤子來實現SSG。
2.3 代碼分割(Code Splitting)
代碼分割是指將JavaScript代碼拆分紅多個小塊,按需載入。Next.js利用React.lazy跟Suspense來實現代碼分割。
三、Next.js同構襯實在戰技能
3.1 利用getServerSideProps停止SSR
export async function getServerSideProps(context) {
// 獲取數據
const data = await fetchData();
// 將數據轉達給頁面
return {
props: {
data,
},
};
}
3.2 利用getStaticProps停止SSG
export async function getStaticProps() {
// 獲取數據
const data = await fetchData();
// 將數據轉達給頁面
return {
props: {
data,
},
};
}
3.3 代碼分割
import dynamic from 'next/dynamic';
const MyComponent = dynamic(() => import('./MyComponent'));
function MyPage() {
return <MyComponent />;
}
3.4 優化SEO
- 利用React helmet來管理元數據。
- 確保頁面標題跟描述是SEO友愛的。
四、總結
Next.js的同構襯著技巧使得開辟者可能同時享用到SSR跟SSG的長處。經由過程控制Next.js的核心技巧跟實戰技能,開辟者可能構建高機能、可優化的Web利用。