GraphQL由类型系统,查询语言和执行语义,静态验证和类型内省组成,每个都在下面概述.为了指导您完成这些组件,我们编写了一个示例来说明GraphQL的各个部分.
- https://github.com/facebook/graphql
Falcor允许您通过虚拟JSON图表将所有远程数据源表示为单个域模型.无论数据位于何处,无论是在客户端的内存中还是通过服务器上的网络,您都可以采用相同的方式编码.
- http://netflix.github.io/falcor/
Falcor和GraphQL有什么区别(在Relay的背景下)?
我开始使用它,relay-starter-kit并通过Relay和GraphQL文档工作.但是有很多领域是无法解释和神秘的.
说真的,我到处都阅读了很多关于所有这些事情的文件,但对以下问题找不到任何令人满意的解释:
这个是来做什么的?我把日志记录但它甚至根本没有被调用:
var {nodeInterface, nodeField} = nodeDefinitions(
(globalId) => {
var {type, id} = fromGlobalId(globalId);
if (type === 'User') {
return getUser(id);
} else if (type === 'Widget') {
return getWidget(id);
} else {
return null;
}
},
(obj) => {
if (obj instanceof User) {
return userType;
} else if (obj instanceof Widget) {
return widgetType;
} else {
return null;
}
}
);
Run Code Online (Sandbox Code Playgroud)
这个的实际效果是什么:
interfaces: [nodeInterface],
Run Code Online (Sandbox Code Playgroud)
也许与此相关,node这里的领域是做什么的:
var queryType = new GraphQLObjectType({
name: …Run Code Online (Sandbox Code Playgroud) 我已经阅读了基于redux和relay的文章/文档的数量,但我仍然很困惑这两个库是如何不同的?
这两个库有哪些优点和缺点?
GraphQL在中继中的确切作用是什么?
哪个库更适合CRM/ERP等企业数据驱动应用?
我必须从头开始一个新的(web + native)项目(中型应用程序).由于过去几年里有过多的JS框架和实现,我对我平常的堆栈有了第二个疑问.
我一直在前端使用react + redux,后端使用Node和MongoDB通过REST API进行通信.
对于这个新项目,我决定使用React-Native + React Native for Web + Node + PostgreSQL.但是,我想知道我应该使用哪个框架来进行数据获取和状态/存储管理.
到目前为止,redux很适合我.但是,由于JS演变的本质.我对我过去使用过的堆栈持怀疑态度.
如果我使用下面的堆栈,有什么优缺点
React-Native + React-Native-For-Web + Redux + GraphQL + Node + PostgreSQL
React-Native + React-Native-For-Web + Relay + GraphQL + Node + PostgreSQL
React-Native + React-Native-For-Web + Apollo + GraphQL + Node + PostgreSQL
Run Code Online (Sandbox Code Playgroud)
我已经阅读了许多文章,说明使用每个框架的好处,但内容和文章的数量有点可怕.我明白没有正确或错误的答案.但是,很高兴知道上面提到的堆栈很好地记在一起 - 更少的学习曲线,良好的文档,可维护性,更少的变通方法.
Facebook没有提到他们的GraphQL库的身份验证.
假设我有一个可以从GraphQL获取的用户表,我不希望向除了登录用户之外的任何需要它的人透露用户信息,我应该在什么级别添加认证层?
在模式级别通过改变"登录"状态?
或者可能通过将额外的参数传递给graphql当前只需要的函数query和schema?
默认的react-router用作如下:
import * as React from 'react';
import { Router, Route, hashHistory } from 'react-router';
const routing = (
<Router history={hashHistory}>
<Route path="/login" component={Login}/>
</Router>
};
Run Code Online (Sandbox Code Playgroud)
当我包含"react-router-relay"库时,它会为路由器添加功能.即它为路由器组件添加了2个属性(渲染和环境):
import * as React from 'react';
import * as Relay from 'react-relay';
import * as useRelay from 'react-router-relay';
import { Router, Route, hashHistory, applyRouterMiddleware } from 'react-router';
const routing = (
<Router history={hashHistory} render={applyRouterMiddleware(useRelay)} environment={Relay.Store}>
<Route path="/login" component={Login}/>
</Router>
};
Run Code Online (Sandbox Code Playgroud)
我将如何增加反应路由器的类型?
我尝试过一系列方法,最新的方法是:
import { Router } from 'react-router';
declare module 'react-router' {
namespace …Run Code Online (Sandbox Code Playgroud) Facebook宣布推出Relay和GraphQL.但是,它们还没有.是否有替代库可以实现目前可以使用的类似目标?
如何公开graphql端点以响应本机应用程序?有没有人使用中继反应本机应用程序?中继技术概述中的示例https://facebook.github.io/relay/docs/getting-started.html使用webpack来服务中继应用并将其暴露给graphql服务器:
import express from 'express';
import graphQLHTTP from 'express-graphql';
import path from 'path';
import webpack from 'webpack';
import WebpackDevServer from 'webpack-dev-server';
import {StarWarsSchema} from './data/starWarsSchema';
const APP_PORT = 3000;
const GRAPHQL_PORT = 8080;
// Expose a GraphQL endpoint
var graphQLServer = express();
graphQLServer.use('/', graphQLHTTP({schema: StarWarsSchema, pretty: true}));
graphQLServer.listen(GRAPHQL_PORT, () => console.log(
`GraphQL Server is now running on http://localhost:${GRAPHQL_PORT}`
));
// Serve the Relay app
var compiler = webpack({
entry: path.resolve(__dirname, 'js', 'app.js'),
eslint: {
configFile: '.eslintrc'
},
module: …Run Code Online (Sandbox Code Playgroud) 如果他们可以通过什么方式整合它们?一些(反)模式?
我花了一些时间来学习它们,但仍然无法找到在单个应用程序中利用它们(以及它们的优点)的方法.
relayjs ×10
reactjs ×7
graphql ×6
javascript ×3
redux ×3
react-native ×2
falcor ×1
frontend ×1
graphql-js ×1
reactjs-flux ×1
typescript ×1