自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

全新升級!Supabase 與 Next.js 14 的完美融合

開發(fā) 開發(fā)工具
Next.js 14 和 Supabase 的結合為開發(fā)者提供了一個強大、靈活且穩(wěn)定的平臺,用于構建現代的網絡應用。這對于想要在短時間內快速構建并擴展應用的開發(fā)者來說,是一個非常有吸引力的選擇。

Next.js 14:穩(wěn)定性的重大升級

在 Next.js Conf 2023 上,Vercel 團隊發(fā)布了 Next.js 14 版本。這個版本最大的亮點是不包含任何新功能。這種做法在技術界可能看起來不太常見,但這實際上是對 Next.js 穩(wěn)定性和性能的一次重大提升。例如,Server Actions 特性現在被標記為穩(wěn)定版本,這意味著開發(fā)者可以更簡單、更安全地在服務器端進行用戶認證。

Supabase 與 Next.js 14:完美兼容

Supabase 是一個開源的 Firebase 替代品,提供數據庫、認證、實時訂閱等功能。而現在,Supabase 宣布完全支持 Next.js 14。這對于使用 Supabase 和 Next.js 構建應用的開發(fā)者來說,是一個巨大的利好消息。

如何實現兼容?

  • 服務器端組件:在 Next.js 中使用 Server Components,使得從 Supabase 獲取數據變得非常簡單。這意味著開發(fā)者可以在服務器端直接操作數據庫,無需擔心前端和后端的分離。
  • 配置 Supabase 使用 Cookies:由于 Supabase 默認使用 localStorage 來存儲用戶會話信息,而在服務器端沒有 localStorage 的概念,因此必須將 Supabase 配置為在服務器上使用 Cookies。這需要一些編碼工作,但 Supabase 提供了一個名為 @supabase/ssr 的包,以簡化這一流程。
  • 客戶端和服務器端的無縫集成:通過適當配置,Supabase 可以在客戶端和服務器端無縫工作,確保用戶會話的安全和可靠。

代碼示例:使用 Supabase 和 Next.js

1、Server Actions 的簡化認證流程:

下面的代碼示例演示了如何在 Next.js 中使用 Server Actions 進行用戶認證。這個過程完全在服務器端完成。

export default async function Page() {
  const signIn = async () => {
    'use server'
    supabase.auth.signInWithOAuth({...})
  }

  return (
    <form action={signIn}>
      <button>Sign in with GitHub</button>
    </form>
  )
}

在這個示例中,通過 signIn 函數實現用戶的 OAuth 認證。

2、獲取數據變得更簡單:

使用 Server Components,從 Supabase 獲取數據變得極為簡單。以下是一個示例:

export default async function Page() {
  const { data } = await supabase.from('...').select()
  return ...
}

在這里,通過一個異步函數直接從 Supabase 數據庫中獲取數據。

3、結合數據獲取和變更邏輯:

Server Actions 允許你將數據變更邏輯放在負責獲取數據和渲染頁面的 Server Components 旁邊:

export default async function Page() {
  const { data } = await supabase.from('...').select()

  const createNote = async () => {
    'use server'
    await supabase.from('...').insert({...})
  }

  return ...
}

在這個例子中,除了獲取數據,還展示了如何在同一個組件中添加數據。

如何配置 Supabase 以使用 Cookies

默認情況下, supabase-js 使用 localStorage 來存儲用戶的會話。這對于客戶端應用程序很有效,但是當您嘗試在服務器組件中使用 supabase-js 時,會失敗,因為服務器上沒有'localStorage'的概念。

為了做到這一點,我們需要配置 supabase-js 在服務器上運行時使用cookies而不是 localStorage 。但是這段代碼有點冗長,要求人們在使用Supabase構建的每個應用程序中都進行復制。

const supabase = createClient(supabaseUrl, supabaseAnonKey, {
  auth: {
    flowType: 'pkce',
    autoRefreshToken: false,
    detectSessionInUrl: false,
    persistSession: true,
    storage: {
      getItem: async (key: string) => {
        cookieStore.get(key)
      },
      setItem: async (key: string, value: string) => {
        cookieStore.set(key, value)
      },
      removeItem: async (key: string) => {
        cookieStore.remove(key)
      },
    },
  },
})

這樣就處理了Next.js的服務器端部分,但由于我們建議使用行級安全性(RLS)策略保護應用程序,您也可以在客戶端安全地訪問用戶的會話。因此,我們需要告訴瀏覽器如何訪問該cookie:

const supabase = createClient(supabaseUrl, supabaseAnonKey, {
  auth: {
    flowType: 'pkce',
    autoRefreshToken: true,
    detectSessionInUrl: true,
    persistSession: true,
    storage: {
      getItem: async (key: string) => {
        return parse(document.cookie[key])
      },
      setItem: async (key: string, value: string) => {
        document.cookie = serialize(key, value)
      },
    },
    removeItem: async (key: string) => {
      document.cookie = serialize(key, '', {
        maxAge: 0,
      })
    },
  },
})

這是一段非?;靵y的代碼!因此,我們決定創(chuàng)建一個名為 @supabase/ssr 的包,為您完成所有這些工作。然后,我們進一步創(chuàng)建了一個Next.js和Supabase的起始模板,這樣您就可以專注于構建您的精彩應用!

https://supabase.com/docs/guides/getting-started/quickstarts/nextjs.

開始使用

對于新手開發(fā)者來說,使用 Next.js 和 Supabase 的啟動模板是一個簡單的開始方式:

npx create-next-app@latest -e with-supabase

這個命令會創(chuàng)建一個預配置的項目,使你能夠快速開始構建應用。

結束

Next.js 14 和 Supabase 的結合為開發(fā)者提供了一個強大、靈活且穩(wěn)定的平臺,用于構建現代的網絡應用。這對于想要在短時間內快速構建并擴展應用的開發(fā)者來說,是一個非常有吸引力的選擇。

責任編輯:姜華 來源: 今日頭條
相關推薦

2024-05-09 09:01:03

2024-04-28 10:56:34

Next.jsWeb應用搜索引擎優(yōu)化

2024-12-16 08:40:51

2023-10-27 15:13:12

Next.jsRust

2024-09-18 15:58:05

2025-01-17 09:29:42

2018-08-29 16:04:04

Parallels D

2024-12-13 08:37:32

2013-01-14 11:37:29

惠普電腦

2025-02-03 00:00:35

2024-06-12 08:08:08

2023-10-30 07:08:34

2023-10-28 09:41:12

Next.js函數配置選項

2024-11-25 07:39:48

2024-09-20 15:37:02

2023-11-07 11:47:59

2024-09-04 10:27:53

2024-02-05 11:55:41

Next.js開發(fā)URL

2024-03-05 19:17:37

2025-02-20 00:00:10

點贊
收藏

51CTO技術棧公眾號