{"id":255,"date":"2024-11-08T15:19:34","date_gmt":"2024-11-08T07:19:34","guid":{"rendered":"https:\/\/www.linn.pro\/?p=255"},"modified":"2024-11-08T15:19:34","modified_gmt":"2024-11-08T07:19:34","slug":"precedent","status":"publish","type":"post","link":"https:\/\/www.linn.pro\/zh\/\u5f00\u53d1\u8005\/\u6a21\u677f\/255","title":{"rendered":"\u5148\u4f8b"},"content":{"rendered":"<h5 class=\"mb-2 text-md font-semibold dark:text-foreground\">\u6846\u67b6<\/h5>\n<ul>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/nextjs.org\/\" target=\"_blank\" rel=\"noopener\">Next.js<\/a>\u00a0- React \u6846\u67b6\u7528\u4e8e\u6784\u5efa\u6027\u80fd\u5353\u8d8a\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u4e3a\u5f00\u53d1\u4eba\u5458\u5e26\u6765\u6700\u4f73\u4f53\u9a8c<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/authjs.dev\/\" target=\"_blank\" rel=\"noopener\">Auth.js<\/a>\u00a0- \u901a\u8fc7 Google\u3001Twitter\u3001GitHub \u7b49\u63d0\u4f9b\u5546\u8f7b\u677e\u5904\u7406\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u3002<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/www.prisma.io\/\" target=\"_blank\" rel=\"noopener\">Prisma<\/a>\u00a0- \u9002\u7528\u4e8e Node.js \u7684 Typescript \u4f18\u5148 ORM<\/li>\n<\/ul>\n<h5 class=\"mb-2 text-md font-semibold dark:text-foreground\">\u5e73\u53f0<\/h5>\n<ul>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/vercel.com\/\" target=\"_blank\" rel=\"noopener\">Vercel<\/a>\u00a0- \u4f7f\u7528 git \u8f7b\u677e\u9884\u89c8\u548c\u90e8\u7f72\u66f4\u6539<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/vercel.com\/postgres\" target=\"_blank\" rel=\"noopener\">Vercel Postgres<\/a>\u00a0- \u8fb9\u7f18\u65e0\u670d\u52a1\u5668 Postgres<\/li>\n<\/ul>\n<h5 class=\"mb-2 text-md font-semibold dark:text-foreground\">\u7528\u6237\u754c\u9762<\/h5>\n<ul>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/tailwindcss.com\/\" target=\"_blank\" rel=\"noopener\">\u5c3e\u98ce CSS<\/a>\u00a0- \u5b9e\u7528\u81f3\u4e0a\u7684 CSS \u6846\u67b6\uff0c\u7528\u4e8e\u5feb\u901f\u5f00\u53d1\u7528\u6237\u754c\u9762<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/www.radix-ui.com\/\" target=\"_blank\" rel=\"noopener\">Radix<\/a>\u00a0- \u6a21\u6001\u3001\u5f39\u51fa\u5f0f\u7b49\u539f\u578b\uff0c\u6253\u9020\u5353\u8d8a\u7684\u7528\u6237\u4f53\u9a8c<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/framer.com\/motion\" target=\"_blank\" rel=\"noopener\">\u6846\u67b6\u8fd0\u52a8<\/a>\u00a0- \u7528\u4e8e React \u7684\u52a8\u4f5c\u5e93\uff0c\u53ef\u8f7b\u677e\u4e3a\u7ec4\u4ef6\u5236\u4f5c\u52a8\u753b<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/lucide.dev\/\" target=\"_blank\" rel=\"noopener\">\u5362\u897f\u5fb7<\/a>\u00a0- \u7cbe\u7f8e\u7b80\u6d01\u3001\u50cf\u7d20\u5b8c\u7f8e\u7684\u56fe\u6807<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/nextjs.org\/docs\/basic-features\/font-optimization\" target=\"_blank\" rel=\"noopener\"><code>\u4e0b\u4e00\u9875\/\u5b57\u4f53<\/code><\/a>\u00a0- \u4f18\u5316\u81ea\u5b9a\u4e49\u5b57\u4f53\u5e76\u79fb\u9664\u5916\u90e8\u7f51\u7edc\u8bf7\u6c42\uff0c\u4ee5\u63d0\u9ad8\u6027\u80fd<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/nextjs.org\/docs\/app\/api-reference\/functions\/image-response\" target=\"_blank\" rel=\"noopener\"><code>\u56fe\u50cf\u54cd\u5e94<\/code><\/a>\u00a0- \u5728\u8fb9\u7f18\u751f\u6210\u52a8\u6001\u5f00\u653e\u56fe\u8c31\u56fe\u50cf<\/li>\n<\/ul>\n<h5 class=\"mb-2 text-md font-semibold dark:text-foreground\">\u94a9\u5b50\u548c\u5b9e\u7528\u7a0b\u5e8f<\/h5>\n<ul>\n<li><code>\u4f7f\u7528\u4ea4\u96c6\u89c2\u5bdf\u8005<\/code>\u00a0- React \u94a9\u5b50\u7528\u4e8e\u89c2\u5bdf\u5143\u7d20\u4f55\u65f6\u8fdb\u5165\u6216\u79bb\u5f00\u89c6\u53e3<\/li>\n<li><code>\u4f7f\u7528\u672c\u5730\u5b58\u50a8<\/code>\u00a0- \u5c06\u6570\u636e\u4fdd\u5b58\u5728\u6d4f\u89c8\u5668\u7684\u672c\u5730\u5b58\u50a8\u4e2d<\/li>\n<li><code>\u4f7f\u7528\u6eda\u52a8<\/code>\u00a0- \u7528\u4e8e\u89c2\u5bdf\u6eda\u52a8\u4f4d\u7f6e\u7684 React \u94a9\u5b50 (<a class=\"dark:text-foreground\" href=\"https:\/\/github.com\/steven-tey\/precedent\/blob\/main\/components\/layout\/navbar.tsx#L12\" target=\"_blank\" rel=\"noopener\">\u8303\u4f8b<\/a>)<\/li>\n<li><code>nFormatter<\/code>\u00a0- \u683c\u5f0f\u5316\u6570\u5b57\u7684\u540e\u7f00\u5982\u00a0<code>1.2k<\/code>\u00a0\u6216\u00a0<code>1.2M<\/code><\/li>\n<li><code>\u5927\u5199<\/code>\u00a0- \u5c06\u5b57\u7b26\u4e32\u7684\u7b2c\u4e00\u4e2a\u5b57\u6bcd\u5927\u5199<\/li>\n<li><code>\u622a\u5f62<\/code>\u00a0- \u5c06\u5b57\u7b26\u4e32\u622a\u65ad\u5230\u6307\u5b9a\u957f\u5ea6<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/www.npmjs.com\/package\/use-debounce\" target=\"_blank\" rel=\"noopener\"><code>\u4f7f\u7528-\u53cd\u5f39<\/code><\/a>\u00a0- \u5bf9\u51fd\u6570\u8c03\u7528\/\u72b6\u6001\u66f4\u65b0\u8fdb\u884c\u53bb\u6296<\/li>\n<\/ul>\n<h5 class=\"mb-2 text-md font-semibold dark:text-foreground\">\u4ee3\u7801\u8d28\u91cf<\/h5>\n<ul>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/www.typescriptlang.org\/\" target=\"_blank\" rel=\"noopener\">TypeScript<\/a>\u00a0- \u7aef\u5230\u7aef\u7c7b\u578b\u5b89\u5168\u9759\u6001\u7c7b\u578b\u68c0\u67e5\u5668<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/prettier.io\/\" target=\"_blank\" rel=\"noopener\">\u66f4\u6f02\u4eae<\/a>\u00a0- \u6709\u4e3b\u89c1\u7684\u4ee3\u7801\u683c\u5f0f\u5316\uff0c\u5b9e\u73b0\u4e00\u81f4\u7684\u4ee3\u7801\u98ce\u683c<\/li>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/eslint.org\/\" target=\"_blank\" rel=\"noopener\">ESLint<\/a>\u00a0- \u9002\u7528\u4e8e Next.js \u548c TypeScript \u7684\u53ef\u63d2\u62d4\u8fde\u63a5\u5668<\/li>\n<\/ul>\n<h5 class=\"mb-2 text-md font-semibold dark:text-foreground\">\u6742\u9879<\/h5>\n<ul>\n<li><a class=\"dark:text-foreground\" href=\"https:\/\/vercel.com\/analytics\" target=\"_blank\" rel=\"noopener\">Vercel \u5206\u6790\u516c\u53f8<\/a>\u00a0- \u4ee5\u9690\u79c1\u53cb\u597d\u7684\u65b9\u5f0f\u8ddf\u8e2a\u552f\u4e00\u8bbf\u5ba2\u3001\u9875\u9762\u6d4f\u89c8\u91cf\u7b49\u4fe1\u606f<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Frameworks Next.js\u00a0\u2013 React framework for building performant apps with the best developer experience Auth.js\u00a0\u2013\u00a0Handle user authentication with ease with providers like Google, Twitter, GitHub, etc. Prisma\u00a0\u2013\u00a0Typescript-first ORM for Node.js Platforms Vercel\u00a0\u2013\u00a0Easily preview &amp; deploy changes with git Vercel Postgres\u00a0\u2013\u00a0Serverless Postgres at the Edge UI Tailwind CSS\u00a0\u2013\u00a0Utility-first CSS framework for rapid UI development Radix\u00a0\u2013\u00a0Primitives like modal, popover, etc. to build a stellar user experience Framer Motion\u00a0\u2013\u00a0Motion library for React to animate components with ease Lucide\u00a0\u2013\u00a0Beautifully simple, pixel-perfect icons next\/font\u00a0\u2013\u00a0Optimize custom fonts and remove external network requests for improved performance ImageResponse\u00a0\u2013 Generate dynamic Open Graph images at the edge Hooks and Utilities useIntersectionObserver\u00a0\u2013 React hook to observe when an element enters or leaves the viewport useLocalStorage\u00a0\u2013\u00a0Persist data in the browser's local storage...<\/p>","protected":false},"author":1,"featured_media":256,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[107],"tags":[128],"class_list":["post-255","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-template","tag-precedent"],"_links":{"self":[{"href":"https:\/\/www.linn.pro\/zh\/wp-json\/wp\/v2\/posts\/255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linn.pro\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linn.pro\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linn.pro\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linn.pro\/zh\/wp-json\/wp\/v2\/comments?post=255"}],"version-history":[{"count":0,"href":"https:\/\/www.linn.pro\/zh\/wp-json\/wp\/v2\/posts\/255\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.linn.pro\/zh\/wp-json\/wp\/v2\/media\/256"}],"wp:attachment":[{"href":"https:\/\/www.linn.pro\/zh\/wp-json\/wp\/v2\/media?parent=255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linn.pro\/zh\/wp-json\/wp\/v2\/categories?post=255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linn.pro\/zh\/wp-json\/wp\/v2\/tags?post=255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}