學到這裡,相信大家已經完全了解react的寫法與原理,如果有上過我的課的,第一堂的時候,我都會跟大家說react實際是怎麼渲染的(透過codeSandBox講的),是被編譯成DOM節點後渲染到瀏覽器裡的,所以我們之前用codeSandBox創建的檔案,實際上是純React專案,而不是中心的Next.js專案喔!!
Next.js專案比較常出現在大公司以及規模比較大的專案,是屬於比較專業的一種形式,但如果今天你只是想自己簡單練習,或者做一些小專案,那其實用Next.js是大材小用,而且專案設定檔案太多了,容易混亂。
這時候就要來使用純React專案 也就是CRA專案了!!
with TypeScript
npx create-react-app 專案名稱 --template typescript
專案架構應該會像這樣
my-app/
public/
index.html
src/
App.js
index.js
package.json
執行的指令是
npm start
到這裡或許有人已經混亂了,一下react一下next.js的,簡單來說
index.html這叫:
CSR(Client-Side Rendering,瀏覽器端渲染)
/products/1這就是:
SSR = React 在伺服器跑一次,在瀏覽器再跑一次
| 項目 | CRA(純 React) | Next.js |
|---|---|---|
| 開發指令 | npm start |
npm run dev |
| build 指令 | npm run build |
npm run build |
| build 後的內容 | /build(可放 WordPress) |
/.next(需要 Node server,不能放 WordPress) |
| 性質 | 純前端 | 前端 + 後端 SSR |
<aside> ⚛️
SSR 可以直接在 server 取資料,而不是讓前端 fetch。有看過我的inlineFetch這篇進階react寫法的人,應該知道fetch的寫法如何。
</aside>
1. SEO 強
因為 Google 看到的是「完整 HTML」,而不是空的 div。
2. 初次載入超快
不用等 JS 下載、執行後才看到畫面,伺服器已經渲染了。
3. 可以在後端取得資料(不用 expose API)
例如:
const products = await db.getProducts();
my-app/
public/
index.html ← React 自動掛載處
src/
App.js ← 入口 UI
index.js ← 程式入口,負責 render <App />
pages/ ← 網頁放這兒
Home.js
About.js
Login.js
components/ ← components與pages同層
NavBar.js
App.css
index.css
package.json