该教程通过使用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中文网其他相关文章!

这是我们在形式可访问性上进行的小型系列中的第三篇文章。如果您错过了第二篇文章,请查看“以:focus-visible的管理用户焦点”。在

本教程演示了使用智能表单框架创建外观专业的JavaScript表单(注意:不再可用)。 尽管框架本身不可用,但原理和技术仍然与其他形式的建筑商相关。

CSS盒子阴影和轮廓属性获得了主题。让我们查看一些在真实主题中起作用的示例,以及我们必须将这些样式应用于WordPress块和元素的选项。

Svelte Transition API提供了一种使组件输入或离开文档(包括自定义Svelte Transitions)时动画组件的方法。


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

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

Dreamweaver CS6
视觉化网页开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SublimeText3 Linux新版
SublimeText3 Linux最新版