亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
先決條件
關(guān)於項(xiàng)目
創(chuàng)建GraphCMS項(xiàng)目數(shù)據(jù)庫(kù)
GraphQL數(shù)據(jù)遷移
使用Vue.js構(gòu)建博客的前端
從GraphCMS提取數(shù)據(jù)
在模板中顯示數(shù)據(jù)
顯示單個(gè)文章
總結(jié)
關(guān)於無(wú)頭CMS和Vue.js的常見(jiàn)問(wèn)題解答 (FAQ)
使用無(wú)頭CMS和Vue.js的優(yōu)勢(shì)是什麼?
如何將無(wú)頭CMS與Vue.js集成?
我可以將任何無(wú)頭CMS與Vue.js一起使用嗎?
使用無(wú)頭CMS和Vue.js的項(xiàng)目示例有哪些?
無(wú)頭CMS如何提高Vue.js應(yīng)用程序的性能?
在Vue.js項(xiàng)目中從傳統(tǒng)CMS遷移到無(wú)頭CMS是否困難?
使用Vue.js的無(wú)頭CMS能否支持多種語(yǔ)言?
使用Vue.js的無(wú)頭CMS的安全性能如何?
我可以將無(wú)頭CMS與Vue.js一起用於移動(dòng)應(yīng)用程序開(kāi)發(fā)嗎?
使用無(wú)頭CMS和Vue.js的未來(lái)發(fā)展如何?
首頁(yè) web前端 js教程 如何為無(wú)頭CM構(gòu)建VUE前端

如何為無(wú)頭CM構(gòu)建VUE前端

Feb 14, 2025 am 09:51 AM

構(gòu)建現(xiàn)代化高效博客平臺(tái):Vue.js與GraphCMS的完美結(jié)合

How to Build a Vue Front End for a Headless CMS

核心要點(diǎn):

  • 利用Vue.js和GraphCMS構(gòu)建現(xiàn)代化、高效的博客平臺(tái),充分發(fā)揮JavaScript的速度和靈活性以及GraphQL強(qiáng)大的查詢功能。
  • 選擇GraphCMS是因?yàn)樗軌蛲ㄟ^(guò)GraphQL提供內(nèi)容,這在效率上優(yōu)於傳統(tǒng)的REST,因?yàn)樗试S複雜的查詢?cè)谝粋€(gè)請(qǐng)求中從多個(gè)模型中提取數(shù)據(jù)。
  • 使用Vue CLI設(shè)置你的Vue.js項(xiàng)目,包含Babel和Router等基本功能,並使用Bootstrap-Vue和Axios增強(qiáng)UI組件以進(jìn)行API交互。
  • 在Vue.js中實(shí)現(xiàn)動(dòng)態(tài)路由以處理各種內(nèi)容類別和單個(gè)文章視圖,確保無(wú)縫的用戶導(dǎo)航體驗(yàn)。
  • 通過(guò)構(gòu)建根據(jù)類別或單個(gè)slug檢索文章的GraphQL查詢,並將這些查詢集成到Vue.js組件中,從GraphCMS獲取和顯示文章。
  • 使用GraphQL變異來(lái)創(chuàng)建新評(píng)論並即時(shí)更新UI而無(wú)需頁(yè)面重新加載,從而擴(kuò)展博客的交互功能,例如評(píng)論系統(tǒng)。

本指南將指導(dǎo)你如何使用Vue.js和GraphCMS(一個(gè)無(wú)頭CMS平臺(tái))構(gòu)建現(xiàn)代化的博客網(wǎng)站。

如果你想今天就快速啟動(dòng)一個(gè)博客,我建議你直接使用WordPress。

但是,如果你是一個(gè)媒體巨頭,並且希望以最快的速度將你的內(nèi)容傳遞到多個(gè)設(shè)備呢?你可能還需要將你的內(nèi)容與廣告和其他第三方服務(wù)集成。你可以用WordPress做到這一點(diǎn),但是你會(huì)遇到這個(gè)平臺(tái)的一些問(wèn)題。

  1. 你需要安裝插件來(lái)實(shí)現(xiàn)附加功能。你安裝的插件越多,你的網(wǎng)站速度就越慢。
  2. 與大多數(shù)JavaScript Web框架相比,PHP相當(dāng)慢。從開(kāi)發(fā)人員的角度來(lái)看,在基於JavaScript的前端實(shí)現(xiàn)自定義功能要容易得多、也快得多。

在瀏覽器加載測(cè)試中,JavaScript的性能優(yōu)於PHP。此外,現(xiàn)代JavaScript及其生態(tài)系統(tǒng)在快速構(gòu)建新的Web體驗(yàn)方面提供了更愉悅的開(kāi)發(fā)體驗(yàn)。

想從頭開(kāi)始學(xué)習(xí)Vue.js嗎?這篇文章摘自我們的高級(jí)庫(kù)。立即加入SitePoint Premium,即可獲得涵蓋基礎(chǔ)知識(shí)、項(xiàng)目、技巧和工具等的Vue書籍全集,每月只需9美元。

因此,無(wú)頭CMS解決方案(這只是用於管理內(nèi)容的後端)的數(shù)量有所增長(zhǎng)。通過(guò)這種方法,開(kāi)發(fā)人員可以使用他們選擇的JavaScript框架專注於構(gòu)建快速且交互式的前端。自定義基於JavaScript的前端比更改WordPress網(wǎng)站要容易得多。

