Apollo Link Persisted Queries 项目教程
1. 项目的目录结构及介绍
Apollo Link Persisted Queries 项目的目录结构如下:
apollo-link-persisted-queries/
├── src/
│ ├── index.ts
│ └── ...
├── package.json
├── README.md
└── ...
目录结构介绍
- src/: 包含项目的主要源代码文件。
- index.ts: 项目的入口文件,负责初始化和配置 Apollo Link。
- package.json: 项目的依赖管理文件,包含项目的依赖包和脚本命令。
- README.md: 项目的说明文档,包含项目的基本信息和使用指南。
2. 项目的启动文件介绍
项目的启动文件是 src/index.ts
,该文件主要负责初始化和配置 Apollo Link 以支持持久化查询。以下是 index.ts
文件的关键部分代码:
import { ApolloLink, Observable, Operation } from 'apollo-link';
const sha256 = require('hash');
// 其他代码...
const [ hasOwnProperty ] = Object.prototype;
const [ Object.defineProperty(query, hashesKey, { value: Object.create(null), enumerable: false }) ];
const hashes = (query as any)[hashesKey];
return hasOwnProperty.call(hashes, hashesChildKey) ? hashes[hashesChildKey] : (hashes[hashesChildKey] = generateHash(query));
return new ApolloLink((operation, forward) => {
if (!forward) {
throw new Error('PersistedQueryLink cannot be the last link in the chain');
}
const { query } = operation;
let hashError: any;
if (supportsPersistedQueries) {
try {
operation.extensions.persistedQuery = { version: VERSION, sha256Hash: getQueryHash(query) };
} catch (e) {
hashError = e;
}
}
return new Observable(observer => {
if (hashError) {
observer.error(hashError);
return;
}
let subscription: ZenObservable.Subscription;
let retried = false;
let originalFetchOptions: any;
// 其他代码...
});
});
启动文件介绍
- 导入依赖: 导入了
apollo-link
和其他必要的模块。 - 初始化配置: 配置了持久化查询的支持,并处理查询的哈希生成。
- ApolloLink 实例: 创建了一个新的
ApolloLink
实例,处理查询操作和错误处理。
3. 项目的配置文件介绍
项目的配置文件主要是 package.json
,该文件包含了项目的依赖包和脚本命令。以下是 package.json
文件的关键部分:
{
"name": "apollo-link-persisted-queries",
"version": "1.0.0",
"description": "Persisted queries for Apollo Link",
"main": "dist/index.js",
"scripts": {
"build": "tsc",
"test": "jest"
},
"dependencies": {
"apollo-link": "^1.2.14",
"hash": "^0.2.1"
},
"devDependencies": {
"typescript": "^4.0.0",
"jest": "^26.0.0"
}
}
配置文件介绍
- name: 项目的名称。
- version: 项目的版本号。
- description: 项目的描述。
- main: 项目的主入口文件。
- scripts: 包含项目的构建和测试脚本。
- dependencies: 项目的运行时依赖包。
- devDependencies: 项目的开发依赖包。
以上是 Apollo Link Persisted Queries 项目的教程,包含了项目的目录结构、启动文件和配置文件的介绍。希望这些信息能帮助你更好地理解和使用该项目。