开发工具后端【免费下载链接】firebase-js-sdkFirebase Javascript SDK项目地址https://gitcode.com/gh_mirrors/fi/firebase-js-sdk点击查看免费下载Firebase Data Connect 官方 CLIfirebase-tools在完成 schema 与 connector 定义后会为每个 connector 自动生成一套 JavaScript/TypeScript SDKnpm 包形式并在产物目录中附带.guides/setup.md这类引导文档。本文以本仓库 e2e 样例中生成的firebasegen/default-connector为例完整讲解这类生成 SDK 的安装、initializeApp初始化、connectorConfig接入、模拟器联调以及底层validateArgs/getDataConnect的调用机制帮助你快速把生成 SDK 接入自己的 Firebase 项目。一、生成 SDK 的目录结构与定位在 e2e/data-connect/dataconnect-generated/js/default-connector 目录下可以看到一套完整的、可直接发布和引用的 npm 包结构文件/目录作用package.json声明包名firebasegen/default-connector、入口CJS/ESM/类型与peerDependenciesindex.cjs.jsCommonJS 入口对应exports.requireesm/index.esm.jsESM 入口对应exports.default与browser字段index.d.ts完整的 TypeScript 类型定义操作函数、变量与返回类型README.md生成 SDK 自带的使用说明.guides/setup.md本文聚焦的安装/初始化引导.guides/usage.md直接使用生成 SDK 的进阶用法其中package.json的关键字段package.json{ name: firebasegen/default-connector, version: 1.0.0, typings: index.d.ts, module: esm/index.esm.js, main: index.cjs.js, browser: esm/index.esm.js, exports: { .: { types: ./index.d.ts, require: ./index.cjs.js, default: ./esm/index.esm.js }, ./package.json: ./package.json }, peerDependencies: { firebase: ^10.14.0 || ^11.3.0 || ^12.0.0 } }peerDependencies说明该生成 SDK 依赖宿主项目中的firebase包Data Connect 运行时来自firebase/data-connect子路径因此安装时不要把它当作独立运行时依赖而应与项目自身的 firebase 版本匹配。二、安装生成 SDK包管理器与connector.yaml的关系.guides/setup.md指出如果用户尚未安装该 SDK应使用其偏好的 Node 包管理器在../package.json所在目录安装该包关于库的具体位置参见connector.yaml。这里../package.json相对的是.guides/所在层级即firebasegen/default-connector包目录的上一级在本仓库 e2e 场景中真正承载依赖的是 e2e/data-connect/package.json它声明了firebase: latest等依赖可直接在其目录执行npm install而 connector 的生成配置位于 connector.yamlconnectorId: default generate: javascriptSdk: outputDir: ../../dataconnect-generated/js/default-connector package: firebasegen/default-connectoroutputDir决定了 SDK 产物的落盘位置与上文目录结构一一对应package则决定了安装/导入时使用的包名。日常开发中你可以用firebase>import { initializeApp } from firebase/app; initializeApp({ // fill in your project config here using the values from your Firebase project or from the firebase_get_sdk_config tool from the Firebase MCP server. });即从firebase/app导入initializeApp传入你的 Firebase 项目配置对象。注释提示了两条获取配置的途径直接从 Firebase 控制台的项目设置中复制 Web App 配置使用 Firebase MCPModel Context Protocol服务器提供的firebase_get_sdk_config工具自动获取。本仓库的 e2e 测试 test.ts 展示了真实调用方式——配置从 firebase-js-config.json 读取并传给initializeAppimport { listMovies } from ./dataconnect-generated/js/default-connector; import * as json from ./firebase-js-config.json; import { initializeApp } from firebase/app; initializeApp(json); listMovies();注意配置文件中的字段如apiKey、projectId等需与你实际项目一致仓库内该 json 为空对象仅用于 e2e 环境占位。初始化 App 后即可继续使用生成 SDK 调用查询与变更。四、初始化 DataConnect 实例并接入生成 SDK.guides/setup.md进一步说明初始化完成后即可按需运行 SDKimport { ... } from firebasegen/default-connector;生成 SDK 的入口会导出connectorConfig常量它携带了 connector 标识信息。见 esm/index.esm.js 中的定义export const connectorConfig { connector: default, service: fdc-test, location: us-central1 };接入方式来自生成包自带的 README.mdimport { getDataConnect } from firebase/data-connect; import { connectorConfig } from firebasegen/default-connector; const dataConnect getDataConnect(connectorConfig);getDataConnect在 packages/data-connect/src/api/DataConnect.ts 中实现负责按ConnectorConfig解析出或复用已有的DataConnect服务实例而connectorConfig中的service/location对应 dataconnect.yaml 里的serviceId与location配置specVersion: v1beta serviceId: fdc-test location: us-central1 schema: source: ./schema datasource: postgresql: database: fdcdb connectorDirs: [./connector]五、连接本地模拟器Emulator默认情况下Data Connect 客户端连接生产服务。如需在本地开发调试可通过connectDataConnectEmulator指向模拟器import { connectDataConnectEmulator, getDataConnect } from firebase/data-connect; import { connectorConfig } from firebasegen/default-connector; const dataConnect getDataConnect(connectorConfig); connectDataConnectEmulator(dataConnect, localhost, 9399);connectDataConnectEmulator实现同样位于 packages/data-connect/src/api/DataConnect.ts。本仓库 e2e 场景中模拟器数据目录与数据源配置在 firebase.json{ emulators: { dataconnect: { dataDir: dataconnect/.dataconnect/pgliteData } }, dataconnect: { source: dataconnect } }另外从源码可见另一种模拟器接入方式DataConnect构造时会读取环境变量FIREBASE_DATA_CONNECT_EMULATOR_HOST见 packages/data-connect/src/api/DataConnect.ts设置该变量后客户端会自动切换为模拟器传输。六、生成 SDK 的底层调用机制源码印证为什么生成 SDK 的函数可以传DataConnect实例或直接不传关键在于validateArgs。以createMovieRef为例esm/index.esm.jsexport const createMovieRef (dcOrVars, vars) { const { dc: dcInstance, vars: inputVars } validateArgs( connectorConfig, dcOrVars, vars, true ); dcInstance._useGeneratedSdk(); return mutationRef(dcInstance, CreateMovie, inputVars); }; createMovieRef.operationName CreateMovie;validateArgspackages/data-connect/src/util/validateArgs.ts通过判断首参是否含enableEmulator特征字段来区分传了 DataConnect 实例与只传了变量未传实例时自动调用getDataConnect(connectorConfig)补全const dcFirstArg dcOrVars enableEmulator in dcOrVars; if (dcFirstArg) { dcInstance dcOrVars as DataConnect; realVars vars as Variables; } else { dcInstance getDataConnect(connectorConfig); realVars dcOrVars as Variables; }随后dcInstance._useGeneratedSdk()在 DataConnect.ts 中将_isUsingGeneratedSdk置为 true用于内部遥测区分调用方mutationRef/queryRefpackages/data-connect/src/api/Mutation.ts、packages/data-connect/src/api/query.ts构造引用快捷函数再调用executeMutation/executeQueryMutation.ts、query.ts真正执行。以listMovies为例的完整执行链为listMovies(dc?) → listMoviesRef(dc?) [validateArgs → getDataConnect 兜底] → queryRef(dcInstance, ListMovies) → executeQuery(ref) → 网络层发送 GraphQL 查询并返回 QueryPromise七、通过生成 SDK 调用查询与变更安装并初始化完成后即可按.guides/setup.md的指引按需运行 SDK。以本样例 connectorqueries.gql、mutations.gql中的ListMovies查询与CreateMovie变更为例import { getDataConnect, executeQuery } from firebase/data-connect; import { connectorConfig, listMoviesRef } from firebasegen/default-connector; const ref listMoviesRef(); // 不传实例时自动 getDataConnect(connectorConfig) const { data } await executeQuery(ref); console.log(data.movies);import { getDataConnect, executeMutation } from firebase/data-connect; import { connectorConfig, createMovieRef, CreateMovieVariables } from firebasegen/default-connector; const vars: CreateMovieVariables { title: My Movie, genre: Sci-Fi, imageUrl: https://example.com/poster.png }; const { data } await executeMutation(createMovieRef(vars)); console.log(data.movie_insert);对应类型定义index.d.tsexport interface CreateMovieVariables { title: string; genre: string; imageUrl: string; } export interface ListMoviesData { movies: ({ id: UUIDString; title: string; imageUrl: string; genre?: string | null } Movie_Key)[]; }也可以直接使用动作快捷函数如listMovies()、createMovie(vars)它们内部等价于构造 ref execute。两种方式都支持传入DataConnect实例作为首参便于复用同一实例例如指向模拟器的实例。关于优先使用受支持框架而非直接使用生成 SDK的建议可参见随包生成的 usage.md。八、小结.guides/setup.md虽然篇幅简短但它浓缩了 Firebase Data Connect 生成 SDK 接入的全部关键动作用偏好包管理器在../package.json目录安装生成包包位置由 connector.yaml 的outputDir/package决定用initializeApp初始化 Firebase App配置可通过firebase_get_sdk_config工具获取从firebasegen/default-connector导入connectorConfig并调用getDataConnect或直接调用生成的操作函数内部自动完成实例兜底本地调试通过connectDataConnectEmulator连接模拟器也支持FIREBASE_DATA_CONNECT_EMULATOR_HOST环境变量。其背后的生成 SDK ↔ 运行时协作模式——validateArgs参数归一化、connectorConfig配置传递、queryRef/mutationRef引用构造——均在 packages/data-connect/src 中有完整实现可在阅读生成代码时对照源码加深理解。赞分享开发工具后端【免费下载链接】firebase-js-sdkFirebase Javascript SDK项目地址https://gitcode.com/gh_mirrors/fi/firebase-js-sdk点击查看免费下载相关推荐Firebase Data Connect Web SDK 完整 API 指南从初始化、查询订阅到缓存与错误处理Firebase Data Connect Web SDK 完整 API 指南从初始化、查询订阅到缓存与错误处理 本文基于 Firebase JavaScri开发工具后端在 macOS 桌面应用中集成 Sentry Cocoa SDK以 Hammerspoon 为例的安装、初始化与源码级实践在 macOS 桌面应用中集成 Sentry Cocoa SDK以 Hammerspoon 为例的安装、初始化与源码级实践 导读 本文以 Hammerspoo桌面应用工作流自动化Firebase JavaScript SDK Cloud Firestore API 完全指南从实例初始化到聚合查询与离线持久化Firebase JavaScript SDK Cloud Firestore API 完全指南从实例初始化到聚合查询与离线持久化 导读 本文以 fireb开发工具后端上一篇高效人脸识别实战DeepFace模型训练与学习率优化策略下一篇GPT-LLM-Trainer媒体转型数字新闻和内容生产革命创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考