>您可以輕鬆地將您的想法發佈到諸如Dev.to,Hashnode或Medium之類的網站,但理想是對自己的內容充分控制。有一個不斷增長的工具清單,用於構建自己的網站並控制自己的內容。在這個廣泛的教程中,我將介紹如何使用蓋茨比(Gatsby)發出內容,並在這種生態系統中獲得添加的鈴鐺和哨子。
>>我最初使用jekyll發布我的博客,但隨後使用Lumen模板切換到Gatsby。自2017年5月左右,我一直在使用Gatsby。
>>我將從你好,世界上去! Gatsby項目通過代碼語法突出顯示的編碼博客和該深色模式的主題切換。
>有一個豐富的插件,開頭和主題生態系統可供蓋茨比迅速啟動並運行,但我想採用一種漸進的披露方法來展示蓋茨比,重點是蓋茨比項目的基礎知識。 >
為什麼蓋茨比?Markdown和MDX
>自2016年以來,我一直在記錄自己的開發旅程。 Markdown提供了一種啟用可以轉換為HTML的純文本文件中簡單編輯的方法。
到目前為止,Gatsby是我用於使用Markdown和MDX的最佳框架,因為上面不需要使用FrontMatter的特殊符號。 如果您要遵循,則需要一些事情:
如果您沒有這些,則既有stackblitz and github代碼碼
酷。現在,在其他任何地方去其他任何地方之前,我都需要在安裝任何NPM模塊之前添加.gitignore文件: >現在,我可以安裝所有需要的NPM優點,而無需VS代碼git尖叫我太多的活動更改。現在,讓我們安裝一些依賴項,以與Gatsby一起啟動並運行: 接下來,我們將為該項目添加第一個React組件(許多)。我將以下內容添加到我創建的index.js文件中:
>直接使用命令行接口(CLI)的gatsby二進制命令是完全可行的,但是大多數人會將可用命令添加到package.json文件上的腳本部分。
作為額外的獎勵,可以在此處添加一些其他功能。 如果我們想打開“瀏覽器”選項卡,一旦項目準備就緒,我們可以將-O添加到腳本中。 我將使用服務腳本做同樣的事情,所以我知道當我構建一個項目時,它是在開發一個端口上的不同端口: ,強制性的“你好,世界!”歡迎使用,我可以繼續介紹本文的其餘部分! ? 最後,我將提交我到目前為止所做的更改: >博客的內容 好吧,該項目現在沒有很多事情要做,所以首先,我將再次從命令行中添加一些內容: >您會注意到文件擴展名.mdx。這是一個MDX文件。
前提是一種存儲有關蓋茨比在構建頁面時可以使用的文件的信息的方法。現在,我將添加帖子標題和日期。我還將為他們添加一些內容。這是我們的第一篇文章:
第三篇文章: >目前的帖子就是這樣,因為這些帖子尚未被蓋茨比(Gatsby)識別為頁面。我需要讓Gatsby知道在哪裡可以找到可以添加到項目中的內容。為此,我將向蓋茨比添加一個配置文件。 gatsby配置是用於定義和配置您可以使用的許多蓋茨比插件的方法。在蓋茨比插件生態系統上有更多信息。現在,我將在終端中再次創建文件: 蓋茨比插件
>要注意的一件事是,在蓋茨比(Gatsby)中,不需要在您的組件中導入react 17的反應。但是,為了完整,為了避免任何混亂,我將其包括在這些示例中。
>
commit變化到現在: gatsby graphql
graphiql查詢面板和結果旁邊。在這裡,我將編寫GraphQl查詢以檢索所需的數據。查詢面板底部還有一個查詢變量部分,稍後我將進行。 是GraphQl文檔資源管理器。由於GraphQl的嚴格鍵入,這意味著它能夠在其數據上生成自己的文檔。但這超出了這篇文章的範圍。 >與GraphQl 接下來,我將查詢我在Graphiql查詢面板中之前添加的文件。在此查詢中,我要查詢文件字體問題中定義的標題和日期:
這是一個很大的JSON對象,其中包含我們在查詢中要求的相關信息。我們將盡快查看如何使用它。目前,這意味著我們可以在Gatsby項目中使用此數據來製作頁面。
i
然後,將SiteMetAdata對象添加到Gatsby配置文件:
>,然後開發紗線),然後在GraphIQL Explorer中刷新頁面並再次運行查詢以獲取數據: 做一個站點元數據鉤
>關於其中一些符號的快速註釋:const {stity:{siteMetAdata},}是快速獲取網站查詢中數據的方法,在此我將SiteMetAdata從站點對像中拉出。這被稱為破壞性。 >
現在,在我再次啟動Dev Server之後,我可以轉到Windows/Linux中的瀏覽器控制台( j在macOS上),請參見控制台輸出中的sitemetadata對象。 >
我將獲得以下控制台輸出:
>不必擔心找不到缺少404頁的控制台警告(net :: err_aborted 404(找不到))。我稍後再做。 >
要避免每次都必須編寫此查詢,我想在組件中使用它。我將把它抽到自己的鉤子中:
>現在,我將在新創建的src/hooks/use-supe-metadata.js文件中添加鉤子,以獲取site get ecter ot-octe of the網站元數據: 您可能已經註意到,此查詢與Graphiql Explorer的查詢不同: 這是為了命名查詢。因為我會在項目中使用很多查詢,所以給他們有意義的名字很有意義。
是時候到目前為止進行更改了: >主題UI
>
在src/gatsby-plugin-theme-ui/index.js文件中,我將添加一些主題UI預設,定義主題對象,然後在瑞士預設中傳播到主題,主題顏色和样式。 >對於黑暗模式,我使用的是深層主題UI預設,並將其擴散到模式對像中的黑暗對象。 (很快就會詳細介紹。
佈局組件 >
>而不是讓標題組件中使用的使用intemetadata,而是將我需要從佈局組件的標頭傳遞給標頭,這是標題將要使用的位置。 (不久此信息。)首先,這是居住在src/components/header.js的標題組件: >我使用主題UI佈局元素添加了一些基本樣式。這看起來與以前有些不同:框,鏈接,標題……什麼?這些都是所有主題UI組件,可用於佈局,形式元素等。 >您可能會注意到AS = {gatsbylink}鏈接prop添加到鏈接組件中。這在主題UI中使用AS Prop,並讓將組件傳遞到主題UI樣式中。
Paul Scanlon有一篇很棒的帖子,更詳細地解釋瞭如何在主題UI中完成。為了對主題UI進行真正的全面解釋,同一作者也有“理解主題UI”。
現在,位於src/components/layout.js中的佈局組件: >
>
結果是標題,在佈局組件中提供,並包裝H1。
>現在是時候獲取我在開始時創建的帖子,並在索引頁面上顯示它們作為可點擊鏈接的列表。 >獲取帖子信息,我將重新創建有關使用GraphQl查詢本地文件的部分中的查詢
> >將其添加到Graphiql Explorer中給了我這個結果:
>
>此方法具有針對頁面的特殊文件符號,當Gatsby在構建時間生成文件系統數據時,將針對目標。該文件指示節點和sl。我將首先創建文件,然後詳細說明數據來自何處:
如果我將查詢粘貼到我的graphiql explorer中,然後按播放按鈕,我會得到:
在此文件中,您可能會注意到我已經從返回的數據中破壞了屍體,然後從前桅杆上,在兩級破壞中從前桅杆上產生標題: 的另一種方法是: 使用破壞使它的詳細信息要少得多。 >要注意的最後一件事是將帖子的主體包裹起來。這是前物質塊之後的.mdx文件中包含的所有內容。從GraphIQL查詢中進行了評論的MDX,這是在MDXRenderer中包裝的內容: 我現在將提交更改: 現在,單擊索引頁面上的一個鏈接將帶我到所需的.mdx頁面,但看起來與索引頁面有些不同,對嗎?
>
>
然後,在gatsby-browser.js和gatsby-ssr.js文件中,我將添加此信息: 如果包裝功能需要任何更改,我可以在一個文件root-wrapper.js。
>由於在此處使用佈局組件來包裝網站上的所有頁面元素,因此無需將其保存在索引頁面上,因此我將從src/peg/pages/index.js中刪除該頁面:
>
>
>我需要安裝軟件包並在稱為組件的蓋茨比 - plugin-theme-ui文件夾中創建一個組件。
提交更改並移至下一部分:
這是可選的,我不會詳細介紹這裡發生的事情。只知道對懸停而產生的CSS效果很不錯。 >創建了該組件,我可以將其導入我要使用的任何.mdx文件。在此示例中,我將其添加到Content/2021/03/third-post/index.mdx中。現在,我添加了該組件: 再次啟動開發服務器後,我可以轉到添加該組件的帖子,當我將懸停在 >您可能會對該導入進行惡作劇:../../../。不斷!但是,有一種方法可以解決這個問題,但是使用我之前詳細介紹的根包裝器概念,並使用MDXProvider,它將 - 啊! - 向MDX提供您傳遞給它的任何組件。 >
現在,我可以從.mdx文件中刪除導入: >停止並重新啟動開發服務器後,我可以轉到這篇文章,仍然看到RainbowText工作。直接將組件直接添加到MDXProvider的額外優勢在於,當您要使用時,無需將組件導入.mdx文檔。它可通過提供商用於所有MDX文檔。
./mdx-logo.png是我添加到content/2021/03/06/hello-world文件夾中的文件,我將其稱為相對文件。不過,這不是。如果我轉到“ Hello World帖子”,則顯示的圖像被打破了。我需要將gatsby-remark-images作為插件添加到gatsby-plugin-mdx上,以便知道該如何處理圖像文件:
>
該組件需要很多道具,其中許多是在整個站點中定義的一次,因此添加這些的最佳位置是在Sitemetadata對像中。然後,我可以用usedemetadata鉤子拉出所需的東西。
>現在,這些其他屬性就在SiteMetadata對像上了,我需要能夠查詢它們。當前,使用initemetadata Hook僅具有標題和描述,因此我現在將其餘的內容添加: >我將SEO組件添加到所有頁面。首先,我將在src/pages/{mdx.slug} .js page中完成帖子頁面。這是最參與其中之一,因此我將在此處丟棄差異,並詳細說明發生了什麼: siteurl,slug和摘錄是規範鏈接(在SEO中非常重要),摘錄是用於元描述的。
>
>很多。我希望它的某些有意義!對於這篇文章的範圍,我將其留在那裡,但是還有很多關於這個主題的知識,我的意思是!
幸運的是,SRC/pages/index.js頁面更簡單! >
ctrl u 查看頁面源。從這裡,我可以檢查典型的元標記,這將是元數據中使用的虛擬URL。
好吧!將此付諸實踐並繼續前進:
>在存儲庫名稱中,我將添加項目名稱my-gatsby-blog,但留下其餘的默認設置,然後單擊“創建存儲庫”。 下一個屏幕為我提供了我需要將本地項目推向github的終端命令:
Enter
是時候把這個嬰兒放在網上了!有很多方法可以做到這一點。因為蓋茨比(Gatsby)構建到平坦的文件結構,因此您可以在任何文件服務器上託管一個具有訪問Internet的文件服務器。
要與Vercel部署,您需要一個GitHub,Gitlab或Bitbucket帳戶進行身份驗證。然後,您將提示您安裝Vercel CLI:
的所有問題回答默認值: >在Vercel儀表板上,我可以配置該域,也可以從Vercel購買一個。我個人使用namecheap.com,但這是一種選擇。 >
>
NETLIFY將構建文件並將其部署到生成的URL進行檢查。與Vercel幾乎相同,Netlify將使您在那裡購買一個域並部署到它。
>
>名稱:my-gatsby-blog
>可選的蓋茨比插件
您是否想嵌入YouTube視頻,推文,Strava運行,Coodepens和Codesandbox?查看gatsby-plugin-mdx-embed。
>要在蓋茨比網站上實現fathom Analytics,我需要在我的網站的頭部添加附加腳本標籤。這意味著什麼?好吧,首先,我需要在我的fathom儀表板上創建網站,然後訪問https://app.usefathom.com/#/settings/sites/sites,滾動到列表的底部,添加我的新網站( my -gatsby-blog),然後單擊“獲取站點代碼”。然後,我獲得了帶網站代碼的彈出模式。我需要將其添加到Gatsby Project的負責人的腳本中。這是腳本的樣子: 這是root-wrapper.js的差異: 就是我的。非常感謝您到最後。 ? 我希望您能從該廣泛的指南中獲得有關從頭開始建立蓋茨比項目的信息! 如果您想伸出手打個招呼,那麼最好的地方是Twitter。
>如何自定義我的Gatsby MDX博客的佈局? > Gatsby MDX允許您自定義博客文章的佈局。您可以在“ SRC”目錄中創建一個佈局組件。該組件可以包括標頭,頁腳或側邊欄等元素。創建了佈局組件後,您可以將MDX內容包裹起來。為此,請在您的MDX文件中導入佈局組件,然後將您的內容包裝在此處: gatsby mdx支持在您的博客文章中包含代碼片段。要添加代碼段,您可以使用“ PRE”和“代碼”標籤。用這樣的標籤包裝代碼片段: 我如何在我的蓋茨比MDX博客中添加分頁? >如何將社交共享按鈕添加到我的Gatsby MDX博客文章中? >如何將新聞通訊訂閱表格添加到我的gatsby MDX博客? >我需要什麼?
>
<span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
><span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
<span># create .gitignore file in my directory
</span><span>touch .gitignore
</span><span># add ignore contents with echo
</span><span>echo "# Project dependencies
</span><span>.cache
</span><span>node_modules
</span><span>
</span><span># Build directory
</span><span>public
</span><span>
</span><span># Other
</span><span>.DS_Store
</span><span>yarn-error.log" > .gitignore
</span>
<span>yarn add gatsby react react-dom
</span><span># -p is to create parent directories too if needed
</span><span>mkdir -p src/pages
</span><span># create the index (home) page
</span><span>touch src/pages/index.js
</span>
<span>import <span>React</span> from "react";
</span>
<span>export default function <span>IndexPage</span>() {
</span> <span>return <span><span><h1</span>></span>Hello, World!<span><span></h1</span>></span>;
</span><span>}
</span>
<span># if you're using npm ?
</span><span># $(npm bin)/gatsby develop
</span><span>yarn gatsby develop
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop",
</span> <span>"serve": "gatsby serve",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop -p 8945 -o",
</span> <span>"serve": "gatsby serve -p 9854 -o",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
我將在我製作的整個示例中使用這些。
<span># add everything for committing
</span><span>git add .
</span><span># commit to repo
</span><span>git commit -m 'init project'
</span>
這是我們的第二篇文章:<span># this creates the folders in the root of the project
</span><span>mkdir -p content/2021/03/{06/hello-world,07/second-post,08/third-post}
</span><span># create individual files
</span><span>touch content/2021/03/06/hello-world/index.mdx
</span><span>touch content/2021/03/07/second-post/index.mdx
</span><span>touch content/2021/03/08/third-post/index.mdx
</span>
<span><span>---
</span></span><span><span><span>title: Hello World - from mdx!
</span></span></span><span><span><span>date: 2021-03-06</span>
</span></span><span><span>---</span>
</span>
My first post!!
<span><span>## h2 Heading</span>
</span>
Some meaningful prose
<span><span>### h3 Heading</span>
</span>
Some other meaningful prose
<span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
gatsby config
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
>現在,我可以安裝和配置插件蓋茨比所需的源,並顯示我創建的文件。我現在將它們全部安裝,並簡要詳細介紹它們的目的:
<span># create .gitignore file in my directory
</span><span>touch .gitignore
</span><span># add ignore contents with echo
</span><span>echo "# Project dependencies
</span><span>.cache
</span><span>node_modules
</span><span>
</span><span># Build directory
</span><span>public
</span><span>
</span><span># Other
</span><span>.DS_Store
</span><span>yarn-error.log" > .gitignore
</span>
<span>yarn add gatsby react react-dom
</span><span># -p is to create parent directories too if needed
</span><span>mkdir -p src/pages
</span><span># create the index (home) page
</span><span>touch src/pages/index.js
</span>
<span>import <span>React</span> from "react";
</span>
<span>export default function <span>IndexPage</span>() {
</span> <span>return <span><span><h1</span>></span>Hello, World!<span><span></h1</span>></span>;
</span><span>}
</span>
<span># if you're using npm ?
</span><span># $(npm bin)/gatsby develop
</span><span>yarn gatsby develop
</span>
>我將使用___graphql(三個下劃線)路由來查看文件系統中的文件。 <span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop",
</span> <span>"serve": "gatsby serve",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
在gatsby-config.js文件中,還有一個可以指定站點元數據的選項。網站元數據是為了重複使用常見數據,例如網站標題和描述。
>
當我想在網站上添加元標記以進行搜索引擎優化(SEO)時,這將是進一步有用的。 (同樣,稍後再詳細介紹。
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
<span># create .gitignore file in my directory
</span><span>touch .gitignore
</span><span># add ignore contents with echo
</span><span>echo "# Project dependencies
</span><span>.cache
</span><span>node_modules
</span><span>
</span><span># Build directory
</span><span>public
</span><span>
</span><span># Other
</span><span>.DS_Store
</span><span>yarn-error.log" > .gitignore
</span>
<span>yarn add gatsby react react-dom
</span><span># -p is to create parent directories too if needed
</span><span>mkdir -p src/pages
</span><span># create the index (home) page
</span><span>touch src/pages/index.js
</span>
<span>import <span>React</span> from "react";
</span>
<span>export default function <span>IndexPage</span>() {
</span> <span>return <span><span><h1</span>></span>Hello, World!<span><span></h1</span>></span>;
</span><span>}
</span>
<span># if you're using npm ?
</span><span># $(npm bin)/gatsby develop
</span><span>yarn gatsby develop
</span>
J
J <span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop",
</span> <span>"serve": "gatsby serve",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop -p 8945 -o",
</span> <span>"serve": "gatsby serve -p 9854 -o",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
<span># create .gitignore file in my directory
</span><span>touch .gitignore
</span><span># add ignore contents with echo
</span><span>echo "# Project dependencies
</span><span>.cache
</span><span>node_modules
</span><span>
</span><span># Build directory
</span><span>public
</span><span>
</span><span># Other
</span><span>.DS_Store
</span><span>yarn-error.log" > .gitignore
</span>
>為主題UI添加一些其他依賴項,這些依賴項是:<span>yarn add gatsby react react-dom
</span><span># -p is to create parent directories too if needed
</span><span>mkdir -p src/pages
</span><span># create the index (home) page
</span><span>touch src/pages/index.js
</span>
<span>import <span>React</span> from "react";
</span>
<span>export default function <span>IndexPage</span>() {
</span> <span>return <span><span><h1</span>></span>Hello, World!<span><span></h1</span>></span>;
</span><span>}
</span>
<span># if you're using npm ?
</span><span># $(npm bin)/gatsby develop
</span><span>yarn gatsby develop
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop",
</span> <span>"serve": "gatsby serve",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop -p 8945 -o",
</span> <span>"serve": "gatsby serve -p 9854 -o",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
<span># create .gitignore file in my directory
</span><span>touch .gitignore
</span><span># add ignore contents with echo
</span><span>echo "# Project dependencies
</span><span>.cache
</span><span>node_modules
</span><span>
</span><span># Build directory
</span><span>public
</span><span>
</span><span># Other
</span><span>.DS_Store
</span><span>yarn-error.log" > .gitignore
</span>
<span>yarn add gatsby react react-dom
</span><span># -p is to create parent directories too if needed
</span><span>mkdir -p src/pages
</span><span># create the index (home) page
</span><span>touch src/pages/index.js
</span>
>
然後,作為在日期下訂單中訂購帖子的一種方式,我添加了一種:allmdx(sort:{fields:[frontMatter__date],order:desc}){。這是在帖子前提下的日期進行排序。 <span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
<span># create .gitignore file in my directory
</span><span>touch .gitignore
</span><span># add ignore contents with echo
</span><span>echo "# Project dependencies
</span><span>.cache
</span><span>node_modules
</span><span>
</span><span># Build directory
</span><span>public
</span><span>
</span><span># Other
</span><span>.DS_Store
</span><span>yarn-error.log" > .gitignore
</span>
<span>yarn add gatsby react react-dom
</span><span># -p is to create parent directories too if needed
</span><span>mkdir -p src/pages
</span><span># create the index (home) page
</span><span>touch src/pages/index.js
</span>
>我將使用Gatsby文件系統路由API獲取我之前創建的帖子的文件路徑。文件系統路由API是從我的GraphQl數據編程創建頁面的一種方式。
<span>import <span>React</span> from "react";
</span>
<span>export default function <span>IndexPage</span>() {
</span> <span>return <span><span><h1</span>></span>Hello, World!<span><span></h1</span>></span>;
</span><span>}
</span>
<span># if you're using npm ?
</span><span># $(npm bin)/gatsby develop
</span><span>yarn gatsby develop
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop -p 8945 -o",
</span> <span>"serve": "gatsby serve -p 9854 -o",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span># add everything for committing
</span><span>git add .
</span><span># commit to repo
</span><span>git commit -m 'init project'
</span>
<span># this creates the folders in the root of the project
</span><span>mkdir -p content/2021/03/{06/hello-world,07/second-post,08/third-post}
</span><span># create individual files
</span><span>touch content/2021/03/06/hello-world/index.mdx
</span><span>touch content/2021/03/07/second-post/index.mdx
</span><span>touch content/2021/03/08/third-post/index.mdx
</span>
<span><span>---
</span></span><span><span><span>title: Hello World - from mdx!
</span></span></span><span><span><span>date: 2021-03-06</span>
</span></span><span><span>---</span>
</span>
My first post!!
<span><span>## h2 Heading</span>
</span>
Some meaningful prose
<span><span>### h3 Heading</span>
</span>
Some other meaningful prose
<span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
root包裝器概念
<span># create .gitignore file in my directory
</span><span>touch .gitignore
</span><span># add ignore contents with echo
</span><span>echo "# Project dependencies
</span><span>.cache
</span><span>node_modules
</span><span>
</span><span># Build directory
</span><span>public
</span><span>
</span><span># Other
</span><span>.DS_Store
</span><span>yarn-error.log" > .gitignore
</span>
<span>yarn add gatsby react react-dom
</span><span># -p is to create parent directories too if needed
</span><span>mkdir -p src/pages
</span><span># create the index (home) page
</span><span>touch src/pages/index.js
</span>
<span>import <span>React</span> from "react";
</span>
<span>export default function <span>IndexPage</span>() {
</span> <span>return <span><span><h1</span>></span>Hello, World!<span><span></h1</span>></span>;
</span><span>}
</span>
<span># if you're using npm ?
</span><span># $(npm bin)/gatsby develop
</span><span>yarn gatsby develop
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop",
</span> <span>"serve": "gatsby serve",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
>在src/pages/404.js文件中,我將添加一條消息:<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop -p 8945 -o",
</span> <span>"serve": "gatsby serve -p 9854 -o",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span># add everything for committing
</span><span>git add .
</span><span># commit to repo
</span><span>git commit -m 'init project'
</span>
<span># this creates the folders in the root of the project
</span><span>mkdir -p content/2021/03/{06/hello-world,07/second-post,08/third-post}
</span><span># create individual files
</span><span>touch content/2021/03/06/hello-world/index.mdx
</span><span>touch content/2021/03/07/second-post/index.mdx
</span><span>touch content/2021/03/08/third-post/index.mdx
</span>
在轉到下一節之前,
git提交:<span><span>---
</span></span><span><span><span>title: Hello World - from mdx!
</span></span></span><span><span><span>date: 2021-03-06</span>
</span></span><span><span>---</span>
</span>
My first post!!
<span><span>## h2 Heading</span>
</span>
Some meaningful prose
<span><span>### h3 Heading</span>
</span>
Some other meaningful prose
<span><span>---
</span></span><span><span><span>title: Second Post!
</span></span></span><span><span><span>date: 2021-03-07</span>
</span></span><span><span>---</span>
</span>
This is my second post!
<span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
<span># create .gitignore file in my directory
</span><span>touch .gitignore
</span><span># add ignore contents with echo
</span><span>echo "# Project dependencies
</span><span>.cache
</span><span>node_modules
</span><span>
</span><span># Build directory
</span><span>public
</span><span>
</span><span># Other
</span><span>.DS_Store
</span><span>yarn-error.log" > .gitignore
</span>
<span>yarn add gatsby react react-dom
</span><span># -p is to create parent directories too if needed
</span><span>mkdir -p src/pages
</span><span># create the index (home) page
</span><span>touch src/pages/index.js
</span>
>下一個位是可選的。 Markdown JSX允許React(JSX)組件包含在Markdown中。為了證明這一點,我將添加一個RainbowText組件,該組件將在動畫週期中為某些顏色而動畫。動畫需要額外的依賴性: @emotion/react的鍵框。我現在要安裝:
<span>import <span>React</span> from "react";
</span>
<span>export default function <span>IndexPage</span>() {
</span> <span>return <span><span><h1</span>></span>Hello, World!<span><span></h1</span>></span>;
</span><span>}
</span>
<span># if you're using npm ?
</span><span># $(npm bin)/gatsby develop
</span><span>yarn gatsby develop
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop",
</span> <span>"serve": "gatsby serve",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop -p 8945 -o",
</span> <span>"serve": "gatsby serve -p 9854 -o",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span># add everything for committing
</span><span>git add .
</span><span># commit to repo
</span><span>git commit -m 'init project'
</span>
<span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
<span># create .gitignore file in my directory
</span><span>touch .gitignore
</span><span># add ignore contents with echo
</span><span>echo "# Project dependencies
</span><span>.cache
</span><span>node_modules
</span><span>
</span><span># Build directory
</span><span>public
</span><span>
</span><span># Other
</span><span>.DS_Store
</span><span>yarn-error.log" > .gitignore
</span>
<span>yarn add gatsby react react-dom
</span><span># -p is to create parent directories too if needed
</span><span>mkdir -p src/pages
</span><span># create the index (home) page
</span><span>touch src/pages/index.js
</span>
如果我想通過搜索引擎在互聯網上找到我的內容,那麼
>我要YARN添加組件以及其工作所需的依賴項:<span>import <span>React</span> from "react";
</span>
<span>export default function <span>IndexPage</span>() {
</span> <span>return <span><span><h1</span>></span>Hello, World!<span><span></h1</span>></span>;
</span><span>}
</span>
<span># if you're using npm ?
</span><span># $(npm bin)/gatsby develop
</span><span>yarn gatsby develop
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop",
</span> <span>"serve": "gatsby serve",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span>"scripts": {
</span> <span>"build": "gatsby build",
</span> <span>"dev": "gatsby develop -p 8945 -o",
</span> <span>"serve": "gatsby serve -p 9854 -o",
</span> <span>"clean": "gatsby clean"
</span><span>},
</span>
<span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
<span># create .gitignore file in my directory
</span><span>touch .gitignore
</span><span># add ignore contents with echo
</span><span>echo "# Project dependencies
</span><span>.cache
</span><span>node_modules
</span><span>
</span><span># Build directory
</span><span>public
</span><span>
</span><span># Other
</span><span>.DS_Store
</span><span>yarn-error.log" > .gitignore
</span>
>我將登錄到我的github帳戶,然後在右上角選擇我的頭像映像旁邊的加上圖標,然後選擇新的存儲庫。
> vercel
然後,我提示我設置並部署新項目。我將使用
> Enter<span>import <span>React</span> from "react";
</span>
<span>export default function <span>IndexPage</span>() {
</span> <span>return <span><span><h1</span>></span>Hello, World!<span><span></h1</span>></span>;
</span><span>}
</span>
netlify
通過CLI與Netlify一起部署與Vercel的部署相同,但我要進行拖放創建。 >
在下一頁上,我將給它以下設置:分支:默認值
等待渲染做事,然後單擊項目名稱下方的鏈接以查看網站Live。 更多的蓋茨比插件可供選擇以添加其他功能。如果您想添加更多,我將把這些留給您。例如:
>
>
>另一種選擇是合理的,我也聽到了關於的好消息。
><span>import <span>{ RainbowText }</span> from './components/rainbow';
</span>## <span>A Markdown Heading
</span><span><span><span><RainbowText</span>></span>Wheeeeeeee<span><span></RainbowText</span>></span>
</span>
<span># create the project directory
</span><span>mkdir my-gatsby-blog
</span><span># change into the directory
</span><span>cd my-gatsby-blog
</span><span># initialise a package.json file
</span><span>yarn init -y
</span><span># initialise the git repo
</span><span>git init
</span>
wrap!
>如何將圖像添加到我的蓋茨比MDX博客文章中?
>在蓋茨比MDX博客文章中添加圖像可以增強視覺吸引力並使您的內容更具吸引力。為此,您需要將圖像文件導入到MDX文件中。首先,將圖像文件放在蓋茨比項目的“ SRC”目錄中。然後,在您的MDX文件中,使用'../ path/to/image.jpg'導入ImageName導入圖像。導入後,您可以使用“ ImageName”作為組件中使用MDX內容中的圖像:
>我如何添加代碼片段到我的gatsby mdx博客文章?
<code>您的代碼在此處</code>
>目錄可以使您的博客文章更具導航。 Gatsby MDX支持創建目錄。您可以在GraphQl查詢中使用“ tableofcontents”字段來生成內容表。該字段返回一系列標題及其各自的深度,您可以使用它們為目錄創建嵌套列表。
>如何將SEO添加到我的Gatsby MDX博客中? Gatsby MDX允許您將SEO添加到博客文章中。您可以使用“ Gatsby-Plugin-React-Helmet”來管理博客文章的文檔頭。該插件允許您添加諸如標題,描述和元標記之類的元素,這些元素對於SEO很重要。
>
>分頁可以改善用戶體驗通過使您的博客更容易瀏覽您的帖子。 Gatsby MDX支持分頁。您可以使用“ Gatsby-Awesome-pagination”插件來創建分頁頁面。該插件為您的頁面創建了分頁索引和分頁的上下文。 >如何將註釋添加到我的蓋茨比MDX博客文章中? >添加評論部分可以增加對您的博客的參與度。 Gatsby MDX允許您在博客文章中添加評論。您可以使用DISQUS或Commento等第三方服務。這些服務提供了一個可以在佈局組件中包含的腳本以啟用評論。
>>社交共享按鈕可以增加觸手可及的範圍。您的博客文章。 Gatsby MDX允許您添加社交共享按鈕。您可以使用諸如gatsby-plugin-reacct-share”之類的插件來添加社交共享按鈕。該插件支持各種社交媒體平台,例如Facebook,Twitter和LinkedIn。通過更容易找到特定帖子來博客。 Gatsby MDX支持添加搜索功能。您可以使用諸如“ gatsby-plugin-elasticlunr-search”之類的插件來添加搜索功能。該插件創建了您的帖子索引,可以使用關鍵字搜索。
>
>新聞通訊訂閱表單可以幫助您構建一個電子郵件列表並保持讀者的更新。 Gatsby MDX允許您添加新聞通訊訂閱表格。您可以使用MailChimp或SendInblue等服務。這些服務提供了您可以嵌入佈局組件以啟用新聞通訊訂閱的表格。
以上是如何使用Gatsby和MDX構建開發人員博客的詳細內容。更多資訊請關注PHP中文網其他相關文章!