Next.js 14 近期發(fā)布,其中一個(gè)重大的功能點(diǎn)是 Server Actions 成為穩(wěn)定版,因其超前和熟悉的開(kāi)發(fā)方式,在社交網(wǎng)絡(luò)上引起了一陣討論,應(yīng)該是下面這張圖的內(nèi)容了。
圖片
有人說(shuō)這是又回到 php 的時(shí)代了嗎?
古話說(shuō)的好 “人有多大膽,地有多大產(chǎn)”。只要你敢想象,一切就皆有可能。這不,這幾天 Github 上出現(xiàn)了一個(gè) https://github.com/bufferhead-code/nextjs-use-php 的項(xiàng)目,它的目的是讓你可以在 Next.js 中寫(xiě) PHP,這是不是真的使 “嘲笑 PHP” -> “理解 PHP” -> “成為 PHP” 成為現(xiàn)實(shí)?(注意,這并不是真的!)
就像使用 "use server" 一樣,在 React Server Component 中用 "use php" 來(lái)寫(xiě) PHP 代碼,如下所示:
return (
<button
formactinotallow={async () => {
'use php'
(new PDO('MySQL:host=localhost:3306;dbname=public', 'root', 'root'))
->prepare("INSERT INTO Bookmarks (slug) VALUES (?)")
->execute(array('new'));
}}>
Insert Bookmark
</button>
)
還可以在 React Client Component 中這樣寫(xiě):
// actions.js
'use server'
export async function phpHelloWorld() {
'use php'
print "Hello from PHP";
}
// page.tsx
import { phpHelloWorld } from "../actions";
上述代碼,需要在 https://github.com/bufferhead-code/nextjs-use-php 倉(cāng)庫(kù)拉取代碼并執(zhí)行以下命令運(yùn)行:
npm install
npm run build
npm run start
瀏覽器打開(kāi) http://localhost:3000 查看結(jié)果。
聲明:我想說(shuō)的是你不應(yīng)該在任何項(xiàng)目中考慮使用它,上述只是作者通過(guò)一些腳本手段讓這些奇怪的想法成為了一種可能,但你覺(jué)得會(huì)有實(shí)際意義嗎?
類似這樣愚蠢的項(xiàng)目還有 https://github.com/elnardu/react-use-c、https://github.com/elnardu/react-use-Rust
圖片
Next.js 自從 13 版本以來(lái),帶來(lái)的 App Router、Server Component、Server Actions、預(yù)渲染(流式渲染)等功能,改變了以往傳統(tǒng)的前端開(kāi)發(fā)方式,新的開(kāi)發(fā)范式,總會(huì)帶來(lái)一些新的問(wèn)題思考,這不一定就是壞的。