GraphCMS與大多數(shù)無(wú)頭CMS平臺(tái)的不同之處在於,它不是通過(guò)REST提供內(nèi)容,而是通過(guò)GraphQL提供內(nèi)容。這項(xiàng)新技術(shù)優(yōu)於REST,因?yàn)樗试S我們構(gòu)建查詢,這些查詢?cè)谝粋€(gè)請(qǐng)求中涉及屬於多個(gè)模型的數(shù)據(jù)。

考慮以下模型模式:

文章

  • id:數(shù)字
  • 標(biāo)題:字符串
  • 內(nèi)容:字符串
  • 評(píng)論:評(píng)論數(shù)組

評(píng)論

  • id:數(shù)字
  • 姓名:字符串
  • 消息:字符串

上述模型具有一對(duì)多(文章對(duì)評(píng)論)的關(guān)係。讓我們看看如何獲取附加了所有鏈接評(píng)論記錄的單個(gè)文章記錄。

如果數(shù)據(jù)位於關(guān)係數(shù)據(jù)庫(kù)中,則必須構(gòu)造一個(gè)低效的SQL語(yǔ)句,或者構(gòu)造兩個(gè)SQL語(yǔ)句才能乾淨(jìng)地獲取數(shù)據(jù)。如果數(shù)據(jù)存儲(chǔ)在NoSQL數(shù)據(jù)庫(kù)中,則可以使用像Vuex ORM這樣的現(xiàn)代ORM來(lái)輕鬆為你獲取數(shù)據(jù),如下所示:

const post = Post.query()
  .with('comments')
  .find(1);

非常簡(jiǎn)單!你可以輕鬆地通過(guò)REST將此數(shù)據(jù)傳遞給目標(biāo)客戶端。但問(wèn)題是:每當(dāng)客戶端的數(shù)據(jù)需求發(fā)生變化時(shí),你都將被迫返回你的後端代碼來(lái)更新你現(xiàn)有的API端點(diǎn),或者創(chuàng)建一個(gè)提供所需數(shù)據(jù)集的新端點(diǎn)。這種來(lái)回的過(guò)程既費(fèi)力又重複。

如果在客戶端級(jí)別,你可以隻請(qǐng)求你需要的數(shù)據(jù),而無(wú)需你做額外的工作,後端就會(huì)為你提供數(shù)據(jù)?嗯,這就是GraphQL的用途。

先決條件

在我們開(kāi)始之前,我想指出,本指南適用於中級(jí)到高級(jí)用戶。我不會(huì)講解基礎(chǔ)知識(shí),而是向你展示如何使用GraphCMS作為後端快速構(gòu)建Vue.js博客。你需要精通以下領(lǐng)域:

  • ES6和ES7 JavaScript
  • Vue.js(使用CLI版本3)
  • GraphQL

這就是你開(kāi)始本教程所需了解的一切。此外,使用REST的背景知識(shí)將非常有用,因?yàn)槲覍⒔?jīng)常引用它。如果你想複習(xí)一下,這篇文章可能會(huì)有幫助:“REST 2.0來(lái)了,它的名字叫GraphQL”。

關(guān)於項(xiàng)目

我們將構(gòu)建一個(gè)非常簡(jiǎn)單的博客應(yīng)用程序,並帶有一個(gè)基本的評(píng)論系統(tǒng)。以下是可以訪問(wèn)以查看已完成項(xiàng)目的鏈接:

  • CodeSandbox.io演示
  • GitHub倉(cāng)庫(kù)

請(qǐng)注意,演示中使用了只讀令牌,因此評(píng)論系統(tǒng)將無(wú)法工作。你需要根據(jù)本教程中的說(shuō)明提供你的OPEN權(quán)限令牌和端點(diǎn)才能使其工作。

創(chuàng)建GraphCMS項(xiàng)目數(shù)據(jù)庫(kù)

前往GraphCMS網(wǎng)站,然後單擊“免費(fèi)開(kāi)始構(gòu)建”按鈕。你將被帶到他們的註冊(cè)頁(yè)面。

How to Build a Vue Front End for a Headless CMS

使用你首選的方法註冊(cè)。完成帳戶身份驗(yàn)證和驗(yàn)證過(guò)程後,你應(yīng)該能夠訪問(wèn)主儀表板。

How to Build a Vue Front End for a Headless CMS

在上面的示例中,我已經(jīng)創(chuàng)建了一個(gè)名為“BlogDB”的項(xiàng)目。繼續(xù)創(chuàng)建一個(gè)新項(xiàng)目,並隨意命名。輸入名稱後,可以將其餘字段保留為默認(rèn)值。單擊創(chuàng)建,你將進(jìn)入他們的項(xiàng)目計(jì)劃。

How to Build a Vue Front End for a Headless CMS

在本教程中,選擇免費(fèi)的開(kāi)發(fā)者計(jì)劃,然後單擊繼續(xù)。你將進(jìn)入項(xiàng)目的儀表板,如下所示:

How to Build a Vue Front End for a Headless CMS

轉(zhuǎn)到模式選項(xiàng)卡。我們將創(chuàng)建以下模型,每個(gè)模型都有以下字段:

類別

  • 名稱:?jiǎn)涡形谋?,必填,唯?/li>

文章

  • slug:?jiǎn)涡形谋?,必填,唯?/li>
  • 標(biāo)題:?jiǎn)涡形谋?,必填,唯?/li>
  • 內(nèi)容:多行文本

評(píng)論

  • 姓名:?jiǎn)涡形谋?,必?/li>
  • 消息:多行文本,必填

使用創(chuàng)建模型按鈕創(chuàng)建模型。在右側(cè),你應(yīng)該找到一個(gè)用於字段的隱藏面板,可以通過(guò)單擊字段按鈕激活它。將適當(dāng)?shù)淖侄晤愋屯戏诺侥P偷拿姘迳稀D銓⒖吹揭粋€(gè)表單,用於填寫字段的屬性。請(qǐng)注意,底部有一個(gè)粉紅色的按鈕,標(biāo)記為高級(jí)。單擊它將展開(kāi)面板,為你提供更多可以啟用的字段屬性。

How to Build a Vue Front End for a Headless CMS

接下來(lái),你需要按如下方式添加模型之間的關(guān)係:

  • 文章 > 類別(多對(duì)多)
  • 文章 > 評(píng)論(一對(duì)多)

使用引用字段定義此關(guān)係。你可以在任何一方添加此字段;GraphCMS將自動(dòng)在引用的模型中創(chuàng)建相反的關(guān)係字段。完成模型定義後,你應(yīng)該擁有如下內(nèi)容:

How to Build a Vue Front End for a Headless CMS

你現(xiàn)在已經(jīng)完成了第一部分。現(xiàn)在讓我們?yōu)槲覀兊哪P吞峁┮恍?shù)據(jù)。

GraphQL數(shù)據(jù)遷移

要向模型添加內(nèi)容,你可以簡(jiǎn)單地單擊項(xiàng)目?jī)x表板中的內(nèi)容選項(xiàng)卡,你可以在其中為每個(gè)模型創(chuàng)建新記錄。但是,如果你發(fā)現(xiàn)這是一種緩慢的方法,你會(huì)很高興知道我已經(jīng)創(chuàng)建了一個(gè)GraphCMS遷移工具,它可以從CSV文件複製數(shù)據(jù)並將其上傳到你的GraphCMS數(shù)據(jù)庫(kù)。你可以在這個(gè)GitHub存儲(chǔ)庫(kù)中找到該項(xiàng)目。要開(kāi)始使用該項(xiàng)目,只需將其下載到你的工作區(qū),如下所示:

const post = Post.query()
  .with('comments')
  .find(1);

接下來(lái),你需要從儀表板的設(shè)置頁(yè)面獲取你的GraphCMS項(xiàng)目的API端點(diǎn)和令牌。你需要?jiǎng)?chuàng)建一個(gè)新的令牌。對(duì)於權(quán)限級(jí)別,使用OPEN,因?yàn)檫@將允許該工具對(duì)你的GraphCMS數(shù)據(jù)庫(kù)執(zhí)行讀取和寫入操作。創(chuàng)建一個(gè)名為.env的文件並將其放在項(xiàng)目的根目錄下:

git clone git@github.com:sitepoint-editors/graphcsms-data-migration.git
cd graphcsms-data-migration
npm install

接下來(lái),你可能需要使用你自己的數(shù)據(jù)填充data文件夾中的CSV文件。以下是一些已使用的示例數(shù)據(jù):

<code>ENDPOINT=<你的API端點(diǎn)>
TOKEN=<你的OPEN權(quán)限令牌></code>

你可以根據(jù)需要更改內(nèi)容。確保不要觸摸頂行,否則你會(huì)更改字段名稱。請(qǐng)注意,對(duì)於categories列,我已經(jīng)使用管道|字符作為分隔符。

要將CSV數(shù)據(jù)上傳到你的GraphCMS數(shù)據(jù)庫(kù),請(qǐng)按以下順序執(zhí)行以下命令:

<code>// Categories.csv
name
Featured
Food
Fashion
Beauty

// Posts.csv
title,slug,content,categories
Food Post 1,food-post-1,Breeze through Thanksgiving by making this Instant Pot orange cranberry sauce,Food|Featured
Food Post 2,food-post-2,This is my second food post,Food
Food Post 3,food-post-3,This is my last and final food post,Food
Fashion Post 1,fashion-post-1,This is truly my very first fashion post,Fashion|Featured
Fashion Post 2,fashion-post-2,This is my second fashion post,Fashion
Fashion Post 3,fashion-post-3,This is my last and final fashion post,Fashion
Beauty Post 1,Beauty-post-1,This is truly my very first Beauty post,Beauty|Featured
Beauty Post 2,Beauty-post-2,This is my second beauty post,Beauty</code>

每個(gè)腳本都將打印出已成功上傳的記錄。我們首先上傳類別的原因是為了讓文章記錄能夠成功鏈接到現(xiàn)有的類別記錄。

如果你想清理你的數(shù)據(jù)庫(kù),你可以運(yùn)行以下命令:

npm run categories
npm run posts

此腳本將刪除所有模型的內(nèi)容。你將收到一份報(bào)告,指示每個(gè)模型刪除了多少條記錄。

我希望你發(fā)現(xiàn)這個(gè)工具很方便。返回儀表板以確認(rèn)文章和類別的數(shù)

