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持久查詢。
從您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也支援Promise語法。
此程式碼假設在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查詢,不過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
以安裝相依性。