mkdir nextdemo
cd nextdemo
npm init -y
/** 配置package.json*/
"scripts"
:/** 啟動命令*/
npm run dev
或者yarn dev
/** 啟動命令 */
yarn dev
或者npm run dev
next缺省會自動給我們生成好路由,路由生成規則是在專案的根目錄下有pages資料夾,pages下檔案對應的路由就是資料夾+檔名的形式,比如pages下有乙個blog資料夾blog資料夾下有乙個header.js檔案,那麼next缺省會生成/blog/header路由
import link from
"next/link"
;"/">
去首頁<
/a>
<
/link>
import router from
"next/router"
;function
gotoheadpage()
>去首頁<
/button>
/** 傳遞引數的頁面pages/header/page1.js */
import link from
'next/link'
;import router from
"next/router"
;import
from
"next/router"
function
page()
})}return
(<
>
page1<
/div>
>
去首頁<
/a>
<
/link>
/**或者寫成**/
"/?name=首頁"
>
去首頁<
/a>
<
/link>
/** 函式式的寫法 **/
>去首頁<
/button>
<
/>)}
export
default page;
/** 接收引數的頁面pages/index.js **/
import
from
"next/router"
;const
header=(
)=>
<
/h1>
<
/>
}export
default
withrouter
(header)
;
getinitialprops
home.getinitialprops =
async()
=>).
then
((res)
=>);
});}
);return
await promise;
};
上述問題是因為nextjs更新之後造成的,需要採用以下方式進行:
import axios from
"axios"
;function
page
(props)
export
default page;
export
const getstaticprops =
async()
=>).
then
((res)
=>);
});return,}
;};/** next官方把那個棄用了 **/
這是page1<
/div>
"/?name=首頁"
>
去首頁<
/a>
<
/link>
>改變顏色<
/button>
} `
}<
/style>
<
/>);
}export
default pageone;
/** 以moment為例演示常規載入方式 **/
import react,
from
"react"
;import moment from
"moment"
;function
pageone()
return
(<
>
這是page1<
/div>
現在時間:
<
/p>
>更換時間格式<
/button>
<
/>);
}export
default pageone;
/** 以moment為例演示按需載入方式 **/
import react,
from
"react"
;function
pageone()
return
(<
>
這是page1<
/div>
現在時間:
<
/p>
>更換時間格式<
/button>
<
/>);
}export
default pageone;
/** 按需載入自己的元件 **/
import react,
from
"react"
;import moment from
"moment"
;import dynamic from
"next/dynamic"
;//引入next裡的這個方法
const page =
dynamic
(import
("./page2.js"))
;//進行懶載入
function
pageone()
return
(<
>
這是page1<
/div>
>
現在時間:
<
/p>
>更換時間格式<
/button>
<
/>);
}export
default pageone;
/** next提供的head元件 **/
import head from
"next/head"
;const
myheader=(
)=>
export defualt myheader;
//上面已經封裝好了乙個頁面的頭部資訊,可以在需要的頁面直接呼叫這個元件
由於next.js預設不支援css檔案的,它用的是style jsx,也就是說它是不支援直接import進行引入css的
@zeit/next-css它的主要功能就是讓next.js
可以載入css檔案,有了這個包才可以進行配置。
/** 配置@zeit/next-css **/
//在根目錄下建立乙個next.config.js檔案,並輸入一下內容
const withcss =
require
('@zeit/next-css')if
(typeof require !==
'undefined')}
module.exports =
withcss
()
載入antd在我們打包的時候會把antd的所有包都打包進來,這樣會產生效能問題,讓專案載入變得非常的慢,現在的目的是指載入專案中用到的模組,這就需要用到babel-plugin-import。
/** 安裝babel-plugin-import **/
npm install babel-plugin-
import-s
/** 根目錄下穿件.babelrc檔案,寫入如下內容 **/]]
}
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-cpfxnscx-1604122631830)(/users/wyh/desktop/版本.png)] react服務端渲染框架
客戶端渲染 載入乙個空的html頁面,然後請求乙個打包的js檔案,然後再客戶端執行這個js檔案 動態生成html內容然後插入到dom元素上,在源 查詢中也只能看到空的html文件 沒有任何其他內容 服務端渲染 載入出來的就帶有完整的html文件內容 同時帶有資料 流程 瀏覽器傳送請求 伺服器端執行r...
react服務端渲染(同構)
學習react也有一段時間了,使用react後首頁渲染的速度與seo一直不理想。打算研究一下react神奇服務端渲染。react服務端渲染只能使用nodejs做服務端語言實現前後端同構,在後台對react元件進行解析並生成html字串後返回檢視頁面。後台為什麼可以解析react元件?因為node j...
React 服務端渲染的流程簡述
做 react ssr 有一段時間了,在正好在這裡分享一下.使用者第一次請求 重新整理頁面時,由服務端響應.伺服器響應的是乙個已經插入了元件文字的模板 template with pre populated component 由於響應的頁面已經有元件的 html 文字,可以省去瀏覽器端首次渲染的工...