首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 NextJS 和 TailwindCSS 重构我的博客

下面是文章详情页的主体代码 // pages/posts/[slug].js import { useRouter } from 'next/router' function Post({ post...中的id 获取文章详情 export async function getStaticProps({ params }) { // 如果页面的路由是 /posts/1, 这 params.id 的值就是...与 TypeORM 对比 TypeORM 是一种传统的 ORM,它将表映射到模型类。这些模型类可用于生成 SQL 迁移。然后,模型类的实例在运行时为应用程序的 CRUD 查询提供一个接口。...它使用 Prisma Schema,以声明的方式定义应用程序模型。然后使用 Prisma Migrate 命令, Prisma Schema 会生成 SQL 迁移并根据数据库执行它们。...Prisma CRUD 查询由 Prisma Client 提供,这是一个针对 Node.js 和 TypeScript 的轻量级且完全类型安全的数据库客户端。

2.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用 NextJS 和 TailwindCSS 重构我的个人博客

    下面是文章详情页的主体代码 // pages/posts/[slug].js import { useRouter } from 'next/router' function Post({ post...中的id 获取文章详情 export async function getStaticProps({ params }) { // 如果页面的路由是 /posts/1, 这 params.id 的值就是...与 TypeORM 对比 TypeORM 是一种传统的 ORM,它将表映射到模型类。这些模型类可用于生成 SQL 迁移。然后,模型类的实例在运行时为应用程序的 CRUD 查询提供一个接口。...它使用 Prisma Schema,以声明的方式定义应用程序模型。然后使用 Prisma Migrate 命令, Prisma Schema 会生成 SQL 迁移并根据数据库执行它们。...Prisma CRUD 查询由 Prisma Client 提供,这是一个针对 Node.js 和 TypeScript 的轻量级且完全类型安全的数据库客户端。

    2.7K20

    从 Next.js 看企业级框架的 SSR 支持

    其中,完善的静态渲染/服务端渲染支持让 Next.js 在 React 生态中独树一帜 二.核心特性 ?...) pages/post/[...all].js → /post/* (/post/2020/id/title) 路径中变化的参数通过getStaticPaths来填充: // pages/posts...1]/[路由参数2].js),接着getStaticPaths填充路由参数,getStaticProps({ params })根据参数请求不同数据,最后数据进入页面组件开始预渲染: ?...(上例中的Home)。...HTML,但 2 个问题也随之而来: 数据可能会发生变化,已经生成的静态页面需要更新 数据量可能会多到“永远”编译不完 以电商页面为例,要把海量商品数据全都编译成静态页面,几乎是不可能的(或许要编译一个世纪那么长

    3.9K11

    偷师 Next.js:我学到的 6 个设计技巧

    并且,在很长的一段时间里,React 中能称为组件的只有 Class 这段很长的时间有多长? 从 React 诞生之初一直到React Hooks推出并进化成完全形态。...需要用到更多功能,再按需暴露更多的既定 API: // pages/blog.js function Blog({ posts }) { // Render posts... } // API 1...) 如此看来,在文档中融入少量在线教育的成熟模式,可能效果极佳 默认提供最佳实践 读过体验科技与好的产品,对其中玉伯提出的默认好用印象很深,而 Next.js 算是默认好用在框架设计上的一个真实案例 例如...,前端生态也正在发生着一些变化,涌现出各式各样的一体化应用: 以前端项目/后端项目为主体的一体化应用:如 Midway Serverless,支持集成 React、Vue 等前端项目 以 SSR 为主体的一体化应用...的兴起很好地解决了 SSR 渲染服务的运维问题,因此,其 Vercel 平台默认支持以 Serverless Functions 的形式部署 SSR 服务与 API: Pages that use Server-Side

    2.4K10

    React 必学SSR框架——next.js

    原因是,一个正常的同构需求,我们需要: 前端组件渲染为HTML字符串,流 服务端,客户端资源的加载不同处理,(首屏不一定全部加载完所有js……) 服务端,客户端的状态数据的传递 打包工具链 性能优化 ….../pages/post/[...slug].js --> /post/1/2, /post/a/b/c等,但是不会匹配 /post/create, /post/abc 动态参数可以通过req.query...对象中获取({ pid }, { slug: [ 'a', 'b' ] }),在页面中可以通过router hook获取: import { useRouter } from 'next/router'...使用getStaticProps方法在build阶段返回页面所需的数据。 如果是动态路由的页面,使用getStaticPaths方法来返回所有的路由参数,以及是否需要回落机制。...,需要注意的是: getStaticPaths方法返回的fallback很有用:如果fallback是false,访问该方法没有返回的路由会404 但是如果不想或者不方便在build阶段拿到路由参数

    7.7K20

    Next.js 简明教程

    原因是,一个正常的同构需求,我们需要: 前端组件渲染为HTML字符串,流 服务端,客户端资源的加载不同处理,(首屏不一定全部加载完所有js……) 服务端,客户端的状态数据的传递 打包工具链 性能优化 ….../pages/post/[...slug].js --> /post/1/2, /post/a/b/c等,但是不会匹配 /post/create, /post/abc 动态参数可以通过req.query...对象中获取({ pid }, { slug: [ 'a', 'b' ] }),在页面中可以通过router hook获取: import { useRouter } from 'next/router'...使用getStaticProps方法在build阶段返回页面所需的数据。 如果是动态路由的页面,使用getStaticPaths方法来返回所有的路由参数,以及是否需要回落机制。...,需要注意的是: getStaticPaths方法返回的fallback很有用:如果fallback是false,访问该方法没有返回的路由会404 但是如果不想或者不方便在build阶段拿到路由参数,可以设置

    3K20

    Next.js 强劲对手来了!💿 Remix 正式宣布开源

    每个路由函数,如 Projects 可以定义一个 loader 函数,类似处理 GET 请求的服务端函数,可以获取到路由信息,为初次服务端渲提供数据,在这个函数中可以获取文件系统、请求数据库、进行其他网络请求...当 action 函数返回数据或错误信息时,我们可以通过 Remix 提供的 useActionData 钩子拿到这个返回的错误信息,进行前端的展示等。...上述嵌套路由一个显而易见的优点就是,某个部分如果报错了,结合后续会提到的 ErrorBoundary 和 CatchBoundary 这个部分可以显示错误的页面,而用户仍然可以操作其他部分,而不需要刷新整个页面以重新加载使用...正因为错误经常发生,且处理错误异常困难,包含客户端、服务端的各种错误,包含预期的、非预期的错误等,所以 Remix 内建了完善的错误处理机制,提供了类似 React 的 ErrorBoundary 的理念...,即你在 loader、action 函数中,在客户端或服务端,手动抛出的 Response 错误,这些错误的路径是可预期的,在 CatchBoundary 中,通过 useCatch 钩子获取这些抛出的

    1.3K30

    实例讲解redis的hash散列类型

    删除key 中的一个或多个指定域 HEXISTS key field 查看key 中,给定域 field 是否存在 HGET key field 返回key 中给定域 field 的值 HGETALL...加上浮点数增量 HKEYS key 返回key 中的所有域 HLEN key 返回key 中域的数量 HMGET key field [field ...]...field设置为value HVALS key 返回所有值 HSTRLEN key field 返回相关field的字符串长度 了解更多相关命令 HSET 不区分插入和更新操作,修改数据时不用事先判断否存在...其中slug不可重复,因此另外以slug.to.id为键记录slug与postid关联 根据这两个hash结构,实现以下三个功能:1.发布文章 2.以slug为条件读取文章 3.更改文章的slug...:{$postId}"; } } 以slug为条件读取文章 public function getPost(Request $requset, $slug) { $slug = $requset

    1.4K20

    WordPress JSON REST API简单介绍及使用

    (string) 类型 type参数指定获取文章的文章类型,可以是一个字符串或一个文章类型的数组。...建议使用PUT(如果可用),以适应REST约定。 输入 数据参数包括需要修改的文章ID和文章对象。...和发布文章一样,data参数应该是一个包含以下键值对的对象,唯一不一样的就是编辑文章的参数中多了一个文章ID,编辑文章的数据参数和发布文章是一样的,这里就不再一一翻译了,请参照编辑文章的键值字符串部分。...如果请求中设置了force选项,将返回一个200 OK状态码,说明文章已经被永久删除。 如果发出请求的客户端未授权,返回一个403 错误码。...如果发出请求的客户端未授权,返回一个403 错误码。

    1.2K10

    Laravel 7 新特性-路由的趟坑之路(自定义键名以及作用域)

    Laravel 7 开始新增了一些新特性,今天我们来讲解下 路由绑定的新用法,自定义键名(slug)以及作用域(范围限定) 首先我们 安装最新版本的 Laravel ,并且创建两张数据表。...我们的以前的 URL 可能是如下这样: http://laravel7.test/posts/posts/1 我们是通过主键 ID 来进行查找的。...当然我们在以前的版本可以更改这个,我们需要在 模型中重写一个方法 getRouteKeyName 接下来我们看下 Laravel 7 以前是怎么实现的 首先。....test/posts/amet-laudantium-reprehenderit-ullam-repudiandae Laravel 7 的版本,实现以上自定义键,就更加方便了 只需要在 路由上添加一个动态参数即可...最终看了半天文档 我发现他给的路由后面有一个 动态参数 slug,加上试试。

    2.5K10
    领券