欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

T3 Stack 實(shí)戰(zhàn):用 TypeScript、Next.js、tRPC、Prisma 構(gòu)建全棧內(nèi)部工具

T3 Stack 實(shí)戰(zhàn):用 TypeScript、Next.js、tRPC、Prisma 構(gòu)建全棧內(nèi)部工具 去年年底我接了一個(gè)內(nèi)部工具的重構(gòu)需求項(xiàng)目代號(hào)就叫t3code。最初的需求很樸素把團(tuán)隊(duì)散落在各個(gè)文檔里的流程、命令和模板整理成一套可交互的網(wǎng)頁(yè)工具讓新同學(xué)能照著操作老同學(xué)能快速查參數(shù)。但做著做著我發(fā)現(xiàn)這個(gè)項(xiàng)目的技術(shù)選型比業(yè)務(wù)本身更值得聊——它最終落到了 TypeScript Next.js tRPC Prisma Tailwind 這一整套全棧組合上也就是社區(qū)里常說(shuō)的 T3 Stack。這篇文章我會(huì)把t3code從立項(xiàng)到部署全過(guò)程的思路、配置、代碼和踩過(guò)的坑完整寫(xiě)出來(lái)如果你正在糾結(jié)要不要用這套技術(shù)?;蛘咭呀?jīng)入坑想看看別人的實(shí)踐這篇應(yīng)該對(duì)你有用。先說(shuō)明一下t3code不是什么開(kāi)源框架也不是某個(gè)現(xiàn)成產(chǎn)品的倉(cāng)庫(kù)名它只是我給這個(gè)內(nèi)部項(xiàng)目起的代號(hào)。但這個(gè)代號(hào)背后選型的過(guò)程以及每一層技術(shù)承擔(dān)的角色完全可以作為一個(gè)全棧項(xiàng)目的參考樣本。接下來(lái)我會(huì)按照項(xiàng)目推進(jìn)的時(shí)間線來(lái)講先講整體設(shè)計(jì)和技術(shù)選型再講腳手架搭建和數(shù)據(jù)庫(kù)建模然后是 tRPC 的完整鏈路實(shí)現(xiàn)最后是部署和那些你上網(wǎng)搜都不一定搜得到的坑。1. 項(xiàng)目背景與整體設(shè)計(jì)思路1.1 項(xiàng)目要解決的痛點(diǎn)與拆解方式t3code這個(gè)項(xiàng)目的原始需求本質(zhì)上是把團(tuán)隊(duì)里的“隱形知識(shí)”變成“顯性工具”。我之前統(tǒng)計(jì)過(guò)團(tuán)隊(duì)內(nèi)部常用的命令、腳本、配置片段大概有六十多條分散在 Confluence、群公告、個(gè)人筆記里版本還對(duì)不上。比如同一個(gè)部署命令有人寫(xiě)成 Docker 形式有人寫(xiě)成裸進(jìn)程形式新同學(xué)照著舊文檔跑必然報(bào)錯(cuò)。所以第一版設(shè)計(jì)就定了三個(gè)原則所有內(nèi)容必須有唯一數(shù)據(jù)源、所有操作盡量能在線執(zhí)行而非復(fù)制粘貼、所有代碼示例必須與實(shí)際代碼倉(cāng)庫(kù)保持同步。為了做到這三點(diǎn)技術(shù)選型一開(kāi)始就沒(méi)什么懸念。前端需要一套成熟的 React 生態(tài)后端需要一個(gè)能直接復(fù)用前端類型定義的服務(wù)端方案數(shù)據(jù)庫(kù)需要一個(gè)支持快速迭代且類型安全的 ORM。結(jié)果就是 TypeScript 打底Next.js 做頁(yè)面和接口宿主tRPC 做端到端類型安全的通信Prisma 管理 PostgreSQL最后用 Tailwind 快速搭界面。這五個(gè)組件正好就是 T3 Stack 的完整陣容。這里我多說(shuō)一句為什么不用傳統(tǒng)的 REST 方案。如果按 REST 來(lái)寫(xiě)前端需要維護(hù)一套 API 路徑常量后端需要寫(xiě)路由和中間層校驗(yàn)兩邊各維護(hù)一份類型定義聯(lián)調(diào)時(shí)總會(huì)有一方先改。tRPC 的思路是讓你直接“調(diào)用函數(shù)”而且函數(shù)簽名里的類型是自動(dòng)從前端推斷到后端的改一處另一處馬上報(bào)錯(cuò)。對(duì)于t3code這種需要頻繁增刪字段的配置管理工具這個(gè)特性省下的是實(shí)實(shí)在在的開(kāi)發(fā)時(shí)間。1.2 為什么用 T3 Stack 而不是其他組合其實(shí)我在立項(xiàng)前也對(duì)比過(guò)幾套方案。第一套是 Next.js GraphQL TypeScriptGraphQL 的 schema 定義和安全校驗(yàn)都很強(qiáng)但對(duì)一個(gè)幾十個(gè)接口的內(nèi)部工具來(lái)說(shuō)寫(xiě) schema、配 resolver、維護(hù) fragment 的復(fù)雜度偏高收益不明顯。第二套是 NestJS React 前后端分離工程上是標(biāo)準(zhǔn)做法但兩個(gè)倉(cāng)庫(kù)之間的聯(lián)調(diào)和類型同步成本在兩個(gè)人開(kāi)發(fā)的小項(xiàng)目里會(huì)被放大。最終定下 T3 組合的核心原因可以歸納成三條單一代碼倉(cāng)庫(kù)、單一語(yǔ)言、單一類型系統(tǒng)前后端不存在“跨語(yǔ)言邊界”。初始化體驗(yàn)極好create-t3-app會(huì)把 Next.js、tRPC、Prisma、Tailwind 的工程模板一次性裝好省去手工拼裝的時(shí)間。社區(qū)維護(hù)積極Next.js 和 Prisma 的版本迭代都會(huì)被模板及時(shí)跟進(jìn)。另外要提一個(gè)反向觀點(diǎn)T3 Stack 不是銀彈。如果你的項(xiàng)目需要對(duì)外提供開(kāi)放 API或者有其他語(yǔ)言的服務(wù)端要對(duì)接tRPC 的“函數(shù)調(diào)用”模式就不太合適REST 或 GraphQL 才是兼容性更好的選擇。所以這個(gè)選型適合“前后端都由同一撥人維護(hù)的內(nèi)部工具類項(xiàng)目”t3code恰好屬于這一類。2. 從零搭建 t3code腳手架與核心配置2.1 初始化項(xiàng)目與選項(xiàng)選擇t3code的初始化我用的是官方腳手架一條命令就能拉起整套工程npx create-t3-applatest t3code過(guò)程會(huì)問(wèn)你幾個(gè)問(wèn)題這里把當(dāng)時(shí)的選擇列出來(lái)并解釋原因TypeScript必選整個(gè) T3 棧的基石不選就沒(méi)有類型安全可言。Next.js選 App Router 模式新項(xiàng)目沒(méi)必要再用 Pages Router。tRPC選這是前后端聯(lián)通的核心。Prisma選配合 PostgreSQL 使用。Tailwind CSS選界面開(kāi)發(fā)效率和一致性都靠它。初始化 Git選方便隨時(shí)回滾。導(dǎo)入路徑別名選/別名能讓代碼結(jié)構(gòu)更清晰。跑完之后目錄結(jié)構(gòu)是這樣的核心部分t3code/ ├── prisma/ │ ├── schema.prisma │ └── seed.ts ├── src/ │ ├── app/ │ │ ├── api/trpc/[trpc]/route.ts │ │ ├── layout.tsx │ │ └── page.tsx │ ├── server/ │ │ ├── api/ │ │ │ ├── routers/ │ │ │ ├── root.ts │ │ │ └── trpc.ts │ │ └── db.ts │ ├── trpc/ │ │ ├── server.ts │ │ └── client.ts │ └── styles/ │ └── globals.css └── .env這個(gè)結(jié)構(gòu)最有價(jià)值的地方在于src/server/api里寫(xiě)路由src/trpc里提供前后端共享的類型工具前端頁(yè)面完全可以直接引用server層的類型不需要額外的 d.ts 文件。2.2 環(huán)境變量與數(shù)據(jù)庫(kù)配置接下來(lái)是數(shù)據(jù)庫(kù)部分。t3code用的是 PostgreSQL我在本地用 Docker 起了個(gè)實(shí)例.env 配置如下DATABASE_URLpostgresql://postgres:passwordlocalhost:5432/t3code?schemapublic NEXT_PUBLIC_APP_URLhttp://localhost:3000注意一個(gè)細(xì)節(jié)create-t3-app生成的模板默認(rèn)會(huì)在src/server/db.ts里用globalThis做 Prisma 客戶端的全局緩存防止開(kāi)發(fā)模式下熱更新導(dǎo)致連接數(shù)暴增。這個(gè)是模板自動(dòng)處理的但如果你手動(dòng)搭建 Prisma一定要記得自己加這段。然后執(zhí)行遷移npx prisma migrate dev --name init這一步會(huì)根據(jù) schema 生成遷移 SQL 并同步數(shù)據(jù)庫(kù)同時(shí)生成最新的 Prisma Client整個(gè)鏈路到這里就通了。2.3 Tailwind 主題定制界面方面我沒(méi)有用現(xiàn)成的 UI 組件庫(kù)而是直接用 Tailwind 寫(xiě)了基礎(chǔ)樣式。t3code是一個(gè)內(nèi)部工具不需要花哨的視覺(jué)要的是信息密度和一致性。我在globals.css里定義了幾個(gè)關(guān)鍵的設(shè)計(jì)變量tailwind base; tailwind components; tailwind utilities; layer base { :root { --background: 210 40% 98%; --foreground: 222 47% 11%; --primary: 221 83% 53%; --muted: 214 32% 91%; } }這樣做的原因有兩點(diǎn)第一CSS 變量驅(qū)動(dòng)的主題方便后續(xù)加暗色模式不需要改組件代碼第二Tailwind 的hsl(var(--...))寫(xiě)法比硬編碼顏色更可維護(hù)。寫(xiě)組件時(shí)直接bg-background text-foreground就能跟隨主題變化非常順手。3. 核心鏈路用 tRPC 打通全棧類型安全3.1 tRPC 的三個(gè)核心概念tRPC 上手前先記住三個(gè)詞procedure、router、caller。procedure 是對(duì)后端函數(shù)的一個(gè)抽象分 query查詢和 mutation寫(xiě)操作兩類router 是多個(gè) procedure 的集合可以嵌套caller 是服務(wù)端內(nèi)部調(diào)用路由的方式用于在 Next.js 的 Server Component 里直接拿數(shù)據(jù)。t3code里我設(shè)計(jì)了一個(gè)基礎(chǔ)路由結(jié)構(gòu)// src/server/api/routers/entry.ts import { z } from zod; import { createTRPCRouter, publicProcedure } from ../trpc; export const entryRouter createTRPCRouter({ list: publicProcedure.query(async ({ ctx }) { return ctx.db.entry.findMany({ orderBy: { updatedAt: desc }, }); }), byId: publicProcedure.input(z.string()).query(async ({ ctx, input }) { return ctx.db.entry.findUnique({ where: { id: input } }); }), create: publicProcedure .input(z.object({ title: z.string().min(1), content: z.string().min(1), tags: z.array(z.string()).default([]), })) .mutation(async ({ ctx, input }) { return ctx.db.entry.create({ data: input }); }), });這里的zod校驗(yàn)是 tRPC 框架強(qiáng)推的因?yàn)檩斎腩愋秃桶踩r?yàn)可以一次定義。比如create這個(gè) mutation如果前端傳了空字符串程序會(huì)在進(jìn)數(shù)據(jù)庫(kù)之前直接拒絕不需要在業(yè)務(wù)代碼里再寫(xiě)一遍 if 判斷。3.2 一個(gè)完整的 CRUD 實(shí)現(xiàn)鏈路上面這段只是服務(wù)端的路由前端是怎么調(diào)用的呢t3code的頁(yè)面組件里調(diào)用方式是這樣的use client; import { api } from ~/trpc/client; export function EntryList() { const { data, refetch } api.entry.list.useQuery(); const createEntry api.entry.create.useMutation({ onSuccess: () refetch(), }); return ( div {data?.map((entry) ( div key{entry.id} h3{entry.title}/h3 p{entry.content}/p /div ))} button onClick{() createEntry.mutate({ title: test, content: hello })} 添加 /button /div ); }這段代碼里有兩個(gè)容易被忽略但很關(guān)鍵的點(diǎn)。第一api.entry.list.useQuery()返回的data類型是直接從服務(wù)端entry.list這個(gè) procedure 的返回值推斷出來(lái)的。也就是說(shuō)如果后端改了返回結(jié)構(gòu)前端這里會(huì)立刻出現(xiàn)類型報(bào)錯(cuò)不用等接口聯(lián)調(diào)發(fā)現(xiàn)問(wèn)題。第二createEntry.mutate的入?yún)㈩愋鸵彩菑姆?wù)端輸入校驗(yàn)的 zod schema 自動(dòng)推斷的。服務(wù)端要求title必須是字符串且至少 1 個(gè)字符那么前端傳數(shù)字或空字符串在編輯階段就會(huì)報(bào)錯(cuò)。這里的時(shí)間收益是很直觀的內(nèi)部工具的需求變化特別頻繁昨天可能還要tags字段今天就要改成category在 REST 體系下要改后端 schema、前端 interface、接口文檔三處在 tRPC 下只需要改一處剩下兩處類型會(huì)自動(dòng)傳播。3.3 tRPC 和 Next.js Server Component 的結(jié)合除了客戶端調(diào)用t3code的很多頁(yè)面其實(shí)不需要交互只需要在服務(wù)端渲染時(shí)把數(shù)據(jù)取好。這種情況下不需要走 HTTP而是直接用createCaller// src/app/entries/page.tsx import { api } from ~/trpc/server; export default async function EntriesPage() { const entries await api.entry.list(); return ( main {entries.map((entry) ( div key{entry.id}{entry.title}/div ))} /main ); }注意這里的api是~/trpc/server導(dǎo)出的不是客戶端那個(gè)api。它會(huì)在服務(wù)端直接調(diào)用 router 里的函數(shù)數(shù)據(jù)不經(jīng)過(guò)網(wǎng)絡(luò)棧性能上比傳統(tǒng) SSR 還要好。這種寫(xiě)法非常適合內(nèi)容展示類的內(nèi)部頁(yè)面。不過(guò)要注意Server Component 里不能直接調(diào)用需要登錄態(tài)的 mutation因?yàn)?mutation 本身需要返回給前端觸發(fā)。t3code的做法是只讀數(shù)據(jù)用 Server Component需要交互的表單、編輯操作都用 Client Component 調(diào) mutation。4. 數(shù)據(jù)建模與遷移實(shí)戰(zhàn)Prisma 的細(xì)節(jié)與坑4.1 t3code 的數(shù)據(jù)模型設(shè)計(jì)t3code里最核心的數(shù)據(jù)是“條目”也就是那條命令或配置片段。它的模型定義如下model Entry { id String id default(cuid()) title String content String category String? tags String[] status Status default(ACTIVE) authorId String? createdAt DateTime default(now()) updatedAt DateTime updatedAt } enum Status { ACTIVE ARCHIVED } model Tag { id String id default(cuid()) name String unique entries Entry[] }這里我特意選了cuid()而不是自增 id原因很簡(jiǎn)單內(nèi)部工具的數(shù)據(jù)會(huì)頻繁導(dǎo)入導(dǎo)出cuid 不會(huì)因?yàn)閿?shù)據(jù)合并而沖突。tags直接用 PostgreSQL 的 string[] 類型省一張關(guān)聯(lián)表查詢hasTag的場(chǎng)景用tags [docker]就能完成夠用且簡(jiǎn)單。關(guān)于category一開(kāi)始我用了必填字段后來(lái)發(fā)現(xiàn)實(shí)際錄入時(shí)很多條目其實(shí)不好歸類改成了可選。這個(gè)調(diào)整是在實(shí)踐過(guò)程中發(fā)現(xiàn)的也印證了數(shù)據(jù)建模初期別把約束設(shè)得太死盡量給可選等數(shù)據(jù)量上來(lái)了再收緊更穩(wěn)妥。4.2 遷移與重置的坑Prisma 的migrate dev在開(kāi)發(fā)環(huán)境很好用但我踩過(guò)一個(gè)具體的坑當(dāng)我把一個(gè)字段從必填改成可選時(shí)prisma migrate dev生成了一個(gè)帶ALTER COLUMN的 SQL但本地?cái)?shù)據(jù)庫(kù)已經(jīng)有數(shù)據(jù)老數(shù)據(jù)里這個(gè)字段是 null導(dǎo)致在線遷移失敗。這個(gè)問(wèn)題的實(shí)際處理方案是用prisma db push來(lái)繞過(guò)遷移歷史直接同步 schema 到數(shù)據(jù)庫(kù)。但注意這會(huì)改變數(shù)據(jù)庫(kù)結(jié)構(gòu)而不產(chǎn)生遷移文件所以只在純開(kāi)發(fā)環(huán)境用。如果是多環(huán)境部署還是老老實(shí)實(shí)改遷移 SQL或者在 schema 改動(dòng)前先寫(xiě)一個(gè)默認(rèn)值填充腳本。另外還有一個(gè)高頻坑改了schema.prisma之后Prisma Client 的代碼是自動(dòng)生成的但在 Next.js 開(kāi)發(fā)模式下偶爾不會(huì)自動(dòng)刷新導(dǎo)致新字段報(bào)“Unknown argument”。處理方法是強(qiáng)制重新生成npx prisma generate然后重啟 dev server基本都能解決。4.3 種子數(shù)據(jù)與測(cè)試數(shù)據(jù)準(zhǔn)備t3code需要一個(gè)穩(wěn)定的種子數(shù)據(jù)來(lái)驗(yàn)證界面和接口。我在prisma/seed.ts里面放了十幾條真實(shí)常用的命令模板然后用 tsx 運(yùn)行npx tsx prisma/seed.ts種子腳本用 upsert 而不是 create這樣重復(fù)執(zhí)行不會(huì)報(bào)唯一鍵沖突import { PrismaClient } from prisma/client; const prisma new PrismaClient(); async function main() { const dockerEntry await prisma.entry.upsert({ where: { id: seed-docker }, update: {}, create: { id: seed-docker, title: Docker 容器啟動(dòng)模板, content: docker run -d --name demo -p 8080:80 nginx, tags: [docker, nginx], }, }); console.log(Seeded: ${dockerEntry.title}); } main().finally(() prisma.$disconnect());這里用固定 id 是一個(gè)經(jīng)驗(yàn)之談開(kāi)發(fā)時(shí)反復(fù) seed 不會(huì)生成重復(fù)數(shù)據(jù)而且可以放心地在代碼里硬編碼這個(gè) id 作為界面演示數(shù)據(jù)。5. 部署鏈路與性能優(yōu)化要點(diǎn)5.1 部署到 Vercel 的完整配置t3code最終部署在 Vercel 上因?yàn)?Next.js 應(yīng)用用它部署最省心而且支持自動(dòng)預(yù)覽部署分支推送就能生成獨(dú)立預(yù)覽環(huán)境對(duì)團(tuán)隊(duì)協(xié)作很友好。主要配置如下環(huán)境變量DATABASE_URL 用生產(chǎn) PostgreSQL 的地址。構(gòu)建命令prisma migrate deploy next build注意這里是migrate deploy而不是migrate dev前者只會(huì)執(zhí)行已生成的遷移文件不會(huì)在 CI 里創(chuàng)建新遷移??蚣茴A(yù)設(shè)Vercel 會(huì)自動(dòng)識(shí)別 Next.js不需要額外配置。數(shù)據(jù)庫(kù)用的是 Neon 的 PostgreSQL 免費(fèi)版本身支持連接池。不過(guò)在 Vercel Serverless 環(huán)境下數(shù)據(jù)庫(kù)連接數(shù)很容易被并發(fā)請(qǐng)求打滿我的建議是檢查.env里的DATABASE_URL是否包含連接池參數(shù)例如?pgbouncertrueconnection_limit1。這一點(diǎn)很多人會(huì)忽略但實(shí)際部署后遇到連接數(shù)報(bào)錯(cuò)九成是這個(gè)原因。5.2 構(gòu)建體積與圖片優(yōu)化t3code這個(gè)項(xiàng)目本身不依賴重型可視化庫(kù)但 Next.js 默認(rèn)會(huì)把所有頁(yè)面打包到構(gòu)建產(chǎn)物里時(shí)間久了 bundle 會(huì)膨脹。我做了兩個(gè)優(yōu)化第一動(dòng)態(tài)導(dǎo)入只在需要時(shí)加載的重組件例如代碼高亮器const CodeBlock dynamic(() import(~/components/code-block), { loading: () p加載中.../p, });第二所有靜態(tài)圖片走 Next.js Image 組件自動(dòng)處理尺寸和 webp 格式。對(duì)于內(nèi)部工具圖片不多但每次訪問(wèn)都要拉原始大圖也沒(méi)有必要。Image 組件的sizes屬性一定要寫(xiě)否則會(huì)浪費(fèi)不少帶寬Image src{thumbnail} altcover width{400} height{225} sizes(max-width: 768px) 100vw, 400px /5.3 性能數(shù)據(jù)與復(fù)盤(pán)上線后我觀察了 Vercel 分析面板t3code的首頁(yè) LCP 穩(wěn)定在 1.2 秒以內(nèi)交互頁(yè)面 INP 在 200ms 以內(nèi)。對(duì)于一個(gè)內(nèi)部工具來(lái)說(shuō)這個(gè)數(shù)據(jù)已經(jīng)足夠好。需要注意如果未來(lái)?xiàng)l目數(shù)量增長(zhǎng)到上萬(wàn)條entry.list的裸查可能會(huì)成為瓶頸那時(shí)需要在 Prisma 查詢里加take分頁(yè)參數(shù)或者引入搜索。目前t3code的數(shù)據(jù)量在幾百條量級(jí)索引都命中沒(méi)必要過(guò)度設(shè)計(jì)。6. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄6.1 類型不更新的典型問(wèn)題tRPC 類型傳播是它的賣(mài)點(diǎn)但開(kāi)發(fā)中有一個(gè)很煩的現(xiàn)象后端路由改了前端報(bào)錯(cuò)卻還是舊類型。這個(gè)通常不是 tRPC 的問(wèn)題而是 TypeScript 的編譯器沒(méi)有重新生成聲明。在我遇到的情況里重啟 Next.js dev server 能解決九成問(wèn)題剩下的一成是tsconfig.json的include沒(méi)有覆蓋src/trpc目錄。排查步驟整理如下# 1. 強(qiáng)制重新生成 Prisma Client npx prisma generate # 2. 檢查 tRPC 類型看是否有顯式 any # 在代碼里搜索 : any如果有替換為具體類型 # 3. 重啟開(kāi)發(fā)服務(wù)器 # 如果還不行刪除 .next 目錄再啟動(dòng) rm -rf .next npm run dev這個(gè)三板斧在幾十個(gè)項(xiàng)目里都驗(yàn)證夠了不要一上來(lái)就懷疑框架有問(wèn)題。6.2 Prisma 連接數(shù)超限的排查前文提到了連接池這里展開(kāi)講一下真實(shí)的情況。部署初期t3code在 Vercel 上經(jīng)常報(bào)Too many clients錯(cuò)誤。排查步驟是先看日志確認(rèn)是數(shù)據(jù)庫(kù)連接數(shù)超過(guò) Neon 的限制再看DATABASE_URL有沒(méi)有配置連接池參數(shù)最后檢查代碼里有沒(méi)有重復(fù)創(chuàng)建 PrismaClient。create-t3-app模板自帶globalThis緩存不會(huì)重復(fù)創(chuàng)建最終問(wèn)題就落在連接池參數(shù)上。加上之后服務(wù)穩(wěn)定了沒(méi)有再次出現(xiàn)連接數(shù)告警。6.3 常見(jiàn)問(wèn)題速查表我整理了一張表記錄了t3code開(kāi)發(fā)中實(shí)際遇到的高頻問(wèn)題查閱或排查起來(lái)很省事?,F(xiàn)象原因解決方案本地接口返回 500Prisma Client 版本與數(shù)據(jù)庫(kù) Schema 不匹配執(zhí)行npx prisma generate后重啟 dev server部署構(gòu)建失敗遷移文件未執(zhí)行構(gòu)建命令加npx prisma migrate deploy生產(chǎn)環(huán)境連接數(shù)報(bào)錯(cuò)缺少連接池參數(shù)DATABASE_URL 加?pgbouncertrueconnection_limit1前端類型與后端不一致dev server 緩存舊類型rm -rf .next后重啟種子腳本重復(fù)執(zhí)行報(bào)錯(cuò)未使用 upsert改用upsert并設(shè)置固定 id字段改名后遷移失敗數(shù)據(jù)庫(kù)已有數(shù)據(jù)手動(dòng)編寫(xiě)遷移 SQL 或先補(bǔ)默認(rèn)值6.4 兩個(gè)值得分享的排查經(jīng)驗(yàn)除了上面這些常規(guī)問(wèn)題再講兩個(gè)t3code特有的經(jīng)驗(yàn)都是網(wǎng)上教程很少提到的。第一個(gè)是 Server Component 里調(diào)用 tRPC 時(shí)如果不小心把query寫(xiě)成了mutation瀏覽器端不會(huì)直接報(bào)錯(cuò)而是會(huì)在服務(wù)端渲染過(guò)程中拋出一個(gè)非常不直觀的錯(cuò)誤。排查的時(shí)候要看完整堆棧別只盯瀏覽器 console。正確的做法是只讀數(shù)據(jù)用api.someRouter.query寫(xiě)操作才用mutation兩者不要混用。第二個(gè)是 Tailwind 的自定義顏色變量在服務(wù)端渲染時(shí)可能會(huì)閃爍因?yàn)?CSS 變量在服務(wù)端首屏渲染時(shí)還沒(méi)掛載到:root。解決辦法是確保變量定義在layer base里且沒(méi)有在組件里覆蓋同名變量。這個(gè)問(wèn)題在新項(xiàng)目初始階段不明顯但一旦有人往全局樣式文件里多寫(xiě)了幾個(gè)--primary就會(huì)開(kāi)始亂。講一個(gè)更實(shí)際的經(jīng)驗(yàn)。t3code第二次迭代時(shí)我需要批量更新幾十條 seed 數(shù)據(jù)當(dāng)時(shí)偷懶沒(méi)有寫(xiě)腳本直接在 Prisma Studio 里手動(dòng)改。改到一半發(fā)現(xiàn)某個(gè)字段要全局替換才意識(shí)到這個(gè)操作應(yīng)該在腳本里做。后來(lái)我整理了一遍規(guī)范所有數(shù)據(jù)的導(dǎo)入導(dǎo)出、批量更新、字段遷移都必須通過(guò)prisma/scripts目錄下的腳本執(zhí)行禁止直接在數(shù)據(jù)庫(kù)管理工具里手改。這個(gè)規(guī)范看起來(lái)是自找麻煩但它保證了所有變更都有記錄、可回放對(duì)于內(nèi)部工具來(lái)說(shuō)這比花哨的功能更重要。我自己的體會(huì)是T3 Stack 給的真正優(yōu)勢(shì)不是某一個(gè)框架多強(qiáng)而是它們組合起來(lái)把“定義一次、到處使用”變成了現(xiàn)實(shí)前后端共享類型帶來(lái)的省心感只有當(dāng)你改完后端字段前端整條鏈路自動(dòng)同步時(shí)才有直觀感受。如果你手上也有類似t3code這種前后端同團(tuán)隊(duì)維護(hù)的內(nèi)部項(xiàng)目不妨按這套思路試一次從某種意義上說(shuō)它會(huì)改變你對(duì)全棧開(kāi)發(fā)的某些習(xí)慣。最后留個(gè)擴(kuò)展建議下一步可以給t3code加上簡(jiǎn)單的基于會(huì)話的登錄鑒權(quán)接入 tRPC 的 middleware這樣每一條 procedure 都能統(tǒng)一控制訪問(wèn)權(quán)限項(xiàng)目的完整度會(huì)再上一個(gè)臺(tái)階。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天综合色丁香| 97人人干人人操| 激情五月婷| 久久激情网| 九九色热| 亚洲va欧美va天堂v国产综合| 中文在线成人| 婷婷五月,综合伊人| 久久久久丁香婷婷五月天| 五月婷婷婷综合网| YW无码| 九九精品热| 日韩久久这里只有精品| 99热99ai| 91九色国产| 99ri网站在线观看| 99性爱视频| 亚洲综合激情五月久久| 丁香五月亚洲婷婷| 思思热思在线精品视频| 色99日韩| www.91.com黄| 婷婷五月色天| 99色最新在线视频网站| 91婷婷五月天综合视频| 天天肏屄夜夜爽| 五月婷婷啪啪啪啪| 五月婷婷六月丁香| www.zbzhongsen.com| 亚洲精品婷婷| 五月婷婷丁香社区| 可以免费看AV网站| 久久这里只有精品1| 久久五月网| 9l久久久视频| 丁香五月激情综合久久| 久久99最新地址| 99热在线播放| 五月天色婷婷激情综合| 婷婷精品免费久久| 久久婷综合| 五月亭亭色| 狠狠干.com| 99热这里有精品| 亭亭玉月丁香| 91狠狠色丁香| 欧美97色| 夜夜骑夜夜撸| 五月色网| 久久精品99国产精品日本| AV在线免费网站| 久久久久久久人妻| 99久热在线精品| 踪合专区啪啪| 五月天激情图片网| 激情五月天的婷婷| 在线中文字幕视频| 久热久色| 亚洲色情激情丁香五月| 欧美性爱5月天天天看| 香蕉婷婷色五月| 中文字幕 码精品视频网站| 91狠狠色丁香| 丁香5月激情网| 大香网伊人久久综合| 久久久99视频| 丁香五月在线| WWW.桔色成人.COM| 激情综合五月| 蜜桃五月天| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 日韩色五月| 欧美大道不卡| 五月丁香久久| 青青久在线视频免费观看| 丁香五月综合| 丁香色色五月| 色月九九| va中文资源在线观看| 婷婷,五月天,丁香,第一| 婷婷五月亚洲综合| 99re这里只有精品国产99| 婷婷九月| 天天日天天色| 大香蕉520| www.99热| 7777精品伊人久久久大香线蕉最新版| 婷婷伊人綜合中文字幕| 五月久久亚洲| 99啪啪网| 激情文学综合婷婷五月天丁香花| 99热全是精品| 色五月婷婷少妇人妻| 丁香五月综合久久八| tingtingjiqingwuyue| 婷婷五月丁香六月伊人网| 丁香五月天偷拍| 情欲综合网| 亚洲、热| 丁香五月天色婷婷| 日韩xx在线| 综激情网| www.亭亭五月天| 美欧成人视频| 一区二区成人电影免费播放| 超碰99久久| 亚洲综合激| 婷婷色成人| 色婷久九| 丁香六月色| 色五月婷婷基地| 深爱激情九九五月天 | 婷婷五月综合视频免费播放| 色婷婷网| 欧美色宗和激情| 五月丁香怕啪啪| 色综合综合色| 激情六月天| 婷婷五月色综合香五月| 午夜色色色极品视频| 99re在线这里只有精品视频首页| 九九aV| 久久五月丁香综合| 亚洲综合网激情小说| 黄网在线播放| 九九热青草| www.9797国产| 亚洲AV成人无码久久精品老人法拉利| 另类小说色婷婷| 色久一| 97成人丁香婷婷| 婷婷五月深爱五月| 少妇性BBB搡BBB爽爽爽视頻| 五月丁香91| 99热这里只有精品一区| 欧美大肥婆大肥BBBBB| 婷婷WWW久久| 五月丁香六月色婷婷综合五月天| 超碰人人91| 五月天丁香啪啪综合| 人人爱人人摸人人澡| 婷婷激情社区| 中文精品在| 日日日影院| 玖玖资源在线视频| 久久网日本| 国产日日操夜夜操的肉棒视频| 四色永久成人网站| 久久精品五月天| 青草激情在线| 河北真实伦对白精彩脏话| 激情影院69| 综合亚洲五月天| 丁香六月婷婷综合| 大香蕉丁香| 蜜臀久久99精品久久久久久酒店| 伊人丁香六月婷婷| 在线综合网| 操久久精| 久色大| 日韩久久日| 色欲人妻综合aaaaaaaa网| 操一操干一干| 91在线观看www| www.五月天婷婷姐姐| 日韩欧洲亚洲| 丁香五月另类色婷婷麻豆| 天天干天天叉| 狠狠爱成人综合网| 色婷婷狠狠久久综合五月| 丁香在线视频| 日日日,com| 婷婷五月天久久| 五月婷婷综合影院| 国产精品电影网| www.五月婷| 婷婷综合激情五月综合| 色婷五月| 婷婷伊人五月天| 五月丁香六月婷婷,婷| 久久综合激情| 九九re精品视频在线观看| 久久人妻伊人| 五月天丁香综合在线| 亚州AV超碰人人操| 日日噜噜久久婷婷五月天| 丁香婷婷五月基地| 亚洲精品成人片在线播| 九热视频在线精品15| 日本视频欧美观看免费| 五月婷婷丁香大陆免费| 99热九九这里只有精品| 五月天久久成人| 色婷婷电影| 91人人操.COM| 激情综合婷婷| 久热中文字幕在线线观看| 亚洲日韩一页精品发布| 狠狠干综合网| 综合色影| 国产精品18久久久| 婷婷开心综合人妻小说网址| 91怕怕网| 五月色网| 亚洲瑟瑟精品在线| 亚洲天天操| 红桃91人妻爽人妻爽| 99热在线免费| 色婷婷狠| 99国产精品久久久久久久久久久| 天天摸天天日天天舔| 九久热| 婷婷激情五月天激情| 一级七香蕉| www.激情五月| 色婷婷婷av| 丁香激情五月| 亚洲欧美国产高清vA在线播放| 91色欲综合| 五月婷婷丁香大陆免费| 午夜色色色极品视频| 午夜天堂一区人妻| 日日撸夜夜操| 久久久久综合激动五月天| 亚洲V国产V欧美V久久久久久| 91婷婷五月天综合视频| 丁香五月婷婷综合精品素人| 欧美日韩999| 草婷婷在线| 亚洲视频无| 久久久中文| 国产AV国片偷人妻麻豆| 婷婷爱五月| 婷婷综合久久| 久久成人亚洲欧美电影| 深爱激情六月天| 思思视频久久| 激情九色| 久久九九激情五月天 | 成人丁香五月| 丁香五月天亚洲综合| 色婷婷激情四射视频| 秋霞性爱AV| 亚洲视频在线观看| 亭亭色色五月天| 99久久思思| 影音先锋天天日| 天天综合精品| 五月丁香综合激情网| 狠狠人妻久久久久久综合丁香| 久99久视频精选| 久久这里有精品| 日韩99精品| 婷婷综合激情| 激情爱爱网站超大免费| 日韩啪啪视品| 少妇AB又爽又紧无码网站| 丁香五月婷婷综合91| 五月天成人在线视频网站| site:hcxsz888.com| 久久蜜臀婷婷| 香蕉久操| 欧美搡BBBBB摔BBBBB| 丁香五月天堂| 丁香九月婷婷色| 久热婷婷| 日韩成人AV在线播放| 爆乳熟妇一区二区三区四区| 99九九久久| 国产亚洲精品久久一区二区三区| 天天天天天操| 日韩色色网| 伊人三级激情| 人妻中文字幕精品| 97自拍视频网| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 国产在这里只有精品| 久久综合五月| 伍月激情天| 亚洲午夜av| 综合一啪| 66色在线日韩| 日韩在线五月天婷婷| 第2色五月婷| 日本色天堂| 91操人人操| 五月天激情综合网| 日本色婷婷| 九九热欧美| 亚洲色婷婷五月天| 激情网五月天| 丁香五月欧美午夜视频| www激情五月天| 久久五月丁香综合17C| 天天开心天天色| 天天操加勒比| 五月婷色| 五月婷婷激情综合| 9久久精品| 五月丁香香蕉| 色婷婷小说网| 另类图片五月天| 人人草人人舔| 丰满老熟妇BBBBB搡BBB| 北京熟妇搡BBBB搡BBBB| 草草夜夜操| 强壮公让我夜夜高潮A片视频| 色色射| 亚洲无码另类| 99热这里都是精品| 在线18av | 成人丁香| 丁香六月婷婷色XXXX| 2w在线视频| 色婷婷五月综合在线| 激情五月婷婷在线区| 日韩激情婷婷五月天| 日本www五月婷婷| 成人色色综合| 九九亚洲视频| 亚洲天堂啪啪| www.久久久久| 91免费试看| 久久婷婷大香蕉| 99免费在线视频| 婷婷五月天综合AV| 丁香五月久久| 另类小说五月天综合网| 天天干天天干天天干天天干天| 婷婷中文网站| 超碰成人在线观看| 五月丁香六月婷婷亚洲激情综合| 色五月色五天色情网| 天天插天天插天天插| 色深爱五月| 亚洲人成色A777777在线观看 | 91丁香五月| 九九色人| 噜噜噜噜在线| site:pnnrt.com| 狠狠干综合网| 免费观看全黄做爰的视频| AV片在线观看| 九九99精品视频在线观看| 丁香五月综合激情久久潮喷| 久久五月婷天天干| 超碰97干| 欧美日本韩国亚洲| 欧美99视频| 成人做爰A片免费看网站找不到了| 婷婷五月免费观看| 激情开心五月天| 色九月| 97精品人人A片免费看| www.99精品日操伊人乱碰在线| 五月天大香蕉AV| 色啪影院| 五月天婷婷在线AN| 亚洲成人免费电影| www.久久久久久久久久.com| 久久久婷婷| 日日噜噜久久婷婷五月天| 久久与婷婷| 天天天天天操| 日本美女上人| 91日综合欧美| 色亚洲婷婷| 国产操碰| 99九九在线视频| 狠狠色激情在线| 色五月婷婷一二| 五月激情站| 99碰碰碰| 日本婷婷综合精品| 婷婷射丁香| 老师的粉嫩小又紧水又多A片视频| 久久日九九| 亚洲久久视频| 综合久| 男女啪啪视频久 9| 婷婷97狠狠干| 久久99网站| 丁香五月婷婷动漫| 五月婷亚洲精品AV天堂| 97超级碰碰碰| 2025天天操| 人妻激情综合| 色九九一二| 婷婷美女精品视频| 午夜五月天| 婷婷丁香91| 婷婷五月天无码熟女| 综合网啪| 国产超碰av| 亚洲AV激情五月综合网| 一本久道综合色婷婷五月| 色色亚洲五月天| 久色| 五月天社区| 深爱激情综合网| 国产人妻777人伦精品HD| www色色com| 激情图片五月天| 香蕉网婷婷| 色婷婷五月六月丁香综合视频| 夜夜撸天天操| 久久久久久9热不雅视频| 99综合婷婷五月| 久久综合爱| 超碰97久久| VfJxEwPH| AV大片在线观看| 丁香五月婷婷乱| 五月天成人免费视频| 综合大香蕉| 91人人操人人看| 色色色免费视频| 色五月婷婷777| 五月婷婷激情四季| 久热婷婷| 五月天婷婷色播综合在线| 色色com| 色一情一乱一乱一区91| 丁香色综合| 99热综合在线| 激情五月丁香婷婷| 能看的av片| http://www.com久久久精品一区| 色婷婷九月| 播五月,色五月,开心五月播放器| 日本97在线| 人妻激情在线| 五月亭亭六月色| 丁香五月综合| 激情五婷网| 国产色视频网站2| 天天综合 99久久婷婷| 五月激情婷婷综合| 婷婷激情五月| 五月丁香六月激情综合欧美| 91porn一起草| 97av在线视频| 国产婷婷五月天| 久久99日本精品视频免费观看| 六月激情久久| 天天情天天狠天天透| 天天日天天爽| 牛牛碰免费| 日本视频欧美观看免费| 五月天播播| 激情综合网,婷婷五月天| 波多婷婷久久| 九热视频在线精品15| 九九九这里只有精品| 丁香网站| 综合婷婷五月天| 五月丁香六月色婷婷综合五月天| 久久婷婷免费| 五月婷婷熟女| 天天添天天摸天天天天做| 久久青青日本视频| 亚洲操逼网| 这里只有精品免费视频在线观看| 丁香成人五月天| 五月色欧洲| 激情AV中文| 99视频在线精品| 久久性爰视频这里只有精品| 97综合在线| 5月丁香美女影院| 手机旧版看人妻1025| 色婷婷视频| 激情五月瑟瑟| 色噜噜综合网| 久久久无码精品成人A片小说| 99色这里| 99久超碰| 五月精品99综合| 亚洲成人AV在线观看| 无码激情精品色婷婷久久久久| 久久久久久久久久久44| 欧美成人AAA片一区国产精品| 丁香五月婷老师| 日日噜狠狠色综| 国产综合丁香五月天| 欧美性爱五月天| 人妖色AV色综合| 五月丁香色色网| 婷婷亚洲五月| 亚洲色vA| 青青操绿aaa一区日v| 欧美日韩国产日本精品四虎网网站物| 精品人妻午夜一区二区三区四区 | 色综色网| 午夜天堂啪啪| 成人AV在线电影| 婷婷丁香人妻天天久久| 五月天婷婷六月| 久久激情五月婷婷| 98热精品| 婷婷五月天av小说| 成人无码精品1区2区3区免费看| 中美日韩成人在线| 四色五月婷婷| 五月丁香亚洲婷婷| 丁香五月综合在线播放| 天天操夜夜啊| 五月天婷婷色色| 懂色av蜜臀av粉嫩av永陈冠希| 精品国产AV色一区二区深夜久久| 久久婷婷影院| 五月天com| 六月丁香婷婷综合狠狠爱夜夜爱| 玖玖精品视频| 日本99视频精品免费播放| 天天碰夜夜操| 第四色在线观看| 丁香五月在线| 99热91| 欧美日本黄色| 人人操插| 秋霞性爱AV| 久大香蕉| 中文字幕AV网址| 能看的av网站| 婷婷五月天AV| 婷婷色综合| 丁香色五月婷婷| 欧美精品熟女一区二区| www.av骚货| 开心五月婷婷在线视频免费观看| 天天操天天操综合| www.狠狠操.com| 婷久看人爽| 这里只精品| 天天色·欧美| www.夜夜夜| 久久婷出差欧美色两性综合网| 人人爱干人人爱草| 性小说五月天| 五月婷丁香亚洲| 亚洲综合婷婷五月| 开心五月色婷婷综合开心网| 色婷婷五月中文字幕在线dvd| 激情网五月婷婷| 五月香六月婷| 婷婷综合在线| 99啪| 色五月欧美| 婷婷五月丁香五月| 欧美综合五月天婷婷tin| 日韩在线看AV| 91猫咪国产在线播放| 97碰碰人人视频| 亚洲无aV在线中文字幕 | 丁香五月婷婷影院| 9l视频自拍9l九色9l成人| 国产.亚洲.欧洲视频在线| 婷婷五月综合久久中文字幕| 六月综合婷婷开心伊人| 777影视理论片大全在线观看| 国产欧美精品AAAAAA片| 精品自拍97| 色99婷婷五月天| 中文字幕综合| 色A网| 婷婷五月AV| 九热视频| 另类天堂| 婷婷丁香成人色综合| 久热伊人在91| 97在线精品| 天天免费成年人视频| www.夜夜騎夜夜狠| 99热久草| 99精品国产在热久久| 国产干逼片| 91视频免费后入强操| 9色在线| 涩涩五| 五月天亭亭俺也| 91婷婷丁香| 午夜天堂一区人妻| 亚洲AV成人无码电影| 婷婷在线视频| 蜜桃五月天| 97久久久| 中文不卡av| 99热国内精品| A A色色| www.婷婷.com| 五月天久久色| 五月婷婷久久久| 噜噜噜噜在线| 久久久18| 欧美激情-区二区三区| 中文字幕在线免费观看视频| 丁香五月激情婷婷| 这里只有精品2| 婷婷九九色| 婷婷成人综合| 久热免费| 天天干在线播放| 99精品久久久| 色婷婷AV久久久久久久| 色五月婷婷久久| 六月婷婷AV| 另类综合激情| 99啪啪视频| 久久99免费视频网站| 丁香婷婷激情综合五月激情| 深爱五月激情五月| 91男女视频在线观看| 五月丁香婷中文| 色色网五月激情| 狠狠干,狠狠操| 五月天婷婷情色| 五月中旬婷婷丁香六| 91欧美| 大香蕉Av在线| 激情丁香五月婷婷啪啪| 天天日日夜夜| 99热99在线| 五月丁香六月激情在线| 国产精品成av人在线视午夜片| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 婷婷操久久| 九九色综合视频| 被强行糟蹋的女人A片| 99ri在线观看视频| 日本天天操| 99色综合久久| 激情综合婷婷| 人人爱操| 国产精品第一国产精品| 久操大香蕉| 五月婷婷激情日本| 婷婷日本色| 综合色色婷婷| 国产一级视频a| 天天舔夜夜操www com| 99热自拍| 激情性爱五月天| 欧美色色色色色色| 99热九九在线| 五月婷在线观看| 久草视频大香蕉99| dingxiangtingtingliuyue| 影音先锋女人AA鲁色资源| 丁香婷最新动态| 中文无码婷婷| 日本啪啪天堂| 综合色播| 激情综合五月婷| 丁香五月成人社区| 丁香婷婷激情综合五月激情| 夜夜操天天干| www久久99com| 开心五月天激情网| 精品无码色欲AV| 高清一区二区三区日本久| 天天天天天天天干| 噼里啪啦在线观看免费完整版视频| 欧日美女Va| 婷婷色中文字幕| 久久黄色网扯| 青柠影视免费高清电视剧| 五月婷婷成人w| 在线播放人妻| 激情五婷网| 一级无码作爱片| 66成人网| 9精品在线| 五月天婷婷激情在线色图| 五月丁香美女视频| 亚洲精品无码一区二区| 丁香婷停五月激情综合深爱| 一本到不卡高清DVD| 拳交大逼| 久久久久8888| 五月婷婷激情| 热99re| 一级性感毛片| 婷婷六月啪啪| 六月综和久久| 日本一区二区三区精品视频| 99色在线观看视频| 人人人操Av| 在线观看免费观看在线9久| 99视频热| 亚洲综合另类| 超级碰碰碰久久网站视频| 夜夜爽天天爽| www,色婷婷| 色丁香婷婷| 97碰碰电影| 思思久久精品| 婷激情五月| 色婷婷情片| 夜夜操夜夜操| 夜夜撸日日骑| 激情五月综合网最新| 91久久久久久| 啪啪小说五月天| 成人在线网| 俺也去五月婷婷丁| 国产精品电影网| 五月伊人综合| 激情五月天情色| 日本三级韩三级99久久| 激情婷婷另类| 狠狠狠狠狠狠色| 成AV人片一区二区三区久久| 五日激情综合| 天天日狠狠| 五月婷婷六月丁香首页| 色色热| 四月丁香五月婷婷久久| 六月婷婷五月丁香首页| 五月天色色色色色| 丁香六月天| 色久综合| 五月丁香六月综合激情网| 久久婷婷91| 久久久久久五月天| 99这里| 色五月人妻| 人人爱天天摸摸天天爱| 91凹凸在线| 天天插操| 综合激情婷婷| 日本视频99| 五月婷婷激情综合视频| 色五月婷婷狠狠撸| 婷婷六月视频| 热99.com婷婷| 99国产精品白浆在线观看免费| 日日夜夜天天| 狠狠搞亚洲| 色狠狠999综合网| 丁香婷婷超碰 | 九九热99免费视频| 婷婷五月天久| WWW.久久.COM| 五月综合视频| 99在线观看视频| 婷婷开心久久| 综合五月天天天天天五月| www色色com| 丁香六月婷婷色播| 超碰免费人人肏| 99热精品在线在线| 欧美黄色AA片哗啦啦啦| 色欲影香| 伊人婷婷五月天| 丁香婷婷中文字幕| 91婷婷五月天综合视频| 丁香婷婷五月天网站| 翔田千里 50岁 无码| 97超碰在线观看免费| 免费黄网不卡AV| 色噜噜狠狠色综无码久久合欧美| AV九九| 婷婷五月综激情| 一本色道久久综合狠狠躁小说| 伊人五月天婷婷| 丁香五月日本| 无码G高清天| 五月天婷婷三级黄| 这里只有精品在线视频精品| 中文字幕永久免费| 亚洲AV网站| 亚洲熟女色| 97影院一级片| 婷婷五月综激情| 色婷婷国产精品综合在线观看| 色吊丝av中文字幕| 亚洲婷婷综合视频| 激情文学 综合 九月| 成人小说色图婷婷五月| 色婷婷播放| 亚洲国产黄色电影| 久久99免费视频网站| 超碰人人在线观看| 热久91| 中文在线视频久9| 国产亚洲成人综合| 婷婷激情四射五月天| 色99超碰| 九九综舍久久| 99久在线精品| 精品99这里有| 激情婷婷综合| 99福利视频| 男人的天堂五月丁香| 亚洲色激情| 日日夜夜狠狠操| 色五月亚洲| 中文字幕人妻在线| 五月丁香777| 久热伊人| 五月综合激情啪啪啪啪啪| 香蕉曰比| 91视频久久久| 无码人妻激情| 色色啊| 色婷婷影音| 激情综合色播| 97影院一级片| 色色色网站| A片试看120分钟做受图片| 99久久97| 激情av在线| 成久综合视频| 操操操操操电影网| 国产色色视频| 五月天婷婷激情小说电影| 开心婷婷五月| 丁香婷婷激情四射五月| 欧美日本黄色| 色色色精品无码区| 久 久9 9 热 视 频| 亚洲成人超碰| 天天日天天插| 日本操B片| 国产9色在线/日韩| 婷婷激情五月天在线视频| 99热这里只有是亚洲国产| 超碰高清在线| 91啪啪| 久久六月综合| 99热婷婷| www.亭亭五月天| 国産精品| 久久久天堂国产精品女人| 91人人妻人人操| 五月丁香六月激情综合网| 99精品在线下载| 亚洲色夜| 国产精品久久久久久久久久| 色婷婷在线影院| 台湾综合丁香五月蜜桃| 日本久久爱| 天天干天天干天天干天天干天| 影音先锋91在线资源站| 丁香五月激情网| 岛国av网| 婷婷五月天堂| 大香蕉AV电影在线| 丁香五月色色| 夜夜操天天爽| 思思热精品在线| 影音先锋AV男人站| 日本女天天爽| 色久综合| 丁香久久在线| 噜噜噜狠狠色综合| 91av无码| 免费色色色| 99热综合色图| 亚洲欧美综合7777色亭亭| 五月天久久婷婷| 性生活久久朋友人妻| 99热在线精品观看| 九九综合图片网| 婷婷伊人激情婷婷| 五月色网| 九九美女视频| 天天日夜夜夜操操操操| 亚洲超碰在线| 久草网大香视频| 丁香伊人综合| 色播五月| 色婷婷777狠狠| 99热99热99热99热| 亚洲乱码精品久久久久..| 婷婷五月丁香综合激情| 色噜噜婷婷| 国产亚洲精品AAAAAAA片| 五月婷婷熟女| 99热精品免费| 久在线综合69| 能看的AV网站| 五月婷婷丁香六月| 色色丁香五月天| 天天爱综合网| 97干在线免费| 国产熟女日日骚五月丁香爱| 久久99网站| 操久久网| 在线观看免费狠狠色丁香香综合| 91 久热| 开心五月综合激情综合五月| 色色色999| 超碰免费在线| 久久久久久久97| 99日精品视频| 99视频这里有精品| 去色色五月天| 色综合天天天天做夜夜| 日本无码专区| 色五月视频无码播放| 婷婷性爱| 精品国产人人爱人人| 婷婷午夜| 91超级碰碰碰| 97色色色色色| 久久免费精品小视频| 色婷婷香蕉| 色婷婷www| 999激情视频| 亚洲午夜电影| 香蕉狠狠爱视频| 性生活视频98791| 91综合色| 五月丁香无码| 亚洲中文字幕AV| 超碰在线免费| 99九九精品| 精品乱码视频| 五月激情综合网| 综合激情五月丁香9999久久精| 色色99| www.99热最新视频8| 激情婷婷五月天| 熟女五月天久久综合| 成人国产欧美大片一区| 我爱婷婷五月天综合88| 激情五月天婷婷播播久久综合91| 99热只有这里才是精品| 在线日韩av| 激情五月影院| 五月天婷婷基地综合网| 亚洲综合99| 人人草成人视频| 欧美大肥婆大肥BBBBB| 99色热视频| 国内久久婷婷| 六月激情网| 久久东京热婷婷五月| 99久在线精品99re8| 亚洲性爱99| 久久久久久久11111111111| 婷婷丁香色五月久久88| 国产黄色一级片| 超碰超碰在线| 性色播| 思思久久久婷婷| 久久性爱视频网站| 亚洲高清在线| 欧美顶级少妇做爰HD| 噜噜噜噜噜色| 91热视频色网站| 天天日日夜夜| 美国天天日天天操| 嫩草视频观看| 五月激情综合网| 人人看人人草人人摸| 九九九九九九毛片| 青草五月天| 国产精品蜜臀99| 六月婷婷网| 五月婷婷激情综合| 色吊操色妞| 久久看婷婷| 丁香六月天色婷婷| 色五月大香蕉| 婷婷五月天你懂的| 夜夜骑日日夜夜| 120分钟婬片免费看| 99视频日韩| 中文无码婷婷| 五月天激情四射| 26uuu亚洲欧美日本| 婷婷天堂站| 丁香色婷婷色手机免费在线| 91久久综合亚洲噜噜成人在线| 开心激情站| 丁香五月激情在线| 久久久人妻人伦| 丁香av网| 中文av网站| 超碰1999| 888精品福利地址| 久热9热| 婷婷五月综合激情| 亚洲视频色婷婷| 五月天婷婷午夜丁香| 色yeye色综合| 激情五月婷婷| 99九九视频精彩在线| 人人摸人人射| 91avse| 丁香色色五月| 五月天社区| 91日视频| 六月狠狠综合| 99视频色在线观看| 大香蕉七区| 日韩av变天就操逼不卡区| 五月天婷婷av| 色五月婷婷影院| 激情综合综合综合| 在线观看免费狠狠色丁香香综合| 久久婷婷九月国产精品| 婷婷五月天丁香花| 99爱视频在线观看| 九色视频这里只有精品| www.99视频| 丁香五月大香蕉AV| 日韩在线看AV| 九九热视频在线观看| 激情五月天网站| 五月婷婷自拍视频| 综合婷婷六月| 丁香桃色网| 久久久久久久久久91| 色五月色图| 婷婷六月色开| 亚洲免费电影2| 26uuu最新地址| 激情五月九九九| 五月丁香六月玩女人| 五月激情综合性爱| 五月丁香激情综合啪啪| 热久久66| 伊人大香五月天| 成人精品在线| 亚洲色人妻| 99热 在线播放| 丁香五月婷婷五月基地| 搡BBBB搡BBB搡五十| 亭亭玉月丁香| 99热婷婷| 超碰免费成人| 国产精品成人AV在线| 五月天综合色| 久久狠狠干| 天天天天爽爽天干| 日日操,天天操| 亚洲久久婷婷丁香五月天| 久久久er热| 日韩三级片一区二区| 色综合婷婷| 亚洲综合婷婷| 超碰免费人人| 超碰人人草| 99黄色性生活| 国产激情久久| 五月6香色婷婷视频| 久久99久久久久久| 亚洲精品视频在线播放| 五月婷婷99热| 我爱大香蕉| 色婷婷av在线观看| 色情综合网| 丁香五月激情六月欧亚激情综合导航| 久久综合性| 天天久久人人| 快乐婷婷五月天| 精品国产人人爱人人| 天天爽天天日人人爱| 狠狠狠狠免费| 人人干AV| 色欲天天综合| 五月丁香中文字幕| 五月丁香六月色| www.maotanji.com| 99热日韩| 久操热线| 国产亚洲精品久久久久苍井松| 国产熟妇乱子伦hd| 99re资源在线视频导航| 大香蕉在线观看9| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 色五月婷婷激情基地| 99这里有精品视频| 天天干狠狠艹| 五月丁香五月天现场视频| 夜夜操,天天撸| 欧美影院| 一级性爱视频| 无码免费人妻A片AAA毛片西瓜 | 69热91天堂| 97超碰在线观看免费| 六月婷欧美| 国产67194| 欧美天天干五月丁香| 五月婷婷开心六月激情小说| 99热在线只有精品| 久久激情五月网| 丁香六月在线综合| 亚洲成人五月天| 丁香婷婷成人网站| 五月丁香久久综合精品| 日本综合久久| 免费成人中文字幕| 亚洲欧美日韩VIP| 亚洲综合色色色| 天天日天天舔| 婷婷五月天资源| 婷婷九月激情| 婷婷色综合| 久久伊人9| 色欲色香综合网站| 色天堂婷婷| 激情综合亚洲| 超碰免费在线| 久久伊人9| 99热在线这里| 五月丁香色婷婷熟女| 色七色九九| 噜噜噜噜婷婷五月天| 99热天堂| 99啪视频在线观看| 99只有精品9| 高潮毛片又色又爽免费| 99天堂网| 婷婷五月天电影网 | 午夜精品人妻无码一区二区三区| 五月天婷婷色| 欧美色99| 久久98热re| 99.N在线视频| 激情五月天激情五月天| 欧美婷婷色五月| 欧美成人网婷婷综合在线| 久久五月六月| 精品视频这里只有精品| 色优久久| 色婷婷WWW| 婷婷五月天AV网| 亚洲综合激情五月久久| 色综合久久44| 久久久WWW| 五月丁香色| 狼人久草| 伊人影音无码一区二区三区| 久9热| 日本乱论99| a69在线视频| 久热黄色| 九月婷婷人人操人人舔人人爱| 欧美激情丁香五月| 久久久噜噜噜久久人妻| 欧美性生交A片免费看| 久久网日本| 五月婷婷激情久久| 国外亚洲成AV人片在线观看| 欧美大香蕉视频| 探花搜索结果 - 黄上黄| 天天爽天天弄| 婷婷的99视频网站| 69人人操人人爽| 色婷婷激情小说网| 新97人人上人人| 亚洲第二AV| 五月丁香好婷婷A片网 | 国产精品激情五月天色婷婷| 五月丁香婷婷综合网| 丁香五月婷婷欧美激情-中文天堂最新版在线观看| 激情WWW| 亚洲激情久久| 日本啪啪天堂| 丁香五月婷婷日本| 99碰碰。| 色情播放| www.狠狠| 99色精品视频| 东京热伊人| 精品人妻在线| 久久开心五月天激情| 激情亚洲五月| 五月丁香在线婷婷蜜桃| 99熟女| 色色热99| 婷婷六月丁| 亚洲网视屏| www.jiujiujiu| 夜夜骑福利资源| 日韩在线视频网站| 嫩草AV久久伊人妇女超级A| 色九月综合| 久久99精品视频| 开心五月婷婷激情网| 综合网啪| 全部老头和老太XXXXX| 综合久久伊人| 婷香五月网在线| 婷婷五月丁香伊人| 四色99久久| 激情五月综合| 包操45分钟网站| 九九色逼| 无码网| 成人综合网站| 婷婷五月天xxx| 国产熟妇的荡欲午夜视频| 夜夜爽天天爽| 亚洲天天操| 五月婷婷深深的爱| 五月天婷婷色综合| 丁香婷最新动态| 色偷偷五月天| 狠色综合网| 日韩成人综合网| 这里只有精品视频国产| 色色婷婷五月| 色婷婷丁香五月在线| 天天射影院| 六月婷色六月| 九九爱精品网站| 99热这里只有精品2| 激情啪啪五月天| 婷婷五月丁香超碰| 99这里有精品视频| 伊人五月天在线| 夜夜躁狠狠 | 秋霞学生妹一二级| 婷婷五月天综合久久| 玖玖色综合色| 婷婷色五月噜噜| 九九热re99re6在线精品| 综合啪啪| 91操在线视频| 可以直接看的av| 婷婷狠狠久久| 操91综合网| 九九这里有精品| 亚洲综合五月天婷婷丁香| 色五月激情| yazhouzonghesese| 婷婷丁香婷婷97| 97色在线观看视频| 天天干,天天舔| 91夫妻视频| 激情五月婷婷丁香| 婷婷五月天奸女| 五月综合久久| 丁香五月天天高清在线| 91chinese 在线| 久久婷婷视频| 色色色色色色综合| 久操97| 亚洲最大视频| 狠狠干五码| 天天肏高清在线| 日韩另类| 精品国产va久久久| 久9热视频在线观看| 五月丁香婷婷啪啪| 五月久久丁香| 婷婷色系婷色| 99在线精品免费视频| 色色亚洲无码| www.激情| 中文久久久人妻| 婷婷伊人| 亚州欧美国产久精国产99综合视频| 五月婷婷av| 丁香五月天欧美成人| 99热色精品| 色色网站在线免费观看视频| 色五月综合网| 久色视频首页| 久操人妻|