首页/新闻资讯/正文详情

Redwood 实战教程:使用 `yarn redwood generate page` 创建第一个页面与路由

发布时间:2026/9/23 17:06:25 来源:云帆数科 栏目:资讯中心
Redwood 实战教程:使用 `yarn redwood generate page` 创建第一个页面与路由
后端前端Web框架开发工具【免费下载链接】redwoodRedwoodGraphQL项目地址https://gitcode.com/gh_mirrors/re/redwood点击查看免费下载本篇文章基于 Redwood 官方教程第 4 版version-4.x第一章内容围绕yarn redwood generate page home /这一条命令完整讲解 Redwood 中页面Page的生成机制、Routes路由文件的自动更新、NotFoundPage兜底规则以及基础样式引入。你将掌握页面文件、测试文件、Storybook 文件如何被一次性生成路由如何被自动注入以及如何用一小段 CSS 让默认页面立即可读。文中所有代码与命令均以当前仓库gh_mirrors/re/redwood中实际存在的源码、模板与测试为佐证。为什么从第一个页面开始在完成 Redwood 项目初始化后浏览器打开的是官方欢迎页Welcome Page。本章的目标是让我们自己动手创建一个真实的页面替换掉这个欢迎页。Redwood 提供了命令行脚手架工具来替我们完成大部分重复劳动页面生成就是其中最典型的一个入口。先执行yarn redwood generate page home /这条命令做了四件事创建页面组件文件web/src/pages/HomePage/HomePage.{js,tsx}。Redwood 会把page后面的第一个参数做 PascalCase 处理再追加后缀Page来构造组件名例如home变成HomePage。创建配套的测试文件web/src/pages/HomePage/HomePage.test.{js,tsx}其中包含一个可以通过的冒烟测试组件能否正常渲染。创建配套的 Storybook 文件web/src/pages/HomePage/HomePage.stories.{js,tsx}用于在 Storybook 中独立开发和预览该组件。在web/src/Routes.{js,tsx}中新增一条Route把路径/映射到新的HomePage。执行完命令后页面其实已经在线了——浏览器会自动热更新。此时看到的还只是一个朴素的原生 HTML 页面但它已经是我们自己的页面了。打开文件、改几处文字、保存浏览器会立刻刷新出新内容。页面生成器的四个产物源码级拆解从源码看页面生成器位于 packages/cli/src/commands/generate/page/page.js它按照固定模板产出三个文件页面、测试、Storybook并单独处理路由注入COMPONENT_SUFFIX Page固定追加的组件名后缀REDWOOD_WEB_PATH_NAME pages页面统一存放在web/src/pages/下files()函数依次通过page.tsx.template、test.tsx.template、stories.tsx.template生成内容当路由带参数时Storybook 使用stories.tsx.parameters.template以便在故事中传入参数示例routes()函数构造Route path... page{XxxPage} namexxx /随后由addRoutesToRouterTask写回路由文件。生成后的页面模板 page.tsx.template 大致如下以 TypeScript 为例const HomePage () { return ( Metadata titleHome descriptionHome page / h1HomePage/h1 p Find me in codeweb/src/pages/HomePage/HomePage.tsx/code /p / ) } export default HomePage几个值得注意的实现细节模板顶部自动引入了Metadata组件redwoodjs/web用于设置页面标题与描述。生成器在收尾步骤还会输出一条提示提醒开发者Metadata对 SEO 的重要性。测试模板 test.tsx.template 使用redwoodjs/testing/web的render对页面做一次渲染断言渲染不抛错这是新页面的最低保障测试。测试与 Storybook 文件是否生成受命令行参数和项目配置双重控制。在 page.js 中可以看到当tests/stories未显式传入时会读取getConfig().generate.tests/getConfig().generate.stories即redwood.toml中的默认开关。如果你没有特别传参那么页面 测试 Storybook三件套默认都会生成——教程里那句 Youdowrite tests for your components, *dont you?? 就是 Redwood 脚手架默认行为的最佳注脚。路由文件的自动更新与页面自动导入打开web/src/Routes.{js,tsx}你会看到生成器写入的这条路由import { Router, Route } from redwoodjs/router const Routes () { return ( Router Route path/ page{HomePage} namehome / Route notfound page{NotFoundPage} / /Router ) } export default Routes注意我们在 Routes 文件中直接引用了HomePage但文件顶部并没有import HomePage from src/pages/HomePage/HomePage这样的语句。这是 Redwood 的刻意设计——Routes 文件会自动导入所有页面避免在路由文件顶部堆出长长一串 import 声明。从仓库中的 fixture 可以看到这一机制的实际效果packages/internal/src/tests/fixtures/nestedPages/web/src/Routes.js 中每个页面都有独立 import且支持非默认导出与重命名导入如import BazingaJobProfilePageWithFunnyName from src/pages/Jobs/JobProfilePage说明页面的自动发现与导入由 Redwood 内部工具链在构建/类型生成阶段完成。Route的三个关键属性属性含义示例path匹配的 URL 路径/、/hellopage渲染该路径的页面组件HomePagename路由的命名引用供routes.home()生成链接homepath与page是必填项。路由校验逻辑在 packages/router/src/route-validators.ts 的测试中体现得很清楚缺少path会抛出Route element for xxx is missing required props: path缺少page会抛出... is missing required props: page普通路由缺少name同样会报错。而notfound路由是特例它不需要path任何未匹配的 URL 都由它接管但必须有page。NotFoundPage 与 Splash Screen 的切换规则只要路由表中存在path/的路由Redwood 的初始欢迎页Splash Screen就再也不会出现。而NotFoundPage承担的是兜底职责当请求的 URL 匹配不到任何路由时Route notfound page{NotFoundPage} /会被渲染。在 packages/router/src/tests/analyzeRoutes.test.tsx 中路由分析结果会单独暴露NotFoundPage并被断言为有效的 React 元素说明兜底页是路由系统的第一等公民。动手验证把首页换成别的路径把路由改成Route path/hello page{HomePage} namehome /保存后访问 http://localhost:8910/根路径你会发现 Splash Screen 又出现了——因为此刻根路径下已经没有任何页面路由Redwood 在根路径展示了一个应用内路由列表列出当前应用所有可用的 URL。而访问/hello则能看到 HomePage 的内容。这个实验很好地说明了path与page的解耦关系页面组件不绑定路径路径只是路由表里的一行配置。做完实验记得把路径改回/否则后续章节的链接都会指向错误的地址。基础样式让默认页面不那么素之前的教程为了聚焦代码刻意不做任何样式但一个完全没有样式的站点实在影响观感。这里提供一份极简的基础样式表直接粘贴进web/src/index.cssbody { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol; } ul { list-style-type: none; margin: 1rem 0; padding: 0; } li { display: inline-block; margin: 0 1rem 0 0 ; } h1 a { text-decoration: none; color: black; } button, input, label, textarea { display: block; outline: none; } label { margin-top: 1rem; } .error { color: red; } input.error, textarea.error { border: 1px solid red; } .form-error { color: red; background-color: lavenderblush; padding: 1rem; display: inline-block; } .form-error ul { list-style-type: disc; margin: 1rem; padding: 1rem; } .form-error li { display: list-item; } .flex-between { display: flex; justify-content: space-between; } .flex-between button { display: inline; }这段样式的效果是正文改用操作系统的系统字体-apple-system、Segoe UI、Roboto等元素之间保留适度留白列表去掉圆点并横向排列表单控件纵向堆叠同时预置了.error、.form-error等表单错误态类名——这些类名会在后续章节的表单与表单校验示例中直接复用。CSS 是建议性的你可以按喜好增删调整甚至完全忽略、继续使用浏览器默认样式。但需要知道的是本教程后续截图都是基于这份基础样式表渲染的如果改动较大界面观感可能与截图略有出入。小结至此你已经完成 Redwood 的第一个里程碑用一条generate page命令创建了页面组件、测试与 Storybook 文件理解了路由文件的自动注入与页面自动导入机制知道了NotFoundPage的兜底规则并为后续章节准备了基础样式。下一步可以顺着本教程继续深入路由与页面链接的使用routes.home()与Link、Storybook 与组件测试chapter5/storybook.md、以及 Redwood 的数据层Service 与 GraphQL。这些内容会建立在你已经拥有一个属于自己的首页这个前提之上。赞分享后端前端Web框架开发工具【免费下载链接】redwoodRedwoodGraphQL项目地址https://gitcode.com/gh_mirrors/re/redwood点击查看免费下载相关推荐Redwood 教程创建第二个页面与命名路由链接generate page 与 Link 实战Redwood 教程创建第二个页面与命名路由链接generate page 与 Link 实战 本篇教程承接 Redwood 全栈框架RedwoodG后端前端Web框架开发工具Redwood 教程用 generate page 创建第二个页面并通过 Link 与命名路由打通页面导航Redwood 教程用 generate page 创建第二个页面并通过 Link 与命名路由打通页面导航 本篇教程是 Redwood 官方教程第一章的延续后端前端Web框架开发工具Redwood 教程创建第二个页面与命名路由链接About 页面实战Redwood 教程创建第二个页面与命名路由链接About 页面实战 本篇技术指南来自 Redwood 官方教程第一章讲解如何用 redwood gen后端前端Web框架开发工具上一篇终极指南Apache Airflow监控告警体系构建完整的数据工作流监控解决方案下一篇Tilix高级功能揭秘同步输入、触发器与自动配置文件切换创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

