当前位置: 首页 > news >正文

有哪些做婚礼平面设计的网站有哪些做网站要的带宽是什么

有哪些做婚礼平面设计的网站有哪些,做网站要的带宽是什么,自助个人网站注册,手表网站欧米茄报价在本教程中#xff0c;我们将向您展示如何使用GraphQL和React实现简单的端到端CRUD操作。我们将介绍使用React Hooks读取和修改数据的简单示例。我们还将演示如何使用Apollo Client实现身份验证、错误处理、缓存和乐观UI。 什么是React#xff1f; React是一个用于构建用户… 在本教程中我们将向您展示如何使用GraphQL和React实现简单的端到端CRUD操作。我们将介绍使用React Hooks读取和修改数据的简单示例。我们还将演示如何使用Apollo Client实现身份验证、错误处理、缓存和乐观UI。 什么是React React是一个用于构建用户界面的JavaScript库。它旨在帮助构建应用程序的前端部分包括处理Web和移动应用的视图层。 React是基于组件的这意味着React应用程序的各个部分被分解成较小的组件然后在更高级别的组件中组织。这些更高级别的组件定义了应用程序的最终结构。 React支持可重用组件因此您可以创建一个组件并在应用程序的不同部分多次使用。这有助于减少冗余代码使代码更易于维护遵循DRY原则。 什么是GraphQL GraphQL是一种用于API的查询语言也是一个用现有数据来实现查询的运行时。简单来说GraphQL是一种描述如何请求数据的语法。它通常用于从服务器加载数据到客户端。 GraphQL通过将所有请求抽象到一个端点来简化API的构建。与传统的REST API不同它是声明式的这意味着请求的内容会被返回。 何时使用GraphQL 当然并不是所有项目都需要GraphQL——它只是一个用于整合数据的工具。GraphQL有定义良好的模式因此我们可以确定不会过度获取数据。但是如果我们已经有一个稳定的RESTful API系统并且只依赖单一数据源的数据那么我们不需要GraphQL。 例如假设我们正在为自己创建一个博客并决定在单一的MongoDB数据库中存储、检索和通信数据。在这种情况下我们没有做任何复杂的架构设计不需要GraphQL。 另一方面假设我们有一个依赖多个数据源如MongoDB、MySQL、Postgres和其他API的完整产品。在这种情况下我们应该使用GraphQL。 例如如果我们在设计一个作品集网站并希望从社交媒体和GitHub获取数据以显示贡献并且我们还有自己的数据库来维护博客我们可以使用GraphQL来编写业务逻辑和模式。它将数据整合为单一的真实来源。 一旦我们有了解决函数来将正确的数据分发到前端我们将能够轻松地在单一来源中管理数据。 什么是CRUD 在构建API时您希望您的模型提供四个基本功能它应该能够创建、读取、更新和删除资源。这一组基本操作通常被称为CRUD。 RESTful API通常使用HTTP请求。在REST环境中四个最常见的HTTP方法是GET、POST、PUT和DELETE这是开发者可以用来创建CRUD系统的方法。 使用graphql-server进行CRUD 在本节中我们将介绍一些GraphQL CRUD示例以帮助您了解在React和GraphQL应用程序中CRUD操作的工作方式。 设置服务器 我们将使用express-graphql启动一个简单的GraphQL服务器并将其连接到MySQL数据库。源代码和MySQL文件在这个仓库中。 GraphQL服务器是基于模式和解析器构建的。首先我们构建一个模式定义类型、查询、变更和订阅。该模式描述了整个应用程序结构。 其次对于模式中定义的内容我们构建相应的解析器来计算和分发数据。解析器将动作映射到函数对于在类型定义中声明的每个查询我们创建一个解析器来返回数据。 最后通过定义端点并传递配置来完成服务器设置。我们将/graphql初始化为应用程序的端点。对于graphqlHTTP中间件我们传递构建的模式和根解析器。 除了模式和根解析器外我们还启用了GraphiQL开发工具。GraphiQL是一个交互式的浏览器内GraphQL IDE可以帮助我们玩转构建的GraphQL查询。 var express require(express); var graphqlHTTP require(express-graphql); var { buildSchema } require(graphql);var schema buildSchema(type Query {hello: String} );var root {hello: () World };var app express();app.use(/graphql, graphqlHTTP({schema: schema,rootValue: root,graphiql: true, }));app.listen(4000);console.log(Running a GraphQL API server at localhost:4000/graphql);一旦服务器准备就绪运行node index.js将启动服务器在http://localhost:4000/graphql。我们可以查询hello并获得字符串“World”作为响应。 连接数据库 我要建立与MySQL数据库的连接如下所示 var mysql require(mysql);app.use((req, res, next) {req.mysqlDb mysql.createConnection({host : localhost,user : root,password : ,database : userapp});req.mysqlDb.connect();next(); });我们可以连接多个数据库/数据源并在解析器中整合它们。我在这里连接了一个MySQL数据库。本文中使用的数据库转储在GitHub仓库中。 使用GraphQL读取和写入数据 我们使用查询和变更来读取和修改数据源中的数据。在这个例子中我定义了一个通用的queryDB函数来帮助查询数据库。 查询 所有的SELECT语句或读取操作用于列出和查看数据放入type Query类型定义中。我们在这里定义了两个查询一个用于列出数据库中的所有用户另一个用于按ID查看单个用户。 **列出数据**为了列出用户我们定义了一个GraphQL模式对象类型User它表示我们可以从getUsers查询中获取或期望的内容。然后我们定义getUsers查询来返回一个用户数组。**查看单个记录**为了查看单个记录我们使用getUserInfo查询定义一个参数id。它查询数据库中的特定ID并将数据返回到前端。 现在我们已经组合了查询来获取所有记录并按ID查看记录当我们尝试从GraphiQL查询用户时它将在屏幕上列出一个用户数组 查询 var schema buildSchema(type User {id: Stringname: Stringjob_title: Stringemail: String}type Query {getUsers: [User],getUserInfo(id: Int) : User} );const queryDB (req, sql, args) new Promise((resolve, reject) {req.mysqlDb.query(sql, args, (err, rows) {if (err)return reject(err);rows.changedRows || rows.affectedRows || rows.insertId ? resolve(rows) : resolve(rows[0]);}); });var root {getUsers: (args, req) {return queryDB(req, SELECT * FROM user);},getUserInfo: (args, req) {return queryDB(req, SELECT * FROM user WHERE id?, [args.id]);} };app.use(/graphql, graphqlHTTP({schema: schema,rootValue: root,graphiql: true }));变更 在变更部分中我们将执行以下操作创建、更新和删除记录。变更按类型定义对应于数据库中用户模式的对象类型。 type Mutation {createUser(name: String!, job_title: String!, email: String!): UserupdateUser(id: Int!, name: String, job_title: String, email: String): StringdeleteUser(id: Int!): String }我定义了一个带有三个参数的createUser变更来将数据插入数据库中。updateUser使用id标识符来修改表中的用户记录deleteUser使用id从数据库中删除记录。 const queryDB (req, sql, args) new Promise((resolve, reject) {req.mysqlDb.query(sql, args, (err, rows) {if (err)return reject(err);rows.changedRows || rows.affectedRows || rows.insertId ? resolve(rows) : resolve(rows[0]);}); });const createDB (req, sql, args) new Promise((resolve, reject) {req.mysqlDb.query(sql, args, (err, rows) {if (err)return reject(err);args[0].id rows.insertId;resolve(args[0]);}); });var root {getUsers: (args, req) {return queryDB(req, SELECT * FROM user);},getUserInfo: (args, req) {return queryDB(req, SELECT * FROM user WHERE id?, [args.id]);},createUser: (args, req) {return createDB(req, INSERT INTO user SET ?, [args]);},updateUser: (args, req) {return queryDB(req, UPDATE user SET ? WHERE id?, [args, args.id]).then((res) Successfully updated user).catch((err) Cannot update user);},deleteUser: (args, req) {return queryDB(req, DELETE FROM user WHERE id?, [args.id]).then((res) Successfully deleted user).catch((err) Cannot delete user);} };app.use(/graphql, graphqlHTTP({schema: schema,rootValue: root,graphiql: true }));在React中使用graphql-client进行CRUD 这节将使用React与GraphQL客户端整合。我们将使用Apollo客户端和GraphQL查询来从GraphQL API中读取数据并更新UI。Apollo客户端的作用类似于浏览器的Fetch API但它是为GraphQL设计的。 设置Apollo客户端 首先确保安装了以下包 npm i react-apollo graphql-tag apollo-boost apollo-client apollo-cache-inmemory apollo-link-http初始化Apollo客户端并为应用程序提供客户端对象 import ApolloClient from apollo-boost; import { ApolloProvider } from react-apollo; import React from react; import ReactDOM from react-dom; import App from ./App;const client new ApolloClient({uri: http://localhost:4000/graphql });ReactDOM.render(ApolloProvider client{client}App //ApolloProvider,document.getElementById(root) );列出数据 为了列出数据我们首先创建一个GraphQL查询然后将其传递给React组件。我们可以使用useQuery钩子来执行查询并返回结果。 import React from react; import gql from graphql-tag; import { useQuery } from react-apollo;const GET_USERS gqlquery {getUsers {idnamejob_titleemail}} ;const UserList () {const { loading, error, data } useQuery(GET_USERS);if (loading) return pLoading.../p;if (error) return pError :(/p;return (div{data.getUsers.map(user (div key{user.id}p{user.name}/pp{user.job_title}/pp{user.email}/p/div))}/div); };export default UserList;创建用户 为了创建新用户我们创建一个变更并将其传递给组件。我们可以使用useMutation钩子来执行变更并返回结果。 import React from react; import gql from graphql-tag; import { useMutation } from react-apollo;const CREATE_USER gqlmutation CreateUser($name: String!, $job_title: String!, $email: String!) {createUser(name: $name, job_title: $job_title, email: $email) {idnamejob_titleemail}} ;const CreateUser () {let name, job_title, email;const [createUser] useMutation(CREATE_USER);return (divformonSubmit{e {e.preventDefault();createUser({ variables: { name: name.value, job_title: job_title.value, email: email.value } });name.value ;job_title.value ;email.value ;}}input ref{node { name node; }} placeholderName /input ref{node { job_title node; }} placeholderJob Title /input ref{node { email node; }} placeholderEmail /button typesubmitAdd User/button/form/div); };export default CreateUser;更新和删除用户 类似地您可以创建更新和删除用户的组件。使用useMutation钩子传递GraphQL变更并返回结果。 import React from react; import gql from graphql-tag; import { useMutation } from react-apollo;const UPDATE_USER gqlmutation UpdateUser($id: Int!, $name: String, $job_title: String, $email: String) {updateUser(id: $id, name: $name, job_title: $job_title, email: $email)} ;const DELETE_USER gqlmutation DeleteUser($id: Int!) {deleteUser(id: $id)} ;const UpdateUser () {let id, name, job_title, email;const [updateUser] useMutation(UPDATE_USER);return (divformonSubmit{e {e.preventDefault();updateUser({ variables: { id: parseInt(id.value), name: name.value, job_title: job_title.value, email: email.value } });id.value ;name.value ;job_title.value ;email.value ;}}input ref{node { id node; }} placeholderID /input ref{node { name node; }} placeholderName /input ref{node { job_title node; }} placeholderJob Title /input ref{node { email node; }} placeholderEmail /button typesubmitUpdate User/button/form/div); };const DeleteUser () {let id;const [deleteUser] useMutation(DELETE_USER);return (divformonSubmit{e {e.preventDefault();deleteUser({ variables: { id: parseInt(id.value) } });id.value ;}}input ref{node { id node; }} placeholderID /button typesubmitDelete User/button/form/div); };export { UpdateUser, DeleteUser };总结 在本教程中我们展示了如何使用React和GraphQL进行CRUD操作。我们设置了GraphQL服务器连接到MySQL数据库定义了查询和变更并使用Apollo客户端在React应用中执行CRUD操作。希望这能帮助您更好地理解和实现React和GraphQL的集成。
http://www.dnsts.com.cn/news/80064.html

相关文章:

  • 网站前期设计app推广怎么联系一手代理
  • 北京市朝阳区住房建设网站wordpress公众号管理员
  • 高端网站建设 工业seo搜索引擎优化期末考试
  • 网站开发编程的工作方法自己做网站 教程
  • 彩票开奖网站开发wordpress制作网站教程
  • 网站负责人信息表平面设计网页设计专员
  • 有谁做彩票网站重庆市建设工程造价信息网公众号
  • 广州市企业网站制作公司做特产的网站
  • 控制面板网站新建网站推广
  • 网站制作排序北京建设工程建设交易信息网站
  • 网站建设前端和后端域名访问
  • 网站建设基本概述阿里云网站备案幕布
  • 企业多语言网站开源银行网站开发技术方案
  • 3d建模有前途吗做搜狗pc网站优化
  • 中企动力网站后台 好用吗广西电网公司建设年鉴
  • 云南营销型网站建设谷歌 wordpress 插件
  • 河南天元建设公司网站广告优化师的职业规划
  • 做俄罗斯外贸的网站设计wordpress 密码 算法
  • 黄页引流推广网站天河怎样优化网站建设
  • 电脑打不开建设银行网站私人ftp服务器
  • 服务网站排名咨询网站推广工具
  • 怎么能看出别人的网站是哪一家做沈阳网页设计培训
  • 兰州网站建设专家企业做网站哪家网站好
  • 网站流量15gps软件电脑版
  • 网站建设服务器租赁百度收录站长工具
  • 做变形记图网站营销型网站建设大千建站
  • 网站微信推广方案wordpress局域网
  • 17网站一起做网店普宁池尾雅晨怎么看网站的服务器
  • 公司网站建设的环境分析上海网页建站模板
  • 网站改版是什么衡水做网站电话