本文转摘自公众号文章: GraphQL实践
随着业务的增长,页面涉及的业务线越来越多, 为了实现一个需求, 需要调用多个接口组合数据, 然后绑定到 UI 组件上. 每个接口返回的数据会有很多字段是不会使用的, 浪费了网络流量. 为了解决该问题, 我们小组引入了 GraphQL 作为 BFF 层, 利用 GraphQL 服务减少网络请求次数, 以及数据裁减能力减少网络响应数据量.
下面简单介绍一下我们组的 GraphQL Node 服务端项目的搭建过程.
本文转摘自公众号文章: GraphQL实践
随着业务的增长,页面涉及的业务线越来越多, 为了实现一个需求, 需要调用多个接口组合数据, 然后绑定到 UI 组件上. 每个接口返回的数据会有很多字段是不会使用的, 浪费了网络流量. 为了解决该问题, 我们小组引入了 GraphQL 作为 BFF 层, 利用 GraphQL 服务减少网络请求次数, 以及数据裁减能力减少网络响应数据量.
下面简单介绍一下我们组的 GraphQL Node 服务端项目的搭建过程.
原文 - How to Ignore and Disable TypeScript Rules
在TypeScript文件中禁用规则:
TypeScript项目如果用到了一些第三方JS类库,但是没有提供d.ts文件时, 可以自己手动声明.
一般是在源码的src
目录下, 创建global.d.ts
文件, 以下示例声明jQuery的$
以及一个Gitalk类库的类型:
interface Window {
Gitalk: Gitalk
$: any
}
interface Gitalk {
new(options: {
clientID: string,
clientSecret: string,
repo: string,
owner: string,
admin: Array<string>,
id: string,
distractionFreeMode: boolean
}): GitalkInstance
}
interface GitalkInstance {
render(id: string): void
}
然后就可以使用 new window.Gitalk({ ... })
创建实例了.
实际上任何interface
声明的类型, 都可以自己手动扩展. 而type
声明的类型则无法再次扩展. 这也是interface
和type
的一个主要区别.
TypeScript定义小技巧
Ref: Event Emitters in TypeScript
从UI交互到Node.js的核心事件循环, 基于事件循环是JavaScript开发的一部分.
分享一个TypeScript类型复用的小技巧: