這篇文章旨在通過我的80/20方法,幫助你開始使用 Remix。跳過冗餘的部分,學習核心內容。
Remix是一個基於React的新框架,已經達到了1.0版本,並以MIT許可證公開發布,這是我們都喜愛的許可證。
注意:昨天它還是贊助軟件,現在它是公開的和免費的
你知道Next.js嗎?或者 SvelteKit?嗯,Remix有點像它們,但是具有一些獨特的功能,使它成為一個有趣的選擇。但是它不支持靜態網站,因此它始終需要一個服務器。這使它對於一些用例很合適,對於另一些用例可能不太合適。
它適用於具有數據庫、動態數據、具有私有數據的用戶帳戶等用例,例如Rails、Django或Laravel應用程序。
在JavaScript世界中,它更像是RedwoodJS或Blitz.js的替代品,也就是它更多地用於構建應用程序,而不僅僅是網站。
是的,這看起來是一個很好的定位。
我們可以使用npx
創建一個新的Remix項目,這樣我們就不需要先安裝任何東西或創建文件夾。
只需進入包含您的項目的文件夾(對我來說通常是dev
或www
),然後輸入以下命令:
npx remix init
選擇要安裝的文件夾:
选择“Remix App Server”(內置服務器)選項:
选择JavaScript,或者如果您喜歡的話可以選擇TypeScript:
確保告訴安裝程序運行npm install
以便為您設置一切:
然後運行cd <文件夾名>
,然後運行npm run dev
。
看到默認安裝的結果總是令人愉悅的:
生成此結果的代碼如下:
但是,我們實際上只對app
文件夾感興趣,其他部分只是樣板/配置:
讓我們來分析一下。
src
文件夾中有3個文件:
entry.client.jsx
entry.server.jsx
root.jsx
這些文件用於設置整個網站的功能,包括所有頁面的HTML輸出。如果您觸摸它們,整個應用程序都會受到影響。這也是錯誤處理的地方,在Remix中,錯誤處理是一個一級方面,這很酷。
然後,我們有一個routes
文件夾,其中有一個index.jsx
文件,以及一個demos
文件夾,其中包含一些示例應用程序。
讓我們從routes/index.jsx
開始。
這是一個很長的React組件:
現在,此文件可以簡化成以下簡單的React組件:
如果您這樣做並保存文件,您將在應用程序中看到以下內容:
但是,此文件不僅僅輸出一些JSX,它還加載了服務器端的數據,通過loader()
函數:
json()
是一個特殊的實用工具,可以輕鬆創建一個JSON端點,Remix在頁面加載時將調用它,以填充所需的數據。
在渲染組件的JSX時,我們必須導入並調用useLoaderData()
:
文件還導出了一個meta()
函數,用於設置頁面HTML頭部的元數據。
在Remix中,路由是發生“核心”功能的地方。這是可以理解的,因為Remix是由創建React Router的人創建的,所以路由器是應用程序的核心部分。
官方教程已經講解了如何創建自定義路由和處理表單,所以我現在不再進一步詳細介紹。
我建議您瀏覽一下教程,尤其是關於表單的部分。
為什麼呢?因為在React中,表單是一個很大的痛點,所以能夠看到這種非常簡單的方法來創建表單,而無需編寫大量的樣板代碼,這是很好的。
Remix最好的部分是子路由以及在前React時代Ember的outlets如何基本上複製了我們之前所做的事情,這是合理的,因為我記得Ryan Florence曾經活躍於Ember社區。
看到一個領域取得進展很棒,畢竟這個領域沒有出現任何大的老牌競爭者,Next.js基本上是樹上的大象,到目前為止,當我要編寫應用程序時,我一直首選它。
在適當的時候,我仍然會選擇它。我喜歡新技術,但是它也需要很長的時間才能成熟,有人編寫庫、教程等等。
但是競爭能夠促進創新,所以擁有一個不同於現有選擇的特殊選項總是很好。