基于GNN图神经网络预测:从原理到避坑的完整实践指南
基于GNN图神经网络预测:从原理到避坑的完整实践指南

简介:基于GNN图神经网络预测的Python完整源码数据包,面向机器学习初学者与图网络研究者,提供从模型构建、训练到预测的端到端实现方案,可直接用于节点分类、链接预测等常见任务。包内共32个文件,以19个py源码脚本和4个… · 2026/9/23 17:06:25

佛山万家乐壁挂炉维修预约电话|附近师傅上门检修|欧米到家报修热线
佛山万家乐壁挂炉维修预约电话|附近师傅上门检修|欧米到家报修热线

📝 文章简介佛山家庭使用壁挂炉时,常见问题包括不点火、不出热水、地暖或暖气片不热、故障代码、水压下降、漏水、风机异响、频繁启停等。欧米到家提供壁挂炉检测、维修、清洗保养、采暖调试及配件更换建议服务,覆盖佛山各区:禅城… · 2026/9/23 17:06:25

乳腺癌HE病理图像细胞分割:U-Net从数据预处理到评估全流程解析
乳腺癌HE病理图像细胞分割:U-Net从数据预处理到评估全流程解析

简介:乳腺癌细胞分割图片数据集是一套面向医学图像处理与深度学习研究者的病理图像资源,内含58张H&E染色组织病理学图像及配套真实标注,主要解决细胞分割与良恶性分类环节的标注数据需求。压缩包共232个文件,包括116张tif格式… · 2026/9/23 17:06:19