據(jù)已成功上傳。

後端已處理完畢,讓我們開(kāi)始構(gòu)建我們的前端博客界面。

使用Vue.js構(gòu)建博客的前端

如前所述,我們將構(gòu)建一個(gè)由GraphCMS數(shù)據(jù)庫(kù)後端支持的非常簡(jiǎn)單的博客應(yīng)用程序。啟動(dòng)終端並導(dǎo)航到你的工作區(qū)。

如果你還沒(méi)有安裝Vue CLI,現(xiàn)在就安裝:

npm run reset

然後創(chuàng)建一個(gè)新項(xiàng)目:

npm install -g @vue/cli

選擇手動(dòng)選擇功能,然後選擇以下選項(xiàng):

  • 功能:Babel,Router
  • 路由歷史模式:Y
  • 僅使用錯(cuò)誤預(yù)防的ESLint
  • 保存時(shí)進(jìn)行棉絨檢查
  • 配置文件位置:專用配置文件
  • 保存預(yù)設(shè):你的選擇

項(xiàng)目創(chuàng)建過(guò)程完成後,更改到項(xiàng)目目錄並安裝以下依賴項(xiàng):

vue create vue-graphcms

要在我們的項(xiàng)目中設(shè)置Bootstrap-Vue,只需打開(kāi)src/main.js並添加以下代碼:

npm install bootstrap-vue axios

接下來(lái),我們需要開(kāi)始構(gòu)建項(xiàng)目結(jié)構(gòu)。在src/components文件夾中,刪除現(xiàn)有文件並創(chuàng)建這些新文件:

  • CommentForm.vue
  • CommentList.vue
  • Post.vue
  • PostList.vue

在src/views文件夾中,刪除About.vue並創(chuàng)建一個(gè)名為PostView.vue的新文件。從演示中可以看出,我們將有幾個(gè)類別頁(yè)面,每個(gè)頁(yè)面都顯示按類別過(guò)濾的文章列表。從技術(shù)上講,只有一個(gè)頁(yè)面將根據(jù)活動(dòng)路由名稱顯示不同的文章列表。 PostList組件將根據(jù)當(dāng)前路由過(guò)濾文章。

讓我們首先設(shè)置路由。打開(kāi)src/router.js並將現(xiàn)有代碼替換為此代碼:

const post = Post.query()
  .with('comments')
  .find(1);

現(xiàn)在我們有了路由,讓我們?cè)O(shè)置導(dǎo)航菜單。打開(kāi)src/App.vue並將現(xiàn)有代碼替換為此代碼:

git clone git@github.com:sitepoint-editors/graphcsms-data-migration.git
cd graphcsms-data-migration
npm install

這將在我們網(wǎng)站的頂部添加一個(gè)導(dǎo)航欄,其中包含指向我們不同類別的鏈接。

保存文件並相應(yīng)地更新以下文件:

src/views/Home.vue

<code>ENDPOINT=<你的API端點(diǎn)>
TOKEN=<你的OPEN權(quán)限令牌></code>

src/components/PostList.vue

<code>// Categories.csv
name
Featured
Food
Fashion
Beauty

// Posts.csv
title,slug,content,categories
Food Post 1,food-post-1,Breeze through Thanksgiving by making this Instant Pot orange cranberry sauce,Food|Featured
Food Post 2,food-post-2,This is my second food post,Food
Food Post 3,food-post-3,This is my last and final food post,Food
Fashion Post 1,fashion-post-1,This is truly my very first fashion post,Fashion|Featured
Fashion Post 2,fashion-post-2,This is my second fashion post,Fashion
Fashion Post 3,fashion-post-3,This is my last and final fashion post,Fashion
Beauty Post 1,Beauty-post-1,This is truly my very first Beauty post,Beauty|Featured
Beauty Post 2,Beauty-post-2,This is my second beauty post,Beauty</code>

請(qǐng)注意,在PostList組件中,我們使用自定義觀察器來(lái)根據(jù)當(dāng)前URL更新我們的category數(shù)據(jù)屬性。

現(xiàn)在我們可以進(jìn)行快速測(cè)試以確認(rèn)路由是否正常工作。使用命令npm run serve啟動(dòng)Vue.js服務(wù)器。在localhost:8080處打開(kāi)瀏覽器並測(cè)試每個(gè)導(dǎo)航鏈接。 category屬性應(yīng)該輸出我們?cè)趓oute name屬性中定義的相同值。

How to Build a Vue Front End for a Headless CMS

從GraphCMS提取數(shù)據(jù)

現(xiàn)在我們的路由代碼已經(jīng)可以工作了,讓我們看看如何從我們的GraphCMS後端提取信息。在項(xiàng)目的根目錄下,創(chuàng)建一個(gè)env.local文件並使用以下字段的值填充它:

npm run categories
npm run posts

請(qǐng)注意,Vue.js單頁(yè)應(yīng)用程序僅加載以VUE_APP開(kāi)頭的自定義環(huán)境變量。你可以從你的GraphCMS儀表板設(shè)置頁(yè)面找到API端點(diǎn)和令牌。對(duì)於令牌,請(qǐng)確保創(chuàng)建一個(gè)具有OPEN權(quán)限的令牌,因?yàn)樗鼘⒃试S讀取和寫入操作。接下來(lái),創(chuàng)建文件src/graphcms.js並複制以下代碼:

npm run reset

我們剛剛創(chuàng)建的這個(gè)輔助文件提供了兩個(gè)主要功能:

  • 它創(chuàng)建了一個(gè)axios實(shí)例,該實(shí)例配置為對(duì)你的GraphCMS後端執(zhí)行授權(quán)請(qǐng)求。
  • 它包含本項(xiàng)目中使用的GraphQL查詢和變異。它們負(fù)責(zé)獲取文章(按類別或按slug),以及創(chuàng)建新評(píng)論。如果你想了解更多關(guān)於GraphQL查詢和變異的信息,請(qǐng)查閱GraphQL文檔。

你也可以使用項(xiàng)目?jī)x表板中的API資源管理器來(lái)測(cè)試這些查詢和變異。為此,請(qǐng)從上面的代碼中復(fù)制查詢或變異,並將其粘貼到API資源管理器的頂部窗口中。在下面的窗口中輸入任何查詢變量,然後點(diǎn)擊播放按鈕。你應(yīng)該在右側(cè)的新窗格中看到結(jié)果。

這是一個(gè)查詢示例:

How to Build a Vue Front End for a Headless CMS

這是一個(gè)變異示例:

How to Build a Vue Front End for a Headless CMS

在模板中顯示數(shù)據(jù)

現(xiàn)在,讓我們?cè)趕rc/components/PostList.vue中創(chuàng)建HTML模板,它將以簡(jiǎn)潔的方式顯示文章列表。我們還將添加axios代碼,該代碼將從我們的GraphCMS數(shù)據(jù)庫(kù)中提取文章數(shù)據(jù):

const post = Post.query()
  .with('comments')
  .find(1);

讓我們快速瀏覽一下代碼的主要功能:

  • 加載。發(fā)出請(qǐng)求時(shí),將顯示加載微調(diào)器以向用戶指示正在進(jìn)行某些操作。請(qǐng)求完成後,加載微調(diào)器將被文章列表替換。
  • 查詢。為了按類別獲取文章列表,我發(fā)現(xiàn)查詢類別然後使用類別到文章的關(guān)係來(lái)訪問(wèn)過(guò)濾後的文章更容易。
  • 創(chuàng)建。首次加載頁(yè)面時(shí),將從created生命週期鉤子內(nèi)調(diào)用fetchPosts()函數(shù)。
  • 觀察。當(dāng)路由URL更改時(shí),每次都會(huì)調(diào)用fetchPosts()函數(shù)。

進(jìn)行這些更改後,你應(yīng)該現(xiàn)在看到以下視圖:

How to Build a Vue Front End for a Headless CMS

顯示單個(gè)文章

確保頂部主導(dǎo)航按預(yù)期工作?,F(xiàn)在讓我們處理Post組件。它將有自己的fetchPost()函數(shù),它將按slug進(jìn)行查詢。如果你想知道slug參數(shù)來(lái)自哪裡,讓我提醒你我們?cè)趓outer.js中添加的這段代碼:

git clone git@github.com:sitepoint-editors/graphcsms-data-migration.git
cd graphcsms-data-migration
npm install

這表示URL中/post/後面的任何內(nèi)容都可以在組件中作為this.$route.params.slug使用。

post組件是CommentForm和CommentList組件的父組件。評(píng)論數(shù)據(jù)將作為props從文章記錄傳遞到CommentList組件?,F(xiàn)在讓我們插入src/components/CommentList.vue的代碼:

<code>ENDPOINT=<你的API端點(diǎn)>
TOKEN=<你的OPEN權(quán)限令牌></code>

除非你已通過(guò)GraphCMS儀表板手動(dòng)輸入評(píng)論,否則現(xiàn)在不要期望看到任何結(jié)果。讓我們向src/components/CommentForm.vue添加代碼,該代碼將使用戶能夠向博客文章添加評(píng)論:

<code>// Categories.csv
name
Featured
Food
Fashion
Beauty

// Posts.csv
title,slug,content,categories
Food Post 1,food-post-1,Breeze through Thanksgiving by making this Instant Pot orange cranberry sauce,Food|Featured
Food Post 2,food-post-2,This is my second food post,Food
Food Post 3,food-post-3,This is my last and final food post,Food
Fashion Post 1,fashion-post-1,This is truly my very first fashion post,Fashion|Featured
Fashion Post 2,fashion-post-2,This is my second fashion post,Fashion
Fashion Post 3,fashion-post-3,This is my last and final fashion post,Fashion
Beauty Post 1,Beauty-post-1,This is truly my very first Beauty post,Beauty|Featured
Beauty Post 2,Beauty-post-2,This is my second beauty post,Beauty</code>

現(xiàn)在我們有一個(gè)基本的評(píng)論表單,能夠?qū)⑿略u(píng)論提交到我們的GraphQL後端系統(tǒng)。保存新評(píng)論後,我們將獲取返回的對(duì)象並將其添加到post.comments數(shù)組中。這應(yīng)該觸發(fā)CommentList組件顯示新添加的評(píng)論。

現(xiàn)在讓我們構(gòu)建src/components/Post.vue組件:

npm run categories
npm run posts

最後,這是src/views/PostView.vue的代碼,用於將所有內(nèi)容整合在一起:

npm run reset

