AEM Headless SDK
AEM Headless SDK是一组库,客户端可以使用它通过HTTP与AEM Headless API快速轻松地交互。
AEM Headless SDK适用于各种平台:
持久 GraphQL 查询
使用GraphQL通过持久查询(与客户端定义的GraphQL查询不同)查询AEM允许开发人员在AEM中保留查询(但不保留其结果),然后请求按名称执行查询。 持久查询与SQL数据库中存储过程的概念类似。
持久查询比客户端定义的GraphQL查询性能更高,因为持久查询使用HTTPGET执行,该HTTP查询可在CDN和AEM Dispatcher层缓存。 持久查询也有效,定义了API,并降低了开发人员了解每个内容片段模型详细信息的需要。
代码示例 persisted-graphql-queries-code-examples
以下代码示例介绍了如何对AEM执行GraphQL持久查询。
通过从Node.js项目的根目录运行npm install
命令,安装@adobe/aem-headless-client-js。
code language-none |
---|
|
此代码示例说明如何使用@adobe/aem-headless-client-js npm模块通过async/await
语法查询AEM。 适用于JavaScript的AEM Headless SDK还支持承诺语法。
此代码假定已在AEM Author上创建名为wknd/adventureNames
的持久查询并将其发布到AEM Publish。
code language-javascript |
---|
|
通过从React项目的根目录运行npm install
命令来安装@adobe/aem-headless-client-js。
code language-none |
---|
|
此代码示例说明如何使用React useEffect(…) 挂接以执行对AEM GraphQL的异步调用。
在React中使用useEffect
进行异步GraphQL调用很有用,因为:
- 它为AEM的异步调用提供同步包装器。
- 它减少了不必要的请求AEM。
此代码假定已在AEM Author中创建名为wknd-shared/adventure-by-slug
的持久查询,并使用GraphiQL将其发布到AEM Publish。
code language-javascript |
---|
|
从React组件的其他位置调用自定义React useEffect
挂接。
code language-javascript |
---|
|
可以为React应用程序使用的每个持久查询创建新的useEffect
挂接。
GraphQL查询
AEM支持客户端定义的GraphQL查询,不过,使用持久GraphQL查询是AEM的最佳实践。
Webpack 5+
AEM Headless JS SDK对util
具有依赖关系,默认情况下,该依赖关系未包含在Webpack 5+中。 如果您使用的是Webpack 5+,则会收到以下错误:
Compiled with problems:
× ERROR in ./node_modules/@adobe/aio-lib-core-errors/src/AioCoreSDKErrorWrapper.js 12:13-28
Module not found: Error: Can't resolve 'util' in '/Users/me/Code/wknd-headless-examples/node_modules/@adobe/aio-lib-core-errors/src'
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.
If you want to include a polyfill, you need to:
- add a fallback 'resolve.fallback: { "util": require.resolve("util/") }'
- install 'util'
If you don't want to include a polyfill, you can use an empty module like this:
resolve.fallback: { "util": false }
将以下devDependencies
添加到您的package.json
文件:
"devDependencies": {
"buffer": "npm:buffer@^6.0.3",
"crypto": "npm:crypto-browserify@^3.12.0",
"http": "npm:stream-http@^3.2.0",
"https": "npm:https-browserify@^1.0.0",
"stream": "npm:stream-browserify@^3.0.0",
"util": "npm:util@^0.12.5",
"zlib": "npm:browserify-zlib@^0.2.0"
},
然后运行npm install
以安装依赖项。