使用Redwoodjs,Fauna和Vercel部署无服务的Jamstack网站
该教程通过使用Redwoodjs,Faunadb和Vercel构建Jamstack无服务器应用程序来指导您。我们将利用Fauna的GraphQl API作为Redwoodjs Frontend的后端,并在Vercel的一键式部署中毫不费力地部署。
期望使用此功能强大的技术堆栈深入了解Jamstack和无服务的概念。
构建您的红木应用程序
Redwoodjs是无服务器应用程序的框架,将React(Frontend),GraphQl(数据)和Prisma(数据库查询)组合在一起。尽管存在其他前端框架(例如野牛),但Redwoodjs提供了一个成熟且建立了良好的生态系统。
我们将绕过起动模板并从基本的Redwood项目构建,以检查每个组件。首先,安装纱线并运行以下命令:
纱线创建Redwood-App ./csstricks CD CSSTRICKS 纱RW开发
您的前端在localhost:8910
,后端在localhost:8911
(带有GraphIQL游乐场)上运行。红木着陆页应出现在localhost:8910
。 (注意:此示例中使用了Redwoodjs版本0.21.0;请咨询文档以获取最新版本和生产准备。)
项目结构
Redwoodjs优先考虑约定而不是配置,提供了结构化的项目布局:
<code>├── api │ ├── prisma │ │ ├── schema.prisma │ │ └── seeds.js │ └── src │ ├── functions │ │ └── graphql.js │ ├── graphql │ ├── lib │ │ └── db.js │ └── services └── web ├── public │ ├── favicon.png │ ├── README.md │ └── robots.txt └── src ├── components ├── layouts ├── pages │ ├── FatalErrorPage │ │ └── FatalErrorPage.js │ └── NotFoundPage │ └── NotFoundPage.js ├── index.css ├── index.html ├── index.js └── Routes.js</code>
该项目分为由纱线工作区管理的web
(前端)和api
(后端)目录。我们将用Faunadb替换Prisma,删除prisma
目录和db.js
的内容(但保留db.js
文件)。
index.html
index.html
文件包含root dom节点(<div id="redwood-app"></div>
)渲染React应用程序的位置。 Redwoodjs虽然以Jamstack为导向,但目前却没有像Next.js或Gatsby那样执行预读。
index.js
index.js
使用ReactDOM.render()
将主要应用程序组件呈现到redwood-app
元素中。它利用RedwoodProvider
进行上下文管理和FatalErrorBoundary
进行错误处理。
Routes.js
Routes.js
使用Redwood的路由器定义了应用程序的路由。
创建页面
让我们使用Redwood CLI创建页面:
纱线RW G页面家庭 / 纱线RW G页面
这为HomePage
和AboutPage
生成必要的文件。通过删除不必要的导航链接来简化这些页面。
布局
为导航创建可重复使用的布局:
纱线RW G布局博客
修改BlogLayout.js
以包括AboutPage
HomePage
的导航链接,并使用<link>
成分。将BlogLayout
导入到HomePage
和AboutPage
,以合并导航。
动物模式定义语言(SDL)
使用以下模式创建sdl.gql
:
类型post { 标题:字符串! 身体:绳子! } 类型查询{ 帖子:[帖子] }
将此架构上传到您的Faunadb实例。请注意,Faunadb创建了中介类型;我们将在Redwoodjs模式中解释这一点。
Redwoodjs SDL和服务
创建api/src/graphql/posts.sdl.js
镜像动物架模式,包括中介类型的PostPage
。创建api/src/services/posts/posts.js
使用graphql-request
查询FAUNA GraphQl API。切记在api
目录中安装graphql-request
和graphql
。
动物区系授权
使用环境变量,将api/src/lib/db.js
配置为在授权标题中包含您的FaunAdb Secret。
播种Faunadb
使用Fauna Shell将一些示例帖子添加到您的数据库中。
细胞
生成BlogPostsCell
来获取和显示帖子:
纱线RW生成细胞博客文章
修改BlogPostsCell.js
查询posts
并渲染每个帖子的标题和正文。将BlogPostsCell
导入到HomePage
中。
动词部署
将您的项目连接到Vercel。修改netlify.toml
(如果存在)将apiProxyPath
设置为“/api”。将您的Faunadb秘密添加到Vercel的环境变量中。 Vercel的Build Command与Redwoodjs无缝地工作。
您的申请已完成!可以使用实时演示和GitHub存储库(链接将在此处插入)。
以上是使用Redwoodjs,Fauna和Vercel部署无服务的Jamstack网站的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

格子呢是一块图案布,通常与苏格兰有关,尤其是他们时尚的苏格兰语。在Tartanify.com上,我们收集了5,000多个格子呢

我关注的一件事是Lea Verou&#039; s conic-Gradient()Polyfill的功能列表是最后一项:
