首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

写在 2021: 值得关注学习的前端框架和工具库

结果我一路到现在都是处于这么一种状态:看到一个新的框架—看看文档和场景—嗯哼,不错—学!...Relay[39],FaceBook出品,所以也比较受到推崇(我记得看到过原因是这样,GraphQL如果要改啥,才刚进入草案,Relay团队就已经提供了支持),但上手没有Apollo-Client那么容易...一体化框架 一体化框架指的是, 你的前后端项目放在同一个repo里(后端是Node),同时前端直接调用在后端定义的方法,由框架在编译时去自动的把前端对后端的方法调用转换成HTTP请求。...Schema的编写,不需要定义Resolver、ObjectType这些东西,因为BlitzJS内部用useQuery和useMutation抹掉了中间的调用过程(和Apollo的hooks类似但不完全相同...点赞分享给你的朋友是最好的支持~ 参考资料 [1] 学完Vue还有必要学习React和Node吗?

4.2K10

有哪些值得学习的大型 React 开源项目?

我之前也没有很好的答案,确实很难找,因为一般企业级应用都是不开源的,Github 上大部分都是很简单的 DEMO 项目,很难挑选。 今天就给大家梳理了几个我觉得还不错的 React 开源项目。...在 repo 中包含了示例数据,自动化测试和应用程序都可以开箱即用地运行。...使用 TypeScript + React 编写,使用 SCSS 编写样式。大多数组件都存在于 components 包中。...代码库使用 Flow 进行类型检查,使用 Apollo (GraphQL) 进行数据获取,使用 Redux 进行状态管理,使用 Express 服务器进行服务器渲染,编写了大量的自定义 React Hooks...他的后端是 Go 实现的,使用 Apollo (GraphQL) 进行数据获取,使用 react-router 实现路由,使用 Redux 进行状态管理,Cypress 进行端到端测试,使用 Material

4.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

写在2021: 值得关注学习的前端框架和工具库

Relay,FaceBook出品,所以也比较受到推崇(我记得看到过原因是这样,GraphQL如果要改啥,才刚进入草案,Relay团队就已经提供了支持),但上手没有Apollo-Client那么容易。...GraphQL-Yoga,Prisma团队出品,基于Apollo-Server,封装了一些特性,因此比Apollo-Server更容易上手,但功能却更强,比如原生支持文件上传这种。...但我只是比较简单的使用过,用于和TypeGraphQL一起实现自定义指令,详见 这里 Engine GraphQL Engine其实是一个非常神奇的方向,有点像REST那边的各种自动生成REST API...一体化框架 一体化框架指的是, 你的前后端项目放在同一个repo里(后端是Node),同时前端直接调用在后端定义的方法,由框架在编译时去自动的把前端对后端的方法调用转换成HTTP请求。...的编写,不需要定义Resolver、ObjectType这些东西,因为BlitzJS内部用useQuery和useMutation抹掉了中间的调用过程(和Apollo的hooks类似但不完全相同,Apollo

2.8K10

GraphQL最突出的架构优势是什么?

简化的数据获取架构,其中视图可以是任意前端框架——nerdwallet 数据图在连接的两端均有 Apollo 服务器和客户端,它可以简化获取逻辑、错误逻辑、重试逻辑、分页、缓存、optimistic UI...,这些方法在被调用时会将操作转换为适当的 API 以跨越数据图。...在 Apollo Server 端,这些 API 调用将控制权转交给负责使用 ORM、原始 SQL、缓存、其他 RESTfulAPI 或任何你想到的方法来获取数据的解析器。...通过 Apollo Federation,我们可以绘制公开由多个 GraphQL 端点组成的单个数据图 在 Federation 中,你可以组成模式解析其他服务 / 限界上下文中的字段。...我知道这样理想化的情况并不总是存在,至少没有适当的工具链是不可能做到的。

2.1K20

React 设计模式 0x6:数据获取

向您的 API 发送 GraphQL 查询,只获取您所需的数据,没有多余的内容。...GraphQL 查询总是返回可预测的结果,使用 GraphQL 的应用程序速度快且稳定,因为它们控制获取的数据,而不是由服务器来控制。...# Memoization Memoization 是一种优化技术,主要用于通过存储昂贵的函数调用结果,并在再次出现相同输入时返回缓存的结果来优化计算机程序。...简单来说,Memoization 是指将结果存储在内存中。Memoization 函数通常更快,因为如果使用相同的参数再次调用函数,则不会重新执行函数,而是从缓存中获取结果。...它提供了许多有用的功能,如数据缓存、自动重试、请求取消和突变。 React Query 的目标是提供一个简单的 API,让数据获取和管理变得更加容易,并且可以与现有的代码库集成。

1.2K20

Cypress系列(65)- 测试运行失败自动重试

重试的介绍 学习前的三问 什么是重试测试 为什么重试很重要 如何使用重试 为什么要重试 使用 Cypress 进行自动化测试时,仍然会存在一些难以验证的行为,使得测试变得不稳定(不可靠) 有时会由于不可以预测的情况...(如,外部依赖项中断,随机网络错误等)而导致测试失败 其他导致不可靠测试的因素 前端动画 API 调用 测试服务器/数据库的可用性 依赖资源的可用性 网络问题 重试的优势 通过重试Cypress 能够重试失败的测试用例...,所有测试用例若失败都会自动重试 2 次 yarn retryCases Cypress 自带的重试功能介绍 前言 默认情况下,测试将在失败时不重试,需要在配置中启用测试重试才能使用此功能 启用测试重试后...,根据需要扩展每次尝试以进行检查和调试 配置重试功能 全局配置 前言 通常需要为 和 cypress open 分开定义不同的重试次数 cypress run 默认在 中进行配置 cypress.json...}, function () { cy.screenshot('user-login-errors') cy.get('#id') }); }) 测试结果

2.1K43

来试试Graphql

GraphQL 与 RESTful API GraphQL 是由 Facebook 开发开源的。提到 GraphQL ,大家自然而然会提起 RESTful api。...GraphQL 可精准的返回所需的数据结果,减少数据传输大小。 嵌套复杂数据仅需一次调用 RESTful 对于嵌套的复杂数据需要多次调用,而 GraphQL 只需要一次。...愉快地前后端联调效率 REST 每次新加字段,需频繁沟通,且需借助 swagger 生成接口文档, GraphQL 自动生成标准文档。...resolver 的解析规则是, 从外到内依次处理查询块,为每一个查询块执行对应的 resolver 函数,传递外层调用返回的结果作为第一个参数,也就是下面代码中的 obj 。...,这里我们没有嵌套 resolver ,所以我们直接用第二个参数 id 获取前端传入的参数。

1.9K20

GraphQL到底怎么使?看看智联前端团队技术沉淀

使用 Field Alias(字段别名)进行简单的返回结果字段重命名。 这些都没有什么问题。 但是在 Directives(指令)的支持和使用上,规范和实现是有冲突的。...文档化:GraphQL 的内省功能可以根据 Schema 生成实时更新的 API 文档,且没有维护成本,对于调用方直观且准确。...强类型(字段校验):由于 JS 语言特性,强类型只能称为字段强类型校验(包括入参类型和返回结果),当数据源返回了比 Schema 多或少的字段时,并不会引发错误,而就算采用了 TypeScript 由于没有运行时校验...能力稳定运行了一段时间。...总结 综合来看,可用的 GraphQL 服务(不考虑拿 GraphQL 做本地数据管理的情况)的重心在服务提供方。作为 GraphQL调用方是很爽的,且几乎没有弊端。

2.3K20

【译】Graphql, gRPC和端对端类型检验

最终我们选择了Apollo GraphQL+gRPC+React+TypeScript这样一套技术栈,对使用它们的结果感到满意。...在这篇博客中,我们会解释为何选择这些技术栈,通过一个简单的示例项目进行论述。...结果,静态类型很好的保证了服务端响应和数据转化逻辑能够匹配我们的schema。由于GraphQL schema本身就是一种类型集合,可以根据它很方便地生成TypeScript类型。...在gPPC中,.proto文件用来描述后端服务的可调用方法名,以及这些方法输入输出的字段类型。...React 我们并没有花费太多时间来讨论这一选择。我们团队的主要经验都是在构建React应用上,而且我们也没有找到任何令人信服的理由来换到别的选项上。