解锁 Windows 生物识别:红外摄像头的核心作用
解锁 Windows 生物识别:红外摄像头的核心作用

如今多数Windows轻薄本、商务本都搭载了Windows Hello人脸解锁功能,无需输入繁琐密码,一眼即可解锁设备,便捷又高效。很多人误以为这是普通摄像头的功劳,实则红外摄像头才是Windows生物识别安全、精准、稳定运行的核心基石&#x… · 2026/9/23 18:29:39

Red Arrow Flight 实战指南:使用 Ruby 构建 Apache Arrow Flight 高性能网络数据传输
Red Arrow Flight 实战指南:使用 Ruby 构建 Apache Arrow Flight 高性能网络数据传输

数据工程大数据序列化数据分析 【免费下载链接】arrow Apache Arrow is a multi-language toolbox for accelerated data interchange and in-memory processing 项目地址: https://gitcode.com/gh_mirrors/arrow13/arrow 点击查看 免费下载 Apache Arrow Flight 是… · 2026/9/23 18:29:39

PHP-CS-Fixer `object_operator_without_whitespace` 规则详解:消除对象运算符 `->` 与 `?->` 两侧空白
PHP-CS-Fixer `object_operator_without_whitespace` 规则详解:消除对象运算符 `->` 与 `?->` 两侧空白

开发工具代码质量静态分析Lint格式化 【免费下载链接】PHP-CS-Fixer A tool to automatically fix PHP Coding Standards issues 项目地址: https://gitcode.com/gh_mirrors/ph/PHP-CS-Fixer 点击查看 免费下载 object_operator_without_whitespace 是 PHP-CS-Fixe… · 2026/9/23 18:29:38

checkbox 和 radio 组件
checkbox 和 radio 组件

一、实验目的掌握多选框checkbox和多选组checkbox‑group的用法;掌握单选框radio和单选组radio‑group的用法;学会通过bindchange事件获取选中项,动态修改页面样式;拓展新增30rpx字号单选选项;理解skyline渲染引擎对部… · 2026/9/23 18:29:38

3个私服空间避坑指南:搞定高频面试题与环境配置
3个私服空间避坑指南:搞定高频面试题与环境配置

3个私服空间避坑指南:搞定高频面试题与环境配置 配置环境就卡半天?别急,这往往是面试前最折磨人的环节。很多同学在准备市政公用工程相关的后端开发岗位时,总以为背熟原理就能通关,结果一上机操作,依赖冲突、端口占用、权限不足,问题接踵而至。更扎心… · 2026/9/23 18:29:32

图联邦学习实战:GCN在数据孤岛中的协同进化
图联邦学习实战:GCN在数据孤岛中的协同进化

简介:本资源是一套面向本科毕业设计与人工智能课程实践的图联邦学习系统实现方案,聚焦社交网络、知识图谱与推荐系统等典型图数据场景,为算法工程师、AI方向本科生及研究者提供可运行的端到端技术参考。压缩包含149个文件,主体为3… · 2026/9/23 18:29:20

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码