exportPathMap
此功能僅限於
next export,目前已廢棄,取而代之的是pages中的getStaticPaths或app中的generateStaticParams。
exportPathMap 允許您指定請求路徑到頁面目的地的對映,用於匯出時使用。exportPathMap 中定義的路徑在使用 next dev 時也將可用。
讓我們從一個示例開始,為具有以下頁面的應用程式建立自定義 exportPathMap
pages/index.jspages/about.jspages/post.js
開啟 next.config.js 並新增以下 exportPathMap 配置
module.exports = {
exportPathMap: async function (
defaultPathMap,
{ dev, dir, outDir, distDir, buildId }
) {
return {
'/': { page: '/' },
'/about': { page: '/about' },
'/p/hello-nextjs': { page: '/post', query: { title: 'hello-nextjs' } },
'/p/learn-nextjs': { page: '/post', query: { title: 'learn-nextjs' } },
'/p/deploy-nextjs': { page: '/post', query: { title: 'deploy-nextjs' } },
}
},
}須知:
exportPathMap中的query欄位不能與自動靜態最佳化頁面或getStaticProps頁面一起使用,因為它們在構建時被渲染為 HTML 檔案,並且在next export期間無法提供額外的查詢資訊。
頁面將隨後匯出為 HTML 檔案,例如,/about 將變為 /about.html。
exportPathMap 是一個 async 函式,它接收 2 個引數:第一個是 defaultPathMap,它是 Next.js 使用的預設對映。第二個引數是一個物件,包含:
dev- 當exportPathMap在開發中被呼叫時為true。當執行next export時為false。在開發中,exportPathMap用於定義路由。dir- 專案目錄的絕對路徑outDir-out/目錄的絕對路徑(可透過-o配置)。當dev為true時,outDir的值為null。distDir-.next/目錄的絕對路徑(可透過distDir配置)buildId- 生成的構建 ID
返回的物件是頁面對映,其中 key 是 pathname,value 是一個接受以下欄位的物件:
page:String- 要渲染的pages目錄內的頁面query:Object- 預渲染時傳遞給getInitialProps的query物件。預設為{}
匯出的
pathname也可以是檔名(例如/readme.md),但是如果它的內容型別不是.html,您可能需要在提供其內容時設定Content-Type頭為text/html。
新增尾部斜槓
可以將 Next.js 配置為將頁面匯出為 index.html 檔案並要求尾部斜槓,/about 變為 /about/index.html,可透過 /about/ 進行路由。這是 Next.js 9 之前的預設行為。
要切換回去並新增尾部斜槓,開啟 next.config.js 並啟用 trailingSlash 配置
module.exports = {
trailingSlash: true,
}自定義輸出目錄
next export 將使用 out 作為預設輸出目錄,您可以使用 -o 引數自定義它,如下所示:
next export -o outdir警告:使用
exportPathMap已廢棄,並被pages中的getStaticPaths覆蓋。我們不建議將它們一起使用。
這有幫助嗎?