[英]Conditionally use next.js app or create react app with the same website domain according to users login
我有一個用 CRA 建立的網站,node.js,我想對大部分頁面使用 ISR。 問題是大約20%的用戶是注冊用戶,他們得到自己的內容,和header不同,這意味着我只能使用SSR,不能使用ISR。
我的想法是使用類似的東西:
我想到的另一個選擇是在請求上使用帶過濾器的代理服務器,檢查是否設置了 session ID 或 cookie ID
是否可以? 哪個選項更好?
我可以使用 CDN 來提供那些 static 個文件嗎?
有沒有更好的主意來解決這個問題?
只需將所有內容保留在 Nextjs 應用程序中即可。
如果您需要 static 生成的頁面,請在該頁面中使用getStaticProps
和getStaticPaths
或什么都不做(以獲得與 CRA 應用程序相同的結果)。
如果您需要一些與服務器相關的邏輯,請在該頁面中使用getServerSideProps
。
更新運行next build
后
頁面test
是一個簡單的組件
const Test = () => <div>test</div>;
export default Test;
在其他頁面( /gpp
, /gpp/[id]
)中定義了getServerSideProps
.....
const GppPage: NextPage = () => (
<>
<Head>
<title>GPP</title>
</Head>
<Box>
....
</Box>
</>
);
export async function getServerSideProps(context) {
return {
props: {
session: "mysession"
}
};
}
export default GppPage;
在圖像中,測試頁顯然是一個 static 頁面(看符號)
如果您在_app.tsx
中定義了一些getInitialProps
或getServerSideProps
,那么您將繼承 SSR 行為
我沒有使用 next.js,而是為我的網站創建了自己的 ISR。 這樣我就可以對注冊用戶使用 SSR,對未注冊用戶使用 ISR。 雖然 create react app 團隊不推薦在 CRA 應用程序中使用 SSR,但我發現在這篇關於 SSR 的文章,這篇關於帶有 React 路由器的 SSR 的文章的幫助下,這非常簡單。 我使用了 React 18 和 React Router 5。
雖然這個解決方案對我有用,但不能保證它以后會起作用,所以我不會推薦它,直到 create react app 團隊推薦它。
該解決方案的優點:
解決方案的缺點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.