摘要:是一個基于實現(xiàn)的服務(wù)端渲染框架,地址為。本文先從簡單地基礎(chǔ)概念開始,一步一步帶大家認識。本篇教程到此結(jié)束,后面會跟大家介紹的服務(wù)端渲染及以及部署相關(guān)的一下概念及示例代碼。
Next.js是一個基于React實現(xiàn)的服務(wù)端渲染框架,github地址為next.js。
使用Next.js實現(xiàn)服務(wù)端渲染是一件非常簡單的事,在這里,你完全可以不用自己去寫webpack等配置,Next.js全都幫你做了。本文先從簡單地基礎(chǔ)概念開始,一步一步帶大家認識Next.js。
先初始化我們的項目目錄結(jié)構(gòu):
mkdir learn-next cd learn-next npm init -y npm install react react-dom next -S mkdir pages
可以看到,我們最后一步的時候創(chuàng)建了一個命名為pages的文件夾,這是因為Next.js采用的是文件系統(tǒng)作為API,每一個放在pages中的文件都會映射為一個路由,路由名稱與文件名相同。
打開package.json文件,配置我們的項目啟動命令
{ "scripts": { "dev": "next" } }
然后在命令行中啟動我們的項目:
npm run dev
打開http://localhost:3000,可以看到Next.js給我們報了404,這是因為我們還沒寫任何內(nèi)容。
基礎(chǔ)路由在pages目錄下新建index.js,輸入以下內(nèi)容:
export default () => (Hello Next.js
)
這時候,我們可以看到Next.js已經(jīng)把我們的內(nèi)容渲染出來了,如下所示:
頁面間導(dǎo)航頁面間跳轉(zhuǎn)是很正常的事,因此,Next.js為我們準(zhǔn)備了Link這個高階組件,用于頁面導(dǎo)航。我們先新建一個about.js文件
export default () => (This is about page
)
然后將我們的index.js更改為:
import Link from "next/link" export default () => (共用組件About Page)Hello Next.js
我們的組件不可能都是孤立的,組件間復(fù)用是很常見的事,例如頁面的頭部,底部,導(dǎo)航條等等,因此我們可以在根目錄下新建一個components目錄用于存放共用的組件。
新建一個Header.js文件
import Link from "next/link" const linkStyle = { marginRight: 15 } export default () => ( )
新建一個Layout.js文件
import Header from "./Header" const layoutStyle = { margin: 20, padding: 20, border: "1px solid #DDD" } export default (props) => (){props.children}
更改我們的pages/index.js文件
import Layout from "../components/Layout.js" export default () => () Hello Next.js
打開http://localhost:3000,可以看到我們的共用組件生效了:
動態(tài)頁面假設(shè)有一個post頁面,該頁面接收一個id,并將該id展示出來,那么怎么做呢。
在pages下新建post.js文件,內(nèi)容如下:
import Layout from "../components/Layout.js" export default (props) => () {props.url.query.id}
This is the post page.
如上所示:我們從url.query.id中拿到頁面?zhèn)鬟^來的id
那么怎么把id從index頁面?zhèn)鬟^去呢,回到pages/index.js頁面,代碼更改如下:
import Layout from "../components/Layout.js" import Link from "next/link" const PostLink = (props) => (
在上面的代碼中,我們在Link標(biāo)簽中使用了as屬性,它的作用是更改路由的名稱,當(dāng)我們點擊"learn-nextjs"時,我們可以看到,地址欄的地址顯示為http://localhost:3000/p/learn-nextjs
服務(wù)端路由上面的代碼其實是有問題的,這只適合在瀏覽器端進行導(dǎo)航,但是當(dāng)我們在http://localhost:3000/p/learn-nextjs下刷新頁面時,會看到服務(wù)器給我們報了404,因此我們需要同步適配一下服務(wù)端的路由。
我們選用express來作為服務(wù)端框架,當(dāng)然你也可以使用koa。
npm install express -S
在根目錄下新建server.js文件,代碼如下:
const express = require("express") const next = require("next") const dev = process.env.NODE_ENV !== "production" const app = next({ dev }) const handle = app.getRequestHandler() app.prepare() .then(() => { const server = express() server.get("/p/:id", (req, res) => { const actualPage = "/post" const queryParams = { id: req.params.id } app.render(req, res, actualPage, queryParams) }) server.get("*", (req, res) => { return handle(req, res) }) server.listen(3000, (err) => { if (err) throw err console.log("Ready on http://localhost:3000") }) }) .catch((ex) => { console.error(ex.stack) process.exit(1) })
更改package.json中我們的項目啟動方式:
{ "scripts": { "dev": "node server.js" } }
這時候刷新頁面,可以看到我們的頁面也被正確渲染了。
本篇教程到此結(jié)束,后面會跟大家介紹Next.js的服務(wù)端渲染(ssr)及css in js以及部署相關(guān)的一下概念及示例代碼。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/84252.html
摘要:樣式在中寫樣式,一般可以歸為類,一類是基于文件的傳統(tǒng)方式包括,等,另一類則是。我們回到我們的代碼中,更改,代碼如下在標(biāo)簽中,我們寫我們的,必須包含在中,否則會報錯。至此,的基礎(chǔ)概念已經(jīng)介紹完了,更高級的用法,可以參考官方的例子。 本篇教程基于上一篇的基礎(chǔ),主要講解服務(wù)端渲染,樣式以及部署相關(guān)的一些知識,若你沒有看過上一篇的內(nèi)容,或者你看過又忘了,建議重新去看一遍。 順便說一句,Next...
摘要:前端每周清單第期微服務(wù)實踐,與,組件技巧,攻防作者王下邀月熊編輯徐川前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點分為新聞熱點開發(fā)教程工程實踐深度閱讀開源項目巔峰人生等欄目。 前端每周清單第 26 期:Node.js 微服務(wù)實踐,Vue.js 與 GraphQL,Angular 組件技巧,HeadlessChrome 攻防 作者:王下邀月熊 編輯:徐川...
摘要:前端每周清單第期支付寶前端構(gòu)建工具發(fā)展用加快網(wǎng)頁響應(yīng)速度餓了么升級實踐前端前端每周清單前端每周清單專注前端領(lǐng)域內(nèi)容,分為新聞熱點開發(fā)教程工程實踐深度閱讀開源項目巔峰人生等欄目。 前端每周清單第 12 期:支付寶前端構(gòu)建工具發(fā)展、LinkedIn用Brotli加快網(wǎng)頁響應(yīng)速度、餓了么PWA 升級實踐 為InfoQ中文站特供稿件,首發(fā)地址為這里;如需轉(zhuǎn)載,請與InfoQ中文站聯(lián)系。從屬于筆...
摘要:新聞熱點國內(nèi)國外,前端最新動態(tài)就開源許可證風(fēng)波進行回復(fù)數(shù)周前,基金會決定禁止旗下項目使用,因為其在標(biāo)準(zhǔn)的許可證之外添加了專利聲明此舉引發(fā)了社區(qū)的廣泛討論,希望能夠更新其開源許可證。 showImg(https://segmentfault.com/img/remote/1460000010777089); 前端每周清單第 27 期:React Patent License 回復(fù),Sho...
摘要:前端每周清單半年盤點之與篇前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點分為新聞熱點開發(fā)教程工程實踐深度閱讀開源項目巔峰人生等欄目。與求同存異近日,宣布將的構(gòu)建工具由遷移到,引發(fā)了很多開發(fā)者的討論。 前端每周清單半年盤點之 React 與 ReactNative 篇 前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點;分為...
閱讀 2482·2021-11-25 09:43
閱讀 1309·2021-11-24 09:39
閱讀 825·2021-11-23 09:51
閱讀 2450·2021-09-07 10:18
閱讀 1971·2021-09-01 11:39
閱讀 2837·2019-08-30 15:52
閱讀 2648·2019-08-30 14:21
閱讀 2916·2019-08-29 16:57