你應(yīng)該現(xiàn)在看到文章的視圖了。注意URL結(jié)尾處的:slug:localhost:8080/post/fashion-post-1:

How to Build a Vue Front End for a Headless CMS

在上面的示例中,我已經(jīng)添加了一些評(píng)論來(lái)測(cè)試新功能。確保你也這樣做。

總結(jié)

我希望你已經(jīng)看到使用Vue.js和GraphQL構(gòu)建博客網(wǎng)站是多麼容易。如果你一直在使用普通的PHP和MySQL,你將編寫更多代碼。即使使用PHP框架,你仍然需要為簡(jiǎn)單的博客應(yīng)用程序編寫更多代碼。

為了本教程的目的,我必須盡可能地保持簡(jiǎn)單。你可能會(huì)注意到,這個(gè)博客項(xiàng)目甚至還遠(yuǎn)遠(yuǎn)達(dá)不到最簡(jiǎn)單的博客設(shè)置。我們還沒(méi)有解決很多問(wèn)題,例如錯(cuò)誤處理、表單驗(yàn)證和緩存。對(duì)於最後一部分,我推薦Apollo Client,因?yàn)樗哂芯彺鍳raphQL查詢結(jié)果的機(jī)制。然後,當(dāng)然需要一個(gè)作者模型和一個(gè)支持身份驗(yàn)證和消息批準(zhǔn)的適當(dāng)?shù)脑u(píng)論系統(tǒng)。

如果你願(yuàn)意,請(qǐng)繼續(xù)改進(jìn)這個(gè)簡(jiǎn)單的Vue.js GraphCMS博客。

關(guān)於無(wú)頭CMS和Vue.js的常見(jiàn)問(wèn)題解答 (FAQ)

使用無(wú)頭CMS和Vue.js的優(yōu)勢(shì)是什麼?

使用無(wú)頭CMS和Vue.js具有多種優(yōu)勢(shì)。首先,它提供了一個(gè)更靈活、更高效的內(nèi)容管理系統(tǒng)。它將後端和前端分開(kāi),允許開(kāi)發(fā)人員獨(dú)立處理兩端。這種分離還意味著CMS可以向任何平臺(tái)提供內(nèi)容,而不僅僅是網(wǎng)站。其次,Vue.js是一個(gè)漸進(jìn)式JavaScript框架,易於理解並與現(xiàn)有項(xiàng)目集成。它提供了一個(gè)簡(jiǎn)單靈活的API,使其成為無(wú)頭CMS的完美匹配。

如何將無(wú)頭CMS與Vue.js集成?

將無(wú)頭CMS與Vue.js集成涉及幾個(gè)步驟。首先,你需要選擇一個(gè)支持基於API的通信的無(wú)頭CMS。接下來(lái),你需要設(shè)置你的Vue.js項(xiàng)目並安裝必要的依賴項(xiàng)。然後,你可以使用CMS的API來(lái)獲取內(nèi)容並在你的Vue.js應(yīng)用程序中顯示它。一些CMS還提供SDK或插件,使這種集成更容易。

我可以將任何無(wú)頭CMS與Vue.js一起使用嗎?

是的,只要無(wú)頭CMS支持基於API的通信,你就可以將任何無(wú)頭CMS與Vue.js一起使用。這是因?yàn)閂ue.js是一個(gè)前端框架,它通過(guò)API與後端(在本例中為CMS)進(jìn)行通信。一些你可以與Vue.js一起使用的流行無(wú)頭CMS包括Strapi、Sanity和ButterCMS。

使用無(wú)頭CMS和Vue.js的項(xiàng)目示例有哪些?

有很多項(xiàng)目使用無(wú)頭CMS和Vue.js。這些項(xiàng)目範(fàn)圍從博客和電子商務(wù)網(wǎng)站到成熟的Web應(yīng)用程序。一些示例包括使用VuePress(一個(gè)基於Vue的靜態(tài)網(wǎng)站生成器)的Vue.js文檔站點(diǎn),以及使用Storyblok(一個(gè)無(wú)頭CMS)和Nuxt.js(一個(gè)Vue.js框架)的Storyblok網(wǎng)站。

無(wú)頭CMS如何提高Vue.js應(yīng)用程序的性能?

無(wú)頭CMS可以顯著提高Vue.js應(yīng)用程序的性能。通過(guò)將後端和前端分開(kāi),它允許更有效的內(nèi)容交付。 CMS可以僅交付必要的內(nèi)容,從而減少需要傳輸和處理的數(shù)據(jù)量。這可以導(dǎo)致更快的頁(yè)面加載時(shí)間和更流暢的用戶體驗(yàn)。

在Vue.js項(xiàng)目中從傳統(tǒng)CMS遷移到無(wú)頭CMS是否困難?

在Vue.js項(xiàng)目中從傳統(tǒng)CMS遷移到無(wú)頭CMS的難度取決於項(xiàng)目的複雜性和所使用的CMS。但是,大多數(shù)無(wú)頭CMS都提供工具和文檔來(lái)幫助遷移過(guò)程。此外,由於Vue.js是一個(gè)靈活且模塊化的框架,它通常可以在無(wú)需對(duì)現(xiàn)有代碼進(jìn)行重大更改的情況下適應(yīng)這種遷移。

使用Vue.js的無(wú)頭CMS能否支持多種語(yǔ)言?

是的,使用Vue.js的無(wú)頭CMS可以支持多種語(yǔ)言。許多無(wú)頭CMS都提供內(nèi)置的多語(yǔ)言支持,允許你管理不同語(yǔ)言的內(nèi)容。在Vue.js方面,你可以使用vue-i18n等庫(kù)來(lái)處理國(guó)際化。

使用Vue.js的無(wú)頭CMS的安全性能如何?

使用Vue.js的無(wú)頭CMS可以非常安全。後端和前端的分離增加了額外的安全層,因?yàn)樗鼫p少了攻擊面。此外,大多數(shù)無(wú)頭CMS都提供強(qiáng)大的安全功能,例如SSL加密、用戶身份驗(yàn)證和訪問(wèn)控制。 Vue.js還具有針對(duì)常見(jiàn)Web漏洞的內(nèi)置保護(hù)措施。

我可以將無(wú)頭CMS與Vue.js一起用於移動(dòng)應(yīng)用程序開(kāi)發(fā)嗎?

是的,你可以將無(wú)頭CMS與Vue.js一起用於移動(dòng)應(yīng)用程序開(kāi)發(fā)。因?yàn)闊o(wú)頭CMS通過(guò)API提供內(nèi)容,所以它可以向任何平臺(tái)提供內(nèi)容,包括移動(dòng)應(yīng)用程序。 Vue.js可以使用NativeScript或Weex等框架進(jìn)行移動(dòng)應(yīng)用程序開(kāi)發(fā)。

使用無(wú)頭CMS和Vue.js的未來(lái)發(fā)展如何?

使用無(wú)頭CMS和Vue.js的未來(lái)發(fā)展前景廣闊。這兩種技術(shù)的普及率都在增長(zhǎng),並且它們正在越來(lái)越多的項(xiàng)目中使用。這種組合的靈活性和效率以及性能優(yōu)勢(shì)使其成為現(xiàn)代Web開(kāi)發(fā)的強(qiáng)大選擇。隨著越來(lái)越多的開(kāi)發(fā)人員熟悉這些技術(shù),我們可以期待看到更多創(chuàng)新用途和集成。

以上是如何為無(wú)頭CM構(gòu)建VUE前端的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

垃圾收集如何在JavaScript中起作用? 垃圾收集如何在JavaScript中起作用? Jul 04, 2025 am 12:42 AM

JavaScript的垃圾回收機(jī)制通過(guò)標(biāo)記-清除算法自動(dòng)管理內(nèi)存,以減少內(nèi)存洩漏風(fēng)險(xiǎn)。引擎從根對(duì)像出發(fā)遍歷並標(biāo)記活躍對(duì)象,未被標(biāo)記的則被視為垃圾並被清除。例如,當(dāng)對(duì)像不再被引用(如將變量設(shè)為null),它將在下一輪迴收中被釋放。常見(jiàn)的內(nèi)存洩漏原因包括:①未清除的定時(shí)器或事件監(jiān)聽(tīng)器;②閉包中對(duì)外部變量的引用;③全局變量持續(xù)持有大量數(shù)據(jù)。 V8引擎通過(guò)分代回收、增量標(biāo)記、並行/並發(fā)回收等策略優(yōu)化回收效率,降低主線程阻塞時(shí)間。開(kāi)發(fā)時(shí)應(yīng)避免不必要的全局引用、及時(shí)解除對(duì)象關(guān)聯(lián),以提升性能與穩(wěn)定性。

如何在node.js中提出HTTP請(qǐng)求? 如何在node.js中提出HTTP請(qǐng)求? Jul 13, 2025 am 02:18 AM

在Node.js中發(fā)起HTTP請(qǐng)求有三種常用方式:使用內(nèi)置模塊、axios和node-fetch。 1.使用內(nèi)置的http/https模塊無(wú)需依賴,適合基礎(chǔ)場(chǎng)景,但需手動(dòng)處理數(shù)據(jù)拼接和錯(cuò)誤監(jiān)聽(tīng),例如用https.get()獲取數(shù)據(jù)或通過(guò).write()發(fā)送POST請(qǐng)求;2.axios是基於Promise的第三方庫(kù),語(yǔ)法簡(jiǎn)潔且功能強(qiáng)大,支持async/await、自動(dòng)JSON轉(zhuǎn)換、攔截器等,推薦用於簡(jiǎn)化異步請(qǐng)求操作;3.node-fetch提供類似瀏覽器fetch的風(fēng)格,基於Promise且語(yǔ)法簡(jiǎn)單

JavaScript數(shù)據(jù)類型:原始與參考 JavaScript數(shù)據(jù)類型:原始與參考 Jul 13, 2025 am 02:43 AM

JavaScript的數(shù)據(jù)類型分為原始類型和引用類型。原始類型包括string、number、boolean、null、undefined和symbol,其值不可變且賦值時(shí)復(fù)制副本,因此互不影響;引用類型如對(duì)象、數(shù)組和函數(shù)存儲(chǔ)的是內(nèi)存地址,指向同一對(duì)象的變量會(huì)相互影響。判斷類型可用typeof和instanceof,但需注意typeofnull的歷史問(wèn)題。理解這兩類差異有助於編寫更穩(wěn)定可靠的代碼。

JavaScript時(shí)間對(duì)象,某人構(gòu)建了一個(gè)eactexe,在Google Chrome上更快的網(wǎng)站等等 JavaScript時(shí)間對(duì)象,某人構(gòu)建了一個(gè)eactexe,在Google Chrome上更快的網(wǎng)站等等 Jul 08, 2025 pm 02:27 PM

JavaScript開(kāi)發(fā)者們,大家好!歡迎閱讀本週的JavaScript新聞!本週我們將重點(diǎn)關(guān)注:Oracle與Deno的商標(biāo)糾紛、新的JavaScript時(shí)間對(duì)象獲得瀏覽器支持、GoogleChrome的更新以及一些強(qiáng)大的開(kāi)發(fā)者工具。讓我們開(kāi)始吧! Oracle與Deno的商標(biāo)之爭(zhēng)Oracle試圖註冊(cè)“JavaScript”商標(biāo)的舉動(dòng)引發(fā)爭(zhēng)議。 Node.js和Deno的創(chuàng)建者RyanDahl已提交請(qǐng)願(yuàn)書,要求取消該商標(biāo),他認(rèn)為JavaScript是一個(gè)開(kāi)放標(biāo)準(zhǔn),不應(yīng)由Oracle

React與Angular vs Vue:哪個(gè)JS框架最好? React與Angular vs Vue:哪個(gè)JS框架最好? Jul 05, 2025 am 02:24 AM

選哪個(gè)JavaScript框架最好?答案是根據(jù)需求選擇最適合的。 1.React靈活自由,適合需要高度定制、團(tuán)隊(duì)有架構(gòu)能力的中大型項(xiàng)目;2.Angular提供完整解決方案,適合企業(yè)級(jí)應(yīng)用和長(zhǎng)期維護(hù)的大項(xiàng)目;3.Vue上手簡(jiǎn)單,適合中小型項(xiàng)目或快速開(kāi)發(fā)。此外,是否已有技術(shù)棧、團(tuán)隊(duì)規(guī)模、項(xiàng)目生命週期及是否需要SSR也都是選擇框架的重要因素??傊?,沒(méi)有絕對(duì)最好的框架,適合自己需求的就是最佳選擇。

立即在JavaScript中立即調(diào)用功能表達(dá)式(IIFE) 立即在JavaScript中立即調(diào)用功能表達(dá)式(IIFE) Jul 04, 2025 am 02:42 AM

IIFE(ImmediatelyInvokedFunctionExpression)是一種在定義後立即執(zhí)行的函數(shù)表達(dá)式,用於變量隔離和避免污染全局作用域。它通過(guò)將函數(shù)包裹在括號(hào)中使其成為表達(dá)式,並緊隨其後的一對(duì)括號(hào)來(lái)調(diào)用,如(function(){/code/})();。其核心用途包括:1.避免變量衝突,防止多個(gè)腳本間的命名重複;2.創(chuàng)建私有作用域,使函數(shù)內(nèi)部變量不可見(jiàn);3.模塊化代碼,便於初始化工作而不暴露過(guò)多變量。常見(jiàn)寫法包括帶參數(shù)傳遞的版本和ES6箭頭函數(shù)版本,但需注意:必須使用表達(dá)式、結(jié)

處理諾言:鏈接,錯(cuò)誤處理和承諾在JavaScript中 處理諾言:鏈接,錯(cuò)誤處理和承諾在JavaScript中 Jul 08, 2025 am 02:40 AM

Promise是JavaScript中處理異步操作的核心機(jī)制,理解鍊式調(diào)用、錯(cuò)誤處理和組合器是掌握其應(yīng)用的關(guān)鍵。 1.鍊式調(diào)用通過(guò).then()返回新Promise實(shí)現(xiàn)異步流程串聯(lián),每個(gè).then()接收上一步結(jié)果並可返回值或Promise;2.錯(cuò)誤處理應(yīng)統(tǒng)一使用.catch()捕獲異常,避免靜默失敗,並可在catch中返回默認(rèn)值繼續(xù)流程;3.組合器如Promise.all()(全成功才成功)、Promise.race()(首個(gè)完成即返回)和Promise.allSettled()(等待所有完成)

什麼是緩存API?如何與服務(wù)人員使用? 什麼是緩存API?如何與服務(wù)人員使用? Jul 08, 2025 am 02:43 AM

CacheAPI是瀏覽器提供的一種緩存網(wǎng)絡(luò)請(qǐng)求的工具,常與ServiceWorker配合使用,以提升網(wǎng)站性能和離線體驗(yàn)。 1.它允許開(kāi)發(fā)者手動(dòng)存儲(chǔ)如腳本、樣式表、圖片等資源;2.可根據(jù)請(qǐng)求匹配緩存響應(yīng);3.支持刪除特定緩存或清空整個(gè)緩存;4.通過(guò)ServiceWorker監(jiān)聽(tīng)fetch事件實(shí)現(xiàn)緩存優(yōu)先或網(wǎng)絡(luò)優(yōu)先等策略;5.常用於離線支持、加快重複訪問(wèn)速度、預(yù)加載關(guān)鍵資源及後臺(tái)更新內(nèi)容;6.使用時(shí)需注意緩存版本控制、存儲(chǔ)限制及與HTTP緩存機(jī)制的區(qū)別。

See all articles