AEM Headless SDK
AEM Headless SDK是一組程式庫,使用者端可使用這些程式庫,透過HTTP快速輕鬆地與AEM Headless API互動。
AEM Headless SDK適用於多種平台:
持續性 GraphQL 查詢
使用GraphQL透過持續查詢來查詢AEM (與 使用者端定義的GraphQL查詢)可讓開發人員在AEM中儲存查詢(但不儲存其結果),然後要求依名稱執行查詢。 持久查詢與SQL資料庫中預存程式的概念類似。
持續查詢的效能比使用者端定義的GraphQL查詢更高,因為持續查詢是使用HTTPGET執行,這在CDN和AEM Dispatcher層級中可以快取。 持久查詢也有效,定義API,並消除開發人員瞭解每個內容片段模式詳細資訊的需求。
程式碼範例 persisted-graphql-queries-code-examples
以下程式碼範例說明如何對AEM執行GraphQL持久查詢。
安裝 @adobe/aem-headless-client-js 藉由執行 npm install
Node.js專案的根目錄中的命令。
code language-none |
---|
|
此程式碼範例說明如何使用查詢AEM @adobe/aem-headless-client-js npm模組使用 async/await
語法。 適用於JavaScript的AEM Headless SDK也支援 Promise語法.
此程式碼會假設使用名稱的持續查詢 wknd/adventureNames
已在AEM Author上建立並發佈至AEM Publish。
code language-javascript |
---|
|
安裝 @adobe/aem-headless-client-js 藉由執行 npm install
React專案根目錄的命令。
code language-none |
---|
|
此程式碼範例說明如何使用 React useEffect(…) 勾點 以執行AEM GraphQL的非同步呼叫。
使用 useEffect
在React中進行非同步GraphQL呼叫很有用,因為:
- 它提供同步包裝函式,以供非同步呼叫AEM。
- 它減少了不必要的AEM請求。
此程式碼會假設使用名稱的持續查詢 wknd-shared/adventure-by-slug
已在AEM Author上建立並使用GraphiQL發佈至AEM Publish。
code language-javascript |
---|
|
叫用自訂React useEffect
從React元件的其他位置連結。
code language-javascript |
---|
|
新增 useEffect
可為React應用程式使用的每個持續查詢建立勾點。
GraphQL查詢
AEM支援使用者端定義的GraphQL查詢,不過使用AEM是最佳實務 持續的GraphQL查詢.
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
以安裝相依性。