歡迎使用 Remix

專注於 網路標準現代網路應用程式 的使用者體驗,您將會 打造更好的網站

Remix 是一個全端網頁框架,讓您可以專注於使用者介面,並透過網路標準回推,以提供快速、流暢且具有彈性的使用者體驗。人們會喜歡使用您的產品。

export async function loader({ request }) {
  return getProjects();
}

export async function action({ request }) {
  const form = await request.formData();
  return createProject({
    title: form.get("title"),
  });
}

export default function Projects() {
  const projects = useLoaderData();
  const { state } = useNavigation();
  const busy = state === "submitting";

  return (
    <div>
      {projects.map((project) => (
        <Link to={project.slug}>
          {project.title}
        </Link>
      ))}

      <Form method="post">
        <input name="title" />
        <button type="submit" disabled={busy}>
          {busy
            ? "Creating..."
            : "Create New Project"}
        </button>
      </Form>
    </div>
  );
}

使用者評價

Twitter Logo
Jenna Smith,
Radix UI
我一直在等待有東西鼓勵 React 領域的漸進式增強 *很久了*,而 Remix 真的是更多。證明我們不需要為了閃電般快速、易於存取的 UI 而犧牲 React 或選擇 SSG,而且開發體驗也太容易了 🤤

當您等待您的靜態網站建置時, 分散式網路 基礎設施變得非常完善。 突破靜態的限制。

Remix 是一個無縫的伺服器和瀏覽器執行階段,透過利用分散式系統和原生瀏覽器功能,而不是笨重的靜態建置,提供快速的頁面載入和即時轉換。建立在 Web Fetch API(而不是 Node)之上,它可以在任何地方執行。它已經在 Cloudflare Workers 上原生執行,當然也支援無伺服器和傳統的 Node.js 環境,所以您可以直接開始使用。

頁面速度只是我們真正目標的一個方面。我們追求的是 更好的使用者體驗。當您不斷推進網路的邊界時,您的工具並沒有跟上您的需求。 Remix 已準備好從初始請求到您的設計師可以想出的最精緻的 UX 為您服務。看看吧 👀

Remix 有一個作弊碼
嵌套路由。

網站通常具有控制子視圖的導覽層級。

這些元件不僅幾乎總是與 URL 片段耦合...

...它們也是資料載入和程式碼分割的語義邊界。

example.com/sales/invoices/102000
Fakebooks
儀表板
帳戶
銷售
支出
報表
銷售
總覽
訂閱
發票
客戶
存款
逾期
$10,800
即將到期
$62,000
發票清單
聖塔莫尼卡
$10,800
1995
逾期
斯塔科尼亞
$8,000
2000
今天到期
海洋大道
$9,500
2003
已付款
吹牛皮
$14,000
1997
10 天內到期
寬廣的空間...
$4,600
1998
8 天內到期
斯塔科尼亞
$8,000
今天到期• 發票日期 2000 年 10 月 31 日
專業方案
$6,000
自訂
$2,000
淨總額
$8,000

加載狀態呢?

透過嵌套路由,Remix 可以消除幾乎 每個加載狀態。

大多數網路應用程式在元件內獲取資料,建立 請求瀑布、較慢的載入和 抖動。

Remix 在伺服器上平行載入資料,並傳送完全成形的 HTML 文件。 速度更快,沒有抖動。

預先擷取所有內容

嵌套路由允許 Remix 使您的應用程式 速度快如閃電。

Remix 可以在使用者點擊連結之前平行預先擷取所有內容。

公共資料。使用者資料。模組。甚至 CSS。

零加載狀態。零骨架 UI。零抖動。

好吧,您抓到我們了,它們只是預先擷取連結標籤,#使用平台

example.com/dashboard
Fakebooks
儀表板
帳戶
銷售
支出
報表
儀表板
最近活動
警示
訊息
新發票
客戶
斯塔科尼亞
淨總額
$8,000
新發票
客戶
海洋大道
淨總額
$9,500
sales.js
sales/nav.json
invoices.js
invoice.js
invoice/{id}.json
invoice.css

資料載入

您是否注意到應用程式中的大多數程式碼都是用於 變更資料?

想像一下,如果 React 只有 props 而沒有設定狀態的方法。那有什麼意義?如果一個網頁框架可以幫助您載入資料,卻無法幫助您更新資料,那又有什麼意義?Remix 不會將您丟在 <form onSubmit> 的懸崖邊。 event.preventDefault 到底有什麼作用?)

彈性、漸進式增強的 資料更新已內建。

它非常簡單,甚至有點可笑。只要建立一個表單...

...以及路由模組中的一個動作。它看起來像傳統的 HTML 表單,但可以實現您想要的完全動態的網路體驗。

Remix 在伺服器端執行動作,在用戶端重新驗證資料,甚至處理重新提交造成的競爭條件。

使用轉換掛鉤來獲得花哨的效果,並建立一些待定 UI。Remix 會處理所有狀態,您只需要求即可。

或者使用一些樂觀 UI 來獲得刺激。Remix 會提供傳送到伺服器的資料,因此您也可以跳過突變的繁忙微調器。

用於突變的 HTML 表單。誰知道呢?

export default function NewInvoice() {
  return (
    <Form method="post">
      <input type="text" name="company" />
      <input type="text" name="amount" />
      <button type="submit">Create</button>
    </Form>
  );
}

export async function action({ request }) {
  const body = await request.formData();
  const invoice = await createInvoice(body);
  return redirect(`/invoices/${invoice.id}`);
}

錯誤處理

您的網站會遇到問題,但使用 Remix 時,它們不需要重新整理。錯誤處理很難記住,也很難做到。這就是為什麼它被內建的原因。
Remix 會處理伺服器端渲染時的錯誤。用戶端渲染時的錯誤。甚至伺服器端資料處理中的錯誤。

路由錯誤邊界 讓快樂的路徑保持快樂。

每個路由模組都可以在預設路由元件旁邊匯出一個錯誤邊界。

如果拋出錯誤,無論是在用戶端還是伺服器端,使用者都會看到邊界,而不是預設元件。

沒有問題的路由會正常呈現,因此使用者擁有的選項多於猛按重新整理。

如果路由沒有邊界,則錯誤會向上冒泡。只要在頂部放一個,就可以在程式碼審查時放輕鬆,對吧?

example.com/sales/invoices/102000
Fakebooks
儀表板
帳戶
銷售
支出
報表
銷售
總覽
訂閱
發票
客戶
存款
逾期
$10,800
即將到期
$62,000
發票清單
聖塔莫尼卡
$10,800
1995
逾期
斯塔科尼亞
$8,000
2000
今天到期
海洋大道
$9,500
2003
已付款
吹牛皮
$14,000
1997
10 天內到期
寬廣的空間...
$4,600
1998
8 天內到期
斯塔科尼亞
$8,000
今天到期• 發票日期 2000 年 10 月 31 日
專業方案
$6,000
自訂
$2,000
淨總額
$8,000
糟糕!
載入此發票時發生問題
現在可能夠多了。您還在等什麼?