GatsbyとMDXで開発者ブログを構築する方法
dev.to、hashhnode、mediumなどのサイトにアイデアを簡単に公開できますが、理想は自分のコンテンツを完全に制御できることです。独自のWebサイトを構築し、独自のコンテンツを制御するためのツールのリストが増え続けています。この広範なチュートリアルでは、ギャツビーを使用してコンテンツを輝かせる方法について説明します。このようなエコシステムで得られるベルとホイッスルを追加します。
私はもともとJekyllを使用してブログを公開しましたが、Lumenテンプレートを使用してGatsbyに切り替えました。 2017年5月頃にバージョン0からギャツビーを使用しています。こんにちは、世界から行きます! Gatsbyは、コード構文の強調表示とその暗いモードの良さのテーマトグルを備えたコーディングブログにプロジェクトを進めます。
ギャツビーがすぐに稼働させるために利用できるプラグイン、スターター、テーマの豊富なエコシステムがありますが、ギャツビーの仕組みの基本に焦点を当てて、ギャツビーを提示するための進歩的な開示アプローチを取りたいです。 >なぜギャツビー?
ギャツビーは静的なサイトジェネレーターであるため、ページが要求されたときにページの動的な生成はありません。 Gatsbyサイトの構築された出力はCDNでホストでき、グローバルに利用可能でスーパースケーラブルになります。
GatsbyはMarkdownファイルを使用して、サイトプロジェクトでページを作成できます。 GatsbyはMarkdownファイルをGatsbyファイルシステムに読み取り、MarkdownをHTMLに変換し、サイトを構築するときに静的ページを作成します。最終結果は、ページを要求する際の遅延がほとんどない非常に高速なサイトです。
MarkdownおよびMDX
2016年以来、Markdownで開発の旅を記録しています。 Markdownは、HTMLに変換できるプレーンテキストファイルで簡単な編集を可能にする方法を提供します。
MDX(またはMarkdown JSX)は、MarkdownドキュメントにJSXを書くことができるツールです。ギャツビーは、私がMarkdownとMDXを使用するために使用した最良のフレームワークです。投稿にFrontMatterを使用して特別な表記法は必要ありません。
何が必要ですか?
フォローする場合は、必要なことがいくつかあります:
基本的なWeb開発のセットアップ:ノード、ターミナル(BASH、ZSH、または魚)
<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>
テキストエディター
反応の基本的な理解
これらのいずれも持っていない場合、空のgithubリポジトリを作成してそこから開発環境を始めることができるstackblitzとgithubの両方のコードスペースがあります。
- 以下の例では、テキストエディターとしてVSコードを使用し、Yarnを希望のパッケージマネージャーとして使用します。 NPMを好むなら、それはクールです。 ?
- このチュートリアルの完全なコードをGithubで見つけることもできます。 わかりました、始めましょう!
- こんにちは、世界!
ギャツビープロジェクトをスピンアップする時が来ました。最初はコマンドラインからこの大部分を行います:
<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>
かっこいい。これで他の場所に行く前に、npmモジュールをインストールする前に.gitignoreファイルを追加する必要があります。
<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>
次に、プロジェクトに最初のReactコンポーネント(多くの)を追加します。次のものをindex.jsファイルに追加します。
<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 Dev Severがスピンアップし、私のプロジェクトはポート8000(デフォルトのGatsbyポート)のブラウザで表示できると言います。 URLはhttp:// localhost:8000/。
です<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>
追加のボーナスとして、ここでギャツビースクリプトに追加できるエクストラがいくつかあります。
毎回同じポートでプロジェクトを実行したくない場合は、-Pフラグとその後指定されたポートで変更できます。たとえば、Gatsby Develop -P 8945。プロジェクトの準備ができたらブラウザタブを開きたい場合は、スクリプトに-oを追加できます。
<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>
2番目の投稿:
3番目の投稿:
これらの投稿はギャツビーによってページとしてまだ認識されていないため、今のところ投稿のためのことです。プロジェクトに追加するコンテンツを見つける場所をGatsbyに知らせる必要があります。これを行うには、Gatsbyに構成ファイルを追加します。
gitに行った変更をコミットしましょう:<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
Gatsby Configは、使用できる多くのGatsbyプラグインを定義および構成するために使用されるものです。 Gatsby Plugin Ecoシステムの詳細。とりあえず、端末で再びファイルを作成します:
<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>
ギャツビープラグイン
ここで、Gatsbyが作成したプラグインをインストールして構成して、作成したファイルを調達および表示できます。今すぐそれらをインストールし、それらが何のためのものかを簡単に詳しく説明します:
パッケージを簡単に見る。JSONは、次の依存バージョンがインストールされていることを示しています。
<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>
注意すべきことの1つは、ギャツビーでは、React 17を使用してコンポーネントにReactをインポートする必要がないということです。しかし、完全性のために、混乱を避けるために、これらの例に含めることです。
<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>
gatsby graphql
<span># if you're using npm ? </span><span># $(npm bin)/gatsby develop </span><span>yarn gatsby develop </span>
ファイルシステム内のファイルを表示するために、___graphql(3つのアンダースコア)ルートを今すぐ使用します。
これが少し威圧的であるように見える場合は、あまり意味がないように見えるすべての部品をカバーしようとします。フォローしている場合は、サンプルをGraphiQLエクスプローラーにコピーする必要があります。<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>
GraphiQLクエリパネルと結果はその隣にあります。これは、必要なデータを取得するためにGraphQLクエリを作成する場所です。クエリパネルの下部にクエリ変数セクションもあります。後で説明します。
右端にはGraphQLドキュメントエクスプローラーがあります。 GraphQLの厳密なタイピングのため、これはデータに関する独自のドキュメントを生成できることを意味します。しかし、それはこの投稿の範囲外です。graphql
を使用してローカルファイルをクエリします
次に、GraphIQLクエリパネルに追加したファイルをクエリします。このクエリでは、ファイルのフォント問題で定義されているタイトルと日付をクエリしています。それをクエリパネルに入れてビッグプレイボタンを押すと、結果パネルのデータを取り戻します。左パネルのエクスプローラーを使用して、データを選択することもできます。クエリを実行した後に得られるものは次のとおりです
<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>
これは、クエリで要求した関連情報を備えた大きなJSONオブジェクトです。これをすぐに使用する方法について説明します。今のところ、これはギャツビープロジェクトでこのデータを使用してページを作成できることを意味します。
サイトメタデータgatsby-config.jsファイルには、サイトメタデータを指定するオプションもあります。サイトメタデータは、サイトのタイトルや説明などの一般的なデータを再利用したいときのためです。
これは、検索エンジン最適化(SEO)のためにサイトにメタタグを追加したい場合に、さらに便利です。 (繰り返しますが、後で詳しく説明します。)今のところ、Gatsby-config.jsのサイトに関するいくつかの基本的な情報を、SiteMetadataオブジェクトを使用して定義します。
iモジュールでサイトメタダを直接定義できます。
サイトメタデータオブジェクトは少し大きくなる可能性があります。独自のオブジェクトに保持することで、少し簡単に推論できることがわかりました。代わりに、個別に定義します。
今、私は再びGraphiQLエクスプローラーに飛び乗って、次のクエリでそのサイトメタデータを照会することができます: gatsby-config.jsファイルに変更を加えた場合は、開発サーバーを停止して再起動することをお勧めします( c サイトメタデータフックを作成します
ギャツビーファイルシステムにサイトメタデータがあるので、Gatsby Static Query Hook UseStaticQueryで使用したい場合はどこでもクエリできます。 src/pages/index.jsファイルに以下を追加した後、開発サーバーを殺して再起動します。
そこにある表記のいくつかに関するクイックメモ:const {site:{sitemetadata}、}は、サイトオブジェクトからSiteMetadataを引いているサイトクエリのデータに簡単に届ける方法です。これは破壊と呼ばれています。 コマンド オプション jon macos)コンソール出力のSiteMetadataオブジェクトを参照してください。
次のコンソール出力を取得します:
不足している404ページが見つからないコンソール警告について心配しないでください(net :: err_aborted 404(見つかりません))。後でそれを作ります。
このクエリを毎回作成する必要がないように、コンポーネントで使用したいと思います。私はこれを独自のフックに抽象化します:
このクエリは、GraphiQLエクスプローラーのものと同じではないことに気付いたかもしれません。 これはクエリに名前を付けることです。私はプロジェクトで多くのクエリを使用するので、それらに意味のある名前を与えることは理にかなっています。
Theme UI用のGatsbyプラグインは、多くの構成オプションを提供していますが、その一部は必要に応じて詳細にカバーします。とりあえず、フォルダーを作成し、使用するテーマUIのテーマオブジェクトを定義します。
これまでのところ変更をgit:
いくつかのReactコンポーネントを追加する時間!
今、私が現在持っているものをリファクタリングして、すべてがレイアウトコンポーネントによってラップされるようにします。現在src/pages/index.jsにあるものは、ヘッダーコンポーネントに使用できますので、レイアウトとヘッダーのために今すぐいくつかのファイルを作成します。
as = {gatsbylink}リンクプロップがリンクコンポーネントに追加されたことに気付くかもしれません。これは、テーマUIのAS Propを使用し、テーマUIスタイルに渡されるコンポーネントを渡すことができます。
テーマUIからのSXおよびバリアントプロップもあります。 SXを使用すると、追加のスタイルをコンポーネントに渡すことができます。 JSX style = {{}} prop。バリアントプロップにより、テーマから使用されているコンポーネントに事前定義されたスタイルのグループを適用できます。
子供の小道具は、レイアウトコンポーネントがカプセル化するものをすべて返すことです。これには、レイアウトを適用したいものが含まれます。たとえば、
インデックスページの投稿query 投稿情報を取得するには、GraphQLを使用してローカルファイルをいくつか追加のビットでクエリするセクションで作成したクエリを再作成します。
ノードとスラッグのIDに追加されました。これは、.mdxファイルへのファイルパスです。 次に、日付の下降順序で投稿を注文する方法として、sortを追加しました:allmdx(sort:{fields:[frontmatter___date]、order:desc}){。これは、Front Matterの投稿の日付の並べ替えです。 それをgraphiqlエクスプローラーに追加すると、この結果が得られます。
これは、以前に詳細なコンポーネントを使用します。抜粋、FrontMatter、およびSlugはdata.Allmdx.Nodesから破壊されていることに注意してください:
を使用して使用します
そのクエリを取得してGraphiQLエクスプローラーに貼り付けて、再生ボタンを押した場合、これを取得します。
このファイルでは、返されているデータから体を破壊したことに気付くかもしれません。
最後に注意すべきことは、MDXRENDERERがポストの本体を包むことです。これは、Front Matterブロックの後に.mdxファイルに含まれるすべてです。コメントされたGraphiQLクエリからコンパイルされたMDXは、MDXRendererにラップする必要があるものです。
それはまだレイアウトを包むことがないからです。これは、GatsbyブラウザAPIを使用して、ラップゲージエレメント関数を使用してすべてのページ要素をラップできる場所です。また、Gatsby SSRで同じ機能を使用することをお勧めします。
最初に、必要なファイルを作成します:
変更が有効になるのを見るために再びDEVサーバーを停止して再起動する時間!
先に進む前にこれまでのところ変更を犯します:
コードブロック パッケージをインストールして、components.jsと呼ばれるgatsby-plugin-theme-uiフォルダーにコンポーネントを作成する必要があります。
変更をコミットし、次のセクションに移動します:
これはオプションであるため、ここで何が起こっているのかについて詳しく説明することはありません。ホバーにあるのは良いCSS効果であることを知ってください。
開発サーバーを停止して再起動した後、この投稿にアクセスしても、レインボーテキストが機能するのを見ることができます。 MDXProviderに直接コンポーネントを追加することの特別な利点は、使用するときにコンポーネントを.MDXドキュメントにインポートする必要がないことです。すべてのMDXドキュメントのプロバイダーを介して利用できます。
./mdx-logo.pngは、コンテンツに追加したファイル/2021/03/06/hello-worldフォルダーであり、相対ファイルとして参照しています。しかし、それはそうではありません。 Hello World Postに行くと、表示される画像が壊れています。 Gatsby-Plugin-MDXへのプラグインとしてGatsby-Remark-Imagesを追加する必要があります。
でプラグインを構成する必要があります
今すぐコミット:
ギャツビープラギンの反応ヘルメットをgatsby-config.jsプラグインアレイに追加する必要があります: それは、メタタグが必要なサイト全体でSEOコンポーネントを使用する場合です。
フォローしている場合は、必要に応じてこれらを変更できます。 Siteurlは今のところダミーURLになる可能性があります。それは、オープングラフプロトコルで使用するために必要な画像を指すのに役立ちます。たとえば、Twitter、Facebook、LinkedIn、Redditで作成した投稿を共有するときに見られる画像です。
SiteMetadataフックを使用して、コンポーネントが必要とする残りの情報を取得しています。タイトルとTitleTemplateは、ブラウザタブに表示されるものを構成するために使用されます。
それはたくさんでした。私はそれが理にかなっているいくつかのを願っています!この投稿の範囲については、そこに残しますが、このテーマを掘り下げることがたくさんあります。
ありがたいことに、SRC/pages/index.jsページは少し簡単です!
両方の例から意図的に画像を除外しました。このコンポーネントで使用する独自のオープングラフ画像を作成することに興味がある場合は、サーバーレス機能でこれを行う方法については、「GatsbyとVercelを使用したグラフ画像を開いてください」をご覧ください。 ? 今、私はサイトを構築できます(生産の準備ができています)。それが構築されたら、メタタグのページソースをチェックできます: ビルドが終了したら、Yarnを使用して、Build Host:9000でビルドサイトをローカルに提供することができます。ブラウザでは、キーボードショートカット 大丈夫!これをgitにコミットし、先に進みます:
それをgithubに押します
githubアカウントにログインし、右上隅にあるアバター画像の横にあるプラスアイコンを選択し、新しいリポジトリを選択します。
それらすべてを端末に入れて を入力して、githubページを更新して新しいプロジェクトを表示します! deploy CDNでのホスティングを提供する多くのサービスがあります。 Netlify、vercel、renderなどのサービスを使用すると、CLI、GitHub統合、またはNetlifyの場合、ドラッグアンドドロップ!
vercelで展開するには、github、gitlab、またはbitbucketアカウントが必要になります。次に、Vercel CLI:をインストールするように求められます
その後、新しいプロジェクトを設定して展開するように求められています。 を入力すると、すべての質問にデフォルトに答えます。
認証には、Github、gitlab、bitbucket、またはメールアカウントの1つが必要になります。認証してログインしたら、メニューバーのサイトを選択できます。GITに接続せずに新しいサイトを展開したいドロップエリアがありますか?ここにサイト出力フォルダーをドラッグアンドドロップします。ファイルエクスプローラーでプロジェクトのルートに移動し、パブリックフォルダーをドロップエリアにドラッグアンドドロップします。
render レンダリングにはCLIまたはドロップオプションがなく、代わりにGitHub統合を使用します。認証するには、github、gitlab、またはgoogleアカウントが必要です。認証してログインしたら、サービスセクションに載っています。ここから、新しい静的サイトを選択してから、以前にgithubにプッシュしたプロジェクトのためにgithub URLを入力できます。
機能を追加するために選択できる、 YouTubeビデオ、ツイート、Strava Runs、Coodepens、CodeSandboxを埋め込みますか? Gatsby-Plugin-Mdx-embedをご覧ください。 サイトのブラウザタブにファビコンを持ちたいですか? Gatsby-Plugin-Manifestをご覧ください
分析 GatsbyサイトにFathom Analyticsを実装するには、サイトのヘッドに追加のスクリプトタグを追加する必要があります。それはどういう意味ですか?さて、最初にファトムダッシュボードでサイトを作成し、https://app.usefathom.com/#/settings/sitesにアクセスして、リストの下部にスクロールして、新しいサイトを追加します( my-gatsby-blog)、[サイトコードの取得]をクリックします。次に、サイトコードでポップアップモーダルを取得します。スクリプトには、ギャツビープロジェクトのヘッドに追加する必要があります。スクリプトがどのように見えるかは次のとおりです
の違いは次のとおりです
手を差し伸べてこんにちはと言いたいなら、私を手に入れるのに最適な場所はツイッターにあります。 に関するよくある質問(FAQ)
SEOは、ブログの可視性を高めるために重要です。 Gatsby MDXを使用すると、ブログ投稿にSEOを追加できます。 「Gatsby-Plugin-Reacter-Helmet」を使用して、ブログ投稿のドキュメントヘッドを管理できます。このプラグインを使用すると、SEOにとって重要なタイトル、説明、メタタグなどの要素を追加できます。ブログの投稿を簡単にナビゲートできるようにします。 Gatsby MDXはページネーションをサポートしています。 「Gatsby-Awesome-Pagination」プラグインを使用して、ページに包まれたページを作成できます。このプラグインは、ページのページの塗装されたインデックスとページ化されたコンテキストを作成します。 コメントセクションを追加すると、ブログのエンゲージメントが増加する可能性があります。 Gatsby MDXを使用すると、ブログ投稿にコメントを追加できます。 DisqusやCommentoなどのサードパーティサービスを使用できます。これらのサービスは、コメントを有効にするためにレイアウトコンポーネントに含めることができるスクリプトを提供します。あなたのブログ投稿の。 Gatsby MDXを使用すると、ソーシャル共有ボタンを追加できます。 「Gatsby-Plugin-Reactince-Share」などのプラグインを使用して、ソーシャル共有ボタンを追加できます。このプラグインは、Facebook、Twitter、LinkedInなどのさまざまなソーシャルメディアプラットフォームをサポートしています。特定の投稿を簡単に見つけることができるブログ。 Gatsby MDXは、検索機能の追加をサポートしています。 「Gatsby-Plugin-AlisticLunr-Search」などのプラグインを使用して、検索機能を追加できます。このプラグインでは、キーワードを使用して検索できる投稿のインデックスを作成します。メーリングリストと読者の最新情報を保持します。 Gatsby MDXを使用すると、ニュースレターサブスクリプションフォームを追加できます。 MailChimpやSendInBlueなどのサービスを使用できます。これらのサービスは、ニュースレターのサブスクリプションを有効にするためにレイアウトコンポーネントに埋め込むことができるフォームを提供します。<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>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>
インストールされたものを使用すると、Gatsby-Plugin-Theme-uiをGatsby-config.jsプラグインアレイに追加する必要があります。
<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>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># 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>
ファイルでは、このテンプレートに含めたいデータの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",
</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>
インデックスページのリンクの1つをクリックすると、目的の.mdxページに移動しますが、インデックスページとは少し違うように見えますか?
<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>
ここで、404ページに直接ナビゲートしてチェックアウトできます:http:// localhost:8000/404。<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>
<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>
SEOは、検索エンジンでインターネット上でコンテンツを見つけたい場合に非常に重要です。そのため、ここで関連するメタタグをブログに追加する必要があります。必要なすべてのタグを定義するプロセスが非常に複雑になる可能性があるため、時間を節約するために、必要なすべてのメタタグを生成するためにギャツビーで使用するReact SEOコンポーネントを作成しました。
コンポーネントを追加するために必要な依存関係とともにコンポーネントを追加します:<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>
それだけです。次に、Vercelでサイトのビルドを見ることができる展開URLを与えられました。
vercelダッシュボードからドメインを構成し、必要に応じてvercelから1つを購入できます。私は個人的にnamecheap.comを使用していますが、それはオプションです。
netlify
CLIを介してNetlifyを使用して展開することはVercelとほぼ同じですが、ドラッグアンドドロップの作成を行います。
名前:my-gatsby-blog
Google/Bing Searchコンソールを使用していますか?その後、Gatsby-Plugin-Sitemapでサイトマップを生成する必要があります
あなたはあなたのサイトをPWAとしてオフラインで利用できるようにしたいですか? Gatsby-Plugin-Offlineを追加します
サイトがどれほど人気があるかを知りたい場合は、分析オプションがあります。私は自分のプロジェクトでしばらく前にGoogleアナリティクスの使用をやめましたが、今ではプライバシーに焦点を当てた代替案を好みます。私がお勧めする1つは、Fathom Analyticsです。 (最初の月のサブスクリプションから10ドルを取得したい場合は、アフィリエイトリンクがあります。)
<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>
それは私からです。最後に到達してくれてありがとう。 ? <code>ここにコード</code>
Gatsby MDXブログにSEOを追加するにはどうすればよいですか?
Gatsby MDXブログの投稿にコメントを追加するにはどうすればよいですか?
以上がGatsbyとMDXで開発者ブログを構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。