3.1K20

怎样使用 apollo-link-state 管理本地数据

那么剩下的 20% 的本地数据(例如全局标志、设备 API 返回的结果等)应该怎样处理呢? 过去,Apollo 的用户通常会使用一个单独的 Redux/Mobx store 来管理这部分本地的数据。...要初始化一个 state link,须要将一个包含 resolvers、defaults 和 cache 字段的 object 作为参数,调用 Apollo Link 中的 withClientState...以上的 Resolver 函数是查询和更新 Apollo cache 的方法。 若要在 Apollo cache 的根上写入数据,可以调用 cache.writeData 方法传入相应的数据。...apollo-link-state 使用 @client 指令来标记只需存在于客户端本地的字段,然后,apollo-link-state 会在这些字段上调用相应的 resolver 方法。 ....为了避免这点,我们希望能将数据模式的构建转移到项目的构建阶段,从而达到对类型校验的支持,也可以用到 GraphiQL 中的各种很酷的功能。

2.3K100

Cypress(四)查询元素

它会立马同步返回一个空的jQuery集合,不包含我们要找的元素就立马结束了,不会去重试查询,如果有时候页面没有完全加载出来去查询,结果返回为空,但是实际上页面又有这个元素,这明显不符合我们ui自动化的需求...(1)自动重试查询,知道找到该元素 (2)自动重试查询,直到超过设置的超时时间结束 这使Cypress具有强大的功能,不会像selenium等ui自动化框架一样,找不到元素直接抛错,需要我们手动写代码处理异常...注:在Cypress中,当您想直接与DOM元素交互时,可以使用.then()将元素作为其第一个参数的回调函数进行调用。...如果您不想要重试功能,想要同步立马返回结果,你可以使用Cypress.$ 二.通过文字内容查询 除了通过jquery的选择器来查询元素,我们还可以方便的通过前端控件里的文件内容来查询,比如我们要查询下面的元素...三.查询元素设置超时时间 上面提到了,当缺少元素时,Cypress并不会立马返回失败而是继续重试,那么我们如何设置查找元素的超时时间呢?

1.8K20

Cypress系列(59)- 实时调试和中断

如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 前言 Cypress 提供了两种方式的 debug...('a').debug().should('have.attr', 'href') 测试结果 主要看 F12 ?...('a').then(function () { debugger }) }); 记得需要打开浏览器开发者工具哦(F12) 测试结果 ?...命令执行流程 上面的代码整个工作流程如下 访问页面,Cypress 等待加载 cy.visit() 查询该元素(a 标签),如果没有立即找到它,Cypress自动等待并重试一会儿 执行结果传递给....then() 函数 .get() 在 函数的上下文中,调用 debugger 调试器,停止运行测试代码调用 Developer Tools 的焦点 .then() 检查应用程序的状态,执行 debugger

53920

你不知道的 GraphQL

这还不是全部:使用schema,GraphiQL还提供了自动补全功能: ? 这种杀手级应用,每个Graphql开发者都值得拥有。...Tweet: { id: 2, body: 'Sic dolor amet' } } 内部工作流程是这样的:服务会由外向内依次处理查询块,为每个查询块执行对应的resolver函数,传递外层调用是的返回结果为第一个参数...argument const schema = makeExecutableSchema({ typeDefs, resolvers }); 有了上面的resolvers,我们的服务就可以处理前面的查询拿到期望的结果...顺便说一句,graphqlHTTP内部就是调用它来工作的。 另一种Apollo公司比较推荐的测试手段是使用来自graphql-tools中的mockServer来测试。...注意:这篇教程中提到的大多数js库都源自Facebook或Apollo。那么,Apollo到底是哪位?它是来自于Meteor团队的一个项目。这些家伙为GraphQL贡献了很多的高质量代码。顶他们!

3.3K20
领券