新書推薦:
《
有兽焉.8
》
售價:NT$
305.0
《
大学问·明清经济史讲稿
》
售價:NT$
330.0
《
中国国际法年刊(2023)
》
售價:NT$
539.0
《
早点知道会幸福的那些事
》
售價:NT$
295.0
《
迈尔斯普通心理学
》
售價:NT$
760.0
《
古典的回響:溪客舊廬藏明清文人繪畫
》
售價:NT$
1990.0
《
掌故家的心事
》
售價:NT$
390.0
《
战争社会学专论
》
售價:NT$
540.0
編輯推薦:
云计算通常与后端开发和DevOps有关。但随着Serverless技术的兴起以及新一代服务和框架的出现,前端和移动开发人员也可以构建强大的应用程序,并且其中支持生产就绪的功能包括身份验证和授权,API网关,聊天机器人,增强现实场景等。本书向你展示了如何实现上述功能的步骤。
Amazon Web Services的倡导者Nader Dabit将指导你完成使用React、AWS、GraphQL和AWS Amplify构建全栈应用程序的过程。你将学习如何在客户端创建服务并将其集成到客户端应用程序中,同时还会学习常规的实践、部署策略、富媒体管理,以及整个过程中的持续集成和交付。
內容簡介:
了解如何构建解决实际问题的无服务器应用程序。 了解这些技术的应用场景(以及局限)。 创建与DynamoDB和NoSQL数据库进行交互的GraphQL API。 学习身份验证的工作原理,并了解身份验证和授权之间的区别。 深入了解无服务器函数的工作原理及其重要性。 在AWS上构建全栈应用程序,并使用Amplify DataStore构建脱机应用程序。
關於作者:
Nader Dabit是Amazon Web Services的一名高级开发者及其拥护者,擅长跨平台和云服务的应用程序开发。他与客户端团队一起通力合作,改善了客户端SDK的开发体验。此前,Nader通过其公司React Native Training为很多大公司提供了使用React和React Native框架构建应用程序的培训服务,其中包括Amazon,、Microsoft、Salesforce和American Express等。
目錄 :
目录
前言 .1
第1 章 无服务器计算时代的全栈开发 9
1.1 当前流行的无服务器理念 10
1.1.1 无服务器应用的特征 . 11
1.1.2 无服务器架构的优点 . 11
1.1.3 无服务器架构的不同实现 14
1.2 AWS 简介 17
1.2.1 关于AWS 17
1.2.2 AWS 上的全栈无服务器特性 17
1.2.3 Amplify CLI 17
1.3 AWS Amplify CLI 简介 20
1.3.1 安装和配置Amplify CLI 21
1.3.2 初始化你的个Amplify 项目 22
1.3.3 创建和部署你的个服务 25
1.3.4 删除资源 27
1.4 小结 28
第2 章 AWS Amplify 简介 29
2.1 创建和部署无服务器函数 30
2.1.1 创建React 应用程序并安装依赖项 31
2.1.2 使用Amplify CLI 创建新的无服务器函数 . 32
2.1.3 代码解析 33
2.1.4 创建路由/coins 33
2.2 添加API 34
2.2.1 创建新的API. 35
2.2.2 部署API 和Lambda 函数 35
2.3 与新API 进行交互 . 36
2.3.1 配置客户端应用程序与Amplify 协同工作. 36
2.3.2 Amplify 客户端API 类 . 36
2.3.3 在React 中调用API 并渲染数据 37
2.4 更新函数以调用另一个API 39
2.4.1 安装Axios 39
2.4.2 更新函数 40
2.4.3 更新客户端应用 41
2.5 小结 42
第 3 章 创建你的款应用 43
3.1 GraphQL 简介 43
3.1.1 GraphQL 是什么? . 43
3.1.2 GraphQL API 的构成 . 44
3.1.3 GraphQL 操作 45
3.2 创建GraphQL API 47
3.3 查看GraphQL API 并与之交互 49
3.4 构建React 应用程序 51
3.4.1 列出笔记(GraphQL 查询) . 51
3.4.2 创建笔记(GraphQL 变更) . 56
3.4.3 删除笔记(GraphQL 变更) . 59
3.4.4 更新笔记(GraphQL 变更) . 61
3.4.5 实时数据(GraphQL 订阅) . 63
3.5 小结 64
第4 章 身份验证简介 .66
4.1 Amazon Cognito 简介 67
4.1.1 Amazon Cognito 的工作原理 . 67
4.1.2 Amazon Cognito 与AWS Amplify 的集成 68
4.2 创建React 应用程序并添加Amplify . 69
客户端身份验证概述 . 70
4.3 构建应用程序 71
4.3.1 创建文件和文件夹结构 71
4.3.2 创建个组件 72
4.3.3 Public 组件 . 73
4.3.4 Nav 组件 73
4.3.5 Protected 组件 74
4.3.6 Router 组件 . 76
4.3.7 Profile 组件 . 77
4.3.8 UI 美化组件 79
4.3.9 配置应用程序 79
4.3.10 测试应用程序 . 79
4.4 小结 80
第5 章 自定义身份验证策略 81
5.1 创建protectedRoute 钩子 82
5.2 创建表单 83
5.2.1 登录组件(SignIn) 87
5.2.2 注册组件(SignUp) . 88
5.2.3 注册确认组件(ConfirmSignUp) . 89
5.2.4 ForgotPassword 组件 . 89
5.2.5 ForgotPasswordSubmit 组件 90
5.2.6 完善Form.js 91
5.2.7 updateForm 辅助函数 93
5.2.8 renderForm 函数 94
5.2.9 表单类型切换 95
5.2.10 更新Profile 组件 96
5.2.11 测试应用程序 . 98
5.3 小结 98
內容試閱 :
前言
本书缘起
次学习编程时,我对软件开发工作的细节知之甚少。当时一心只想着构建一款应用程序,当我开始研究并磕磕碰碰地完成想做的所有事情时,才知道自己是多么天真。
我了解的重点之一就是,应用程序通常由两个部分组成:前端(客户端代码)以及后端API 和服务。当时,云技术还处于起步阶段,至少学习如何构建全栈应用程序是令人头疼的。对于我来说情况可能更糟,因为我想构建原生的移动应用程序,并且着手构建移动应用程序比构建Web 应用程序要困难得多。
信息技术经过10 年的迅猛发展后,情况有了很大的改观。曾经由一大批开发者完成的工作现在有时可以由一名开发人员完成。React Native、Flutter 和Cordova 等工具使得开发者可以使用单个代码库构建和交付跨平台的移动应用程序。Amplify、Firebase 等云技术使得相同的开发人员也可以利用云计算技术以前所未有的速度更快地构建后端。
我想我们正在迎接一种新的范式,它使得成为全栈开发者比以往任何时候都容易,并且全栈开发者的定义正在发生变化。写这本书是为了展示我对这种新范式在实践中的看法,并介绍一种专门利用前沿的前端和云技术而创建的技术。我认为本书描述的是软件工程的未来。
目标读者
本书适用于希望构建全栈应用程序的软件工程师,特别是对云计算感兴趣的。它还适用于希望学习如何使用现有技术来通过云技术构建全栈应用程序的前端开发人员。
对于CTO 和初创公司的创业者来说,这也是一个很好的资源,因为他们希望使用少的资源来限度地提高生产效率和开发速度。本书概述的技术是快速原型开发和创意实验的理想之选,它可以让开发人员和创业者将其创意迅速地推向市场,并在取得成功的情况下提供可扩展且健壮的产品。
本书概要
本书的目的是向读者介绍使用React 和无服务器技术构建真实、可扩展的全栈应用程序所需的所有步骤。通过在每章中构建不同的应用程序,逐一介绍相关功能(例如身份验证、API 和数据)以及一些在前端和后端实现这些功能的技术。
你创建的每个应用程序都将基于上一章中学到的知识。在后一章中,你将构建一个复杂的应用程序,它将用到在实际工作或项目初创阶段所需的很多云服务。当你完成本书的学习之后,应该具备了通过React 和AWS 云技术构建自己的无服务器应用程序的知识和能力。
第1 章 无服务器计算时代的全栈开发
在本章中,我们将介绍无服务器理念,无服务器应用程序的特征和优点,以及AWS 和AWS Amplify CLI。
第2 章 AWS Amplify 简介
在本章中,将使用AWS Amplify 创建和部署一项无服务器功能。我们将创建该功能,然后添加API 并与其交互。
第3 章 创建你的款应用
在这里,我们将通过构建一个笔记(notes)应用来演示从头创建一个新的全栈应用程序的基本流程。我们将创建一个新的React 应用程序,初始化一个新的Amplify 项目,添加GraphQL API,然后从客户端(React)应用程序连接到API 并与之交互。
第4 章 身份验证简介
在本章中,我们将逐步完成向应用程序添加身份验证的过程。首先将创建一个新的React 应用程序,并使用AWS Amplify React 库中的高阶组件(HOC)withAuthenticator 添加基本的身份验证功能。我们将读取用户的元数据,并创建一个用户资料页面,以允许用户查看其信息。
第5 章 自定义身份验证策略
在本章中,我们将通过使用React、React Router 和AWS Amplify 创建自定义身份验证流程来进一步学习身份验证。该应用程序将包含注册页面,登录页面和忘记密码页面。登录后,将出现一个主菜单,以便将用户导航到个人资料页面、地图页面和欢迎页面,并且欢迎页面将作为该应用程序的主视图。
第6 章 无服务器函数进阶(一)和第7 章 无服务器函数进阶(二)
在这里,我们将介绍无服务器函数以及如何在React 应用程序中与之交互。将通过创建一个支持CORS 保护的API 获取柴犬(shiba inu)图片的应用程序来演示创建、更新和删除等操作的无服务器函数,相关的代码存放在一个AWS Lambda 函数中,将使用AWS Amplify CLI 创建和配置这个函数。
第8 章 AWS AppSync 应用
我们将基于第3 章的知识构建一个更复杂的API,它包括多对多关系和多种授权类型。我们将创建一个事件应用程序,它允许管理员创建表演节目和舞台。将让所有用户都能够读取节目信息,无论他们是否登录,但仅允许已登录的管理员创建、更新和删除节目和舞台。
第9 章 使用Amplify DataStore 构建离线应用程序
在本章中,我们将介绍如何使用Amplify DataStore 实现离线功能。
第10 章 图像与存储
本章我们将学习如何创建图片共享应用,该应用程序将允许用户上传和查看图片。
第11 章 托管:将你的应用程序部署到支持CI 和CD 的Amplify Console在后一章中,我们将会用到第10 章创建的图片共享应用程序,并使用Amplify Console 将其部署到线上。我们还会学习将更新合并到master 分支时,启动新的构建来添加持续集成(CI)和持续部署(CD)功能。后,我们将学习如何添加自定义域,以便读者能够将应用程序和自己的实际URL 关联。
排版约定
本书中将使用以下排版约定:
斜体(Italic)
表示新的术语,URL,电子邮件地址,文件和文件扩展名。
等宽字体(Constant width)
表示程序列表,以及在段落中引用程序元素,例如变量或函数名、数据库、数据类型、环境变量、语句和关键字。
等宽粗体(Constant width bold)
表示应由用户直接输入的命令或其他文本。
等宽斜体(Constant width italic)
表示应由用户提供的值或由上下文确定的值。
代码示例
补充材料(代码示例、练习等)可以通过如下网址下载:https://github.com/dabit3/full-stack-serverless-code。
如果你在使用代码示例时遇到技术问题或疑问, 请发送电子邮件至bookquestions@oreilly.com。
本书中的代码可以帮助你完善工作。一般而言,本书中的源代码,不需要得到我们的许可就可以应用到你自己的程序或文档中,除非你希望重新发布了这些代码的副本。举例来说,一个程序中用到本书中的若干代码块不需要许可授权。销售或发布包含O’Reilly 图书中的代码样例的CD-Rom 不需要授权许可。回答一个问题引用本书中的内容或代码不需要授权许可。在你的产品文档中加入大量的本书代码样例需要授权许可。
我们建议但不强制要求标明出处。出处通常包括标题,作者,发行商和ISBN。比如:“Full Stack Serverless by Nader Dabit (O’Reilly). Copyright 2020 Nader Dabit, 978-1-492-05989-9”。
如果你觉得使用代码样例超出了上述许可范围,请通过permissions@oreilly.com 与我们取得联系。
O’Reilly 在线学习平台(O’Reilly Online Learning)
近40 年来,O’Reilly Media 致力于提供技术和商业
培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly 的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly 和200 多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
联系我们
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
致谢
感谢我的妻子Lilly,她在我的职业生涯中一直坚定地支持着我,当我为了写这本书在办公室工作到很晚,有时在家也工作到很晚的时候,她把我的生活打理得井井有条。
感谢我的孩子,Victor 和Eli,他们都很棒并且是我灵感的源泉,我非常爱你们。
感谢我的父母,是你们让我有机会学习,让我获得人生的第二、第三和第四次机会。
我要感谢许多团队和个人: 感谢整个AWS 移动团队,是他们大胆雇了刚结束混乱的咨询职业生涯的我,让我有机会与我见过的聪明的人一起工作。感谢Michael Paris, Mohit Srivastava, Dennis Hills, Adrian Hall, Richard Threlkald, Michael Labieniec, Rohan Deshpande, Amit Patel,以及所有其他的团队成员,他们教会了我在新工作中需要学习的知识。感谢Russ Davis、Lee Johnson 和SchoolStatus,是他们给了我在这份工作中学习前沿技术的机会,正是这份工作让我终进入了咨询行业。感谢Brian Noah、Nate Lubeck 和我在Egood 的团队,这是我得到的份真正的技术工作,它让我接触到技术交流大会的世界,以及成为一名伟大的开发者所需要的东西。