Gatsby.jsの詳现


ご存知のように、䞀郚の定型文だけでは十分に理解できないため、䟡倀のある䜕かを曞く方法を孊ぶには、あらゆるテクノロゞヌに深く入り蟌む必芁がありたす。 この蚘事ではGatsby.jsの詳现に぀いお説明したす。この知識により、耇雑なWebサむトやブログを䜜成および管理できたす。


JAM-stackを䜿甚しお個人ブログを䜜成および公開する方法に関する以前の蚘事

以䞋で説明するトピック



準備する


GatsbyをPCにむンストヌルする
yarn global add gatsby-cli 

最小限のプロゞェクトの耇補
  npx gatsby new gatsby-tutorial https://github.com/gatsbyjs/gatsby-starter-hello-world cd gatsby-tutorial 

リポゞトリの初期化
  git init git add . git commit -m "init commit" 

ヘルスチェック
  yarn start 

コン゜ヌルに゚ラヌがなく、ブラりザのパスhttp// localhost8000に沿っお゚ラヌがない堎合、「Hello world」 が衚瀺されたす 。 その埌、すべおが正垞に機胜したす。 /src/pages/index.jsファむルの内容を倉曎しお、ホットリロヌドを確認できたす。


ペヌゞ構造ずルヌティング


Gatsbyでペヌゞを䜜成するには、新しいファむルを/ src / pagesフォルダヌに配眮するだけで、別のHTMLペヌゞにコンパむルされたす。 このペヌゞぞのパスは、実際のパスず名前が䞀臎するこずに泚意するこずが重芁です。 たずえば、さらにいく぀かのペヌゞを远加したす。


 src └── pages ├── about.js ├── index.js └── tutorial ├── part-four.js ├── part-one.js ├── part-three.js ├── part-two.js └── part-zero.js 

コンテンツはただ重芁ではないため、ペヌゞを区別するために任意のテキストを䜿甚できたす。


 import React from "react"; export default () => <div>Welcome to tutorial/part-one</div>; 

ブラりザでチェックむンしたす。



このようにしお、ファむルを構造化するずきに、ルヌティングの問題をすぐに解決できたす。


ペヌゞのパスず名前をより柔軟に制埡できる特別なcreatePage APIもありたすが、それを䜿甚するには、Gatsbyでのデヌタの動䜜方法を理解する必芁がありたす。そのため、蚘事でもう少し怜蚎したす。

リンクを䜿甚しお䜜成されたペヌゞを結合したす。これには、内郚ナビゲヌション専甚に䜜成されたGatsbyパッケヌゞの<Link />コンポヌネントを䜿甚したす。 すべおの倖郚リンクに぀いお、通垞の<a>タグを䜿甚したす。


/src/pages/index.js


 import React from "react"; import { Link } from "gatsby"; export default () => ( <div> <ul> <li> <Link to="/about">about</Link> </li> <li> <Link to="/tutorial/part-zero">Part #0</Link> </li> <li> <Link to="/tutorial/part-one">Part #1</Link> </li> <li> <Link to="/tutorial/part-two">Part #2</Link> </li> <li> <Link to="/tutorial/part-three">Part #3</Link> </li> <li> <Link to="/tutorial/part-four">Part #4</Link> </li> </ul> </div> ); 

<Link>は、ペヌゞの読み蟌みを最適化するための非垞にトリッキヌなメカニズムがあるため、 <a>代わりに䜿甚しおサむトをナビゲヌトしたす。 詳现はこちらをご芧ください 。

ナビゲヌション


ペヌゞが䜜成され、リンクが远加され、ナビゲヌションが終了したこずがわかりたす。


コンポヌネント、テンプレヌト、およびそれらの盞互䜜甚


ご存知のように、どのプロゞェクトでも垞に芁玠が繰り返されたす。Webサむトの堎合は、ヘッダヌ、フッタヌ、ナビゲヌションバヌです。 たた、コンテンツに関係なく、ペヌゞは特定の構造に埓っお構築されたす。GatsbyはReactのコンパむラヌであるため、これらの問題を解決するために同じコンポヌネントアプロヌチが䜿甚されたす。


ヘッダヌずナビゲヌションパネルのコンポヌネントを䜜成したす。


/src/components/header.js


 import React from "react"; import { Link } from "gatsby"; /** *         *  ,     React-. *      ,    *  " ".     *    ""  GraphQL  gatsby- */ import logoSrc from "../images/logo.png"; export default () => ( <header> <Link to="/"> <img src={logoSrc} alt="logo" width="60px" height="60px" /> </Link> That is header </header> ); 

/src/components/sidebar.js


 import React from "react"; import { Link } from "gatsby"; export default () => ( <div> <ul> <li> <Link to="/about">about</Link> </li> <li> <Link to="/tutorial/part-zero">Part #0</Link> </li> <li> <Link to="/tutorial/part-one">Part #1</Link> </li> <li> <Link to="/tutorial/part-two">Part #2</Link> </li> <li> <Link to="/tutorial/part-three">Part #3</Link> </li> <li> <Link to="/tutorial/part-four">Part #4</Link> </li> </ul> </div> ); 

それらを/src/pages/index.jsに远加したす


 import React from "react"; import Header from "../components/header"; import Sidebar from "../components/sidebar"; export default () => ( <div> <Header /> <Sidebar /> <h1>Index page</h1> </div> ); 

私たちはチェックしたす


index_page


すべおが機胜したすが、各ペヌゞのヘッダヌずサむドバヌを個別にむンポヌトする必芁がありたすが、これはあたり䟿利ではなく、この問題を解決するにはレむアりトコンポヌネントを䜜成しお各ペヌゞをラップするだけで十分です。


ギャツビヌレむアりト==反応コンテナヌ
はい、それは「ほが」同じこずなので、厳密な平等ではありたせん

/src/components/layout.js


 import React from "react"; import Header from "./header"; import Sidebar from "./sidebar"; export default ({ children }) => ( <> <Header /> <div style={{ margin: `0 auto`, maxWidth: 650, backgroundColor: `#eeeeee` }} > <Sidebar /> {children} </div> </> ); 

/src/pages/index.js および他のすべおのペヌゞ


 import React from "react"; import Layout from "../components/layout"; export default () => ( <Layout> <h1>Index page</h1> </Layout> ); 

完了、ブラりザを芋おください


レむアりト


プロゞェクトのファむル名がすべお小文字であるのはなぜですか たず、 Reactのネヌムスペヌスは、「すべおのファむルがクラスであり、クラスは垞に倧文字である」ずいう事実に基づいおいるず刀断したしょう。 Gatsbyでは、ファむルにはクラスが含たれおいたすが、「しかし」1぀ありたす-「各ファむルは朜圚的なペヌゞであり、その名前はこのペヌゞぞのURLです。」 コミュニティは、 http://domain.com/User/Settings //domain.com/User/Settingsのようなリンクはcomme-il-fautではなく、ファむル名のkebab-caseを承認しおいるずいう結論に達したした。

ファむル構造
  src ├── components │ ├── header.js │ ├── layout.js │ └── sidebar.js ├── images │ └── logo.png └── pages ├── about.js ├── index.js └── tutorial ├── part-eight.js ├── part-five.js ├── part-four.js ├── part-one.js ├── part-seven.js ├── part-six.js ├── part-three.js ├── part-two.js └── part-zero.js 

デヌタを操䜜する


サむト構造の準備ができたので、コンテンツの入力に進むこずができたす。 埓来の「ハヌドコヌド」アプロヌチは、JAMスタックの䜜成者や「AJAXリク゚ストからコンテンツをレンダリングする」には適さないため、コンパむル時にサむトをコンテンツで埋めるこずを提案したした。 Gatsbyの堎合、 GraphQLがこれを担圓したす。これにより、任意の゜ヌスからのデヌタストリヌムを簡単に操䜜できたす。


GraphQLに぀いお簡単に説明するこずは䞍可胜なので、自分で研究するか、次の蚘事を埅぀こずをお勧めしたす。 GraphQLの操䜜に぀いお詳しくは、 こちらをご芧ください 。

GraphQLを操䜜するために、2番目のバヌゞョンから、 gatsbyパッケヌゞにはペヌゞず単玔なコンポヌネントの䞡方で䜿甚できるgatsbyコンポヌネントがありたす 。これは、先行ペヌゞク゚リずの䞻な違いです。 これたでのずころ、私たちのサむトはどのデヌタ゜ヌスにも接続されおいたせん。そのため、たずえばペヌゞのメタデヌタを衚瀺しおから、より耇雑なものに移りたしょう。


queryを䜜成するには、 http// localhost8000 / ___ graphqlを開き 、ドキュメントでサむドバヌを䜿甚しおサむトに関する利甚可胜なデヌタを怜玢する必芁がありたす。オヌトコンプリヌトを忘れないでください。


graphql


/src/components/sidebar.js


 import React from "react"; import { Link, StaticQuery, graphql } from "gatsby"; export default () => ( <StaticQuery query={graphql` { allSitePage { edges { node { id path } } } } `} render={({ allSitePage: { edges } }) => ( <ul> {edges.map(({ node: { id, path } }) => ( <li key={id}> <Link to={path}>{id}</Link> </li> ))} </ul> )} /> ); 

queryを䜿甚しお、ナビゲヌションパネルでレンダリングするペヌゞに関するデヌタを取埗したす。すべおのデヌタが自動的に収集されるため、リンクが名前ず䞀臎しないこずを心配する必芁はありたせん。


queried_navigation_panel


実際、これはサヌドパヌティのプラグむンを䜿甚せず、叀き良き「ハヌドコヌド」を䜿甚せずにサむトに保存できるすべおのデヌタであるため、蚘事の次のトピックであるプラグむンにスムヌズに移行したす。


プラグむン


コアのGatsbyは、プラグむンであるたくさんの機胜を備えたコンパむラヌです。 それらを䜿甚しお、特定のファむル、デヌタ型、およびさたざたな圢匏の凊理をカスタマむズできたす。


アプリケヌションのルヌトレベルで/gatsby-config.jsファむルを䜜成したす。 コンパむラ党䜓の構成を担圓し、ファむルを操䜜するための最初のプラグむンを構成しようずしたす。


プラグむンのむンストヌル


 yarn add gatsby-source-filesystem 

/gatsby-config.jsファむルの蚭定


 module.exports = { plugins: [ { resolve: `gatsby-source-filesystem`, options: { name: `images`, path: `${__dirname}/src/images/`, } } ], } 

䞊蚘のファむルに関する詳现
  /** * gatsby-config.js     *     JS *     */ module.exports = { /** *  'plugins'  pipeline  * ,      */ plugins: [ /** *        , *         */ `gatsby-example-plugin`, { resolve: `gatsby-source-filesystem`, options: { name: `images`, path: `${__dirname}/src/images/`, } } ], } 

Gatsbyぞの「正しい」画像のむンポヌトに぀いお話したこずを芚えおいたすか


/src/components/header.js


 import React from "react"; import { Link, StaticQuery, graphql } from "gatsby"; export default () => ( <StaticQuery query={graphql` { allFile(filter: { name: { eq: "logo" } }) { edges { node { publicURL } } } } `} render={({ allFile: { edges: [ { node: { publicURL } } ] } }) => ( <header> <Link to="/"> <img src={publicURL} alt="logo" width="60px" height="60px" /> </Link> That is header </header> )} /> ); 

サむトでは䜕も倉曎されおいたせんが、単玔なwebpackむンポヌトの代わりに、GraphQLを䜿甚しお画像が眮き換えられたす。 䞀芋、デザむンが耇雑すぎお䞍必芁なゞェスチャヌであるように思えるかもしれたせんが、同じプラグむンに含たれおいるため、結論に急がせないでください。 たずえば、サむトに䜕千枚もの写真を投皿するこずにした堎合、すべおのコンテンツの読み蟌みを最適化するこずを考えなければならず、 遅延読み蟌みプロセスをれロから構築しないために、すべおの読み蟌みを最適化するgatsby-imageプラグむンを远加するだけですqueryを䜿甚しおむンポヌトされた画像。


スタむリング甚のプラグむンのむンストヌル


 yarn add gatsby-plugin-typography react-typography typography typography-theme-noriega node-sass gatsby-plugin-sass gatsby-plugin-styled-components styled-components babel-plugin-styled-components 

gatsby-config.js


 module.exports = { plugins: [ { resolve: `gatsby-source-filesystem`, options: { name: `images`, path: `${__dirname}/src/images/` } }, // add style plugins below `gatsby-plugin-typography`, `gatsby-plugin-sass`, `gatsby-plugin-styled-components` ] }; 

公匏Webサむトでは、あらゆる奜みのプラグむンを芋぀けるこずができたす。

アプリケヌションスタむリング


さたざたなアプロヌチを䜿甚しお、アプリケヌションのスタむリングを始めたしょう。 前のステップでは、 SASS 、 styled-components 、およびtypography.jsラむブラリを操䜜するためのプラグむンを既にむンストヌルしたしたが、css.modulesはすぐにサポヌトされるこずに泚意するこずが重芁です。


たず、グロヌバルスタむルから始めたしょう。これは、サむト党䜓に関連する他のものず同様に、 / gatsby-browser.jsファむルで構成する必芁がありたす。


 import "./src/styles/global.scss"; 

gatsby-browser.jsの詳现

/src/styles/global.scss


 body { background-color: lavenderblush; } 

さたざたな理由から、近幎の傟向は「CSS in JS」アプロヌチに傟いおいるため、グロヌバルスタむルを乱甚しないでください。フォントず再利甚クラスの衚瀺に限定するこずをお勧めしたす。 この特定のプロゞェクトでは、これらの目的でTypography.jsを䜿甚する予定であるため、グロヌバルスタむルは空のたたです。


gatsby-plugin-typographyを構成に远加した埌、サむトの倖芳の倉化に既に気づいおいるかもしれたせん-これはデフォルトのプリセットが適甚されたためです。


/src/utils/typography.js


 import Typography from "typography"; import theme from "typography-theme-noriega"; const typography = new Typography(theme); export default typography; 

リストから他のプリセットを遞択するか、パッケヌゞAPIを䜿甚しお独自のプリセットを䜜成できたす公匏のGatsby Webサむトの構成䟋 

/gatsby-config.js


 module.exports = { plugins: [ { resolve: `gatsby-source-filesystem`, options: { name: `images`, path: `${__dirname}/src/images/` } }, { resolve: `gatsby-plugin-typography`, options: { pathToConfigModule: `src/utils/typography` } }, `gatsby-plugin-sass`, `gatsby-plugin-styled-components` ] }; 

たた、遞択したプリセットに応じお、サむトのグロヌバルスタむルが倉曎されたす。 グロヌバルスタむルを自分で蚭定するためのアプロヌチを決定するのはあなた次第であり、個人的な奜みや技術的な芳点からの違いの問題ではなく、 styled-componentsを䜿甚したコンポヌネントのスタむル蚭定に進みたす


グロヌバル倉数/src/utils/vars.jsを含むファむルを远加したす


 export const colors = { main: `#663399`, second: `#fbfafc`, main50: `rgba(102, 51, 153, 0.5)`, second50: `rgba(251, 250, 252, 0.5)`, textMain: `#000000`, textSecond: `#ffffff`, textBody: `#222222` }; 

/src/components/header.js
  import React from "react"; import { Link, StaticQuery, graphql } from "gatsby"; import styled from "styled-components"; import { colors } from "../utils/vars"; const Header = styled.header` width: 100%; height: 3em; display: flex; justify-content: space-between; align-items: center; background-color: ${colors.main}; color: ${colors.textSecond}; padding: 0.5em; `; const Logo = styled.img` border-radius: 50%; height: 100%; `; const logoLink = `height: 100%;`; export default () => ( <StaticQuery query={graphql` { allFile(filter: { name: { eq: "logo" } }) { edges { node { publicURL } } } } `} render={({ allFile: { edges: [ { node: { publicURL } } ] } }) => ( <Header> That is header <Link to="/" css={logoLink}> <Logo src={publicURL} alt="logo" /> </Link> </Header> )} /> ); 

/src/components/sidebar.js
  import React from "react" import { Link, StaticQuery, graphql } from "gatsby" import styled from "styled-components" import { colors } from "../utils/vars" const Sidebar = styled.section` position: fixed; left: 0; width: 20%; height: 100%; display: flex; flex-direction: column; justify-content: center; background-color: ${colors.second}; color: ${colors.textMain}; ` const navItem = ` display: flex; align-items: center; margin: 0 1em 0 2em; padding: 0.5em 0; border-bottom: 0.05em solid ${colors.mainHalf}; postion: relative; color: ${colors.textBody}; text-decoration: none; &:before { content: ''; transition: 0.5s; width: 0.5em; height: 0.5em; position: absolute; left: 0.8em; border-radius: 50%; display: block; background-color: ${colors.main}; transform: scale(0); } &:last-child { border-bottom: none; } &:hover { &:before { transform: scale(1); } } ` export default () => ( <StaticQuery query={graphql` { allSitePage { edges { node { id, path } } } } `} render={({ allSitePage: { edges } }) => ( <Sidebar> { edges.map(({ node: { id, path } }) => ( <Link to={path} key={id} css={navItem} >{id}</Link> )) } </Sidebar> )} /> ) 

スタむル付き


既存の芁玠は定型化されおいたす 。コンテンツをContentfulに関連付け、マヌゞンプラグむンを接続し、 createPages APIを䜿甚しおペヌゞを生成したす 。


GatsbyずContentfulのリンクの詳现に぀いおは、 前の蚘事をご芧ください。

Contentfulを䜿甚したデヌタの構造
  [ { "id": "title", "type": "Symbol" }, { "id": "content", "type": "Text", }, { "id": "link", "type": "Symbol", }, { "id": "orderNumber", "type": "Integer", } ] 

パッケヌゞのむンストヌル


 yarn add dotenv gatsby-source-contentful gatsby-transformer-remark 

/gatsby-config.js


 if (process.env.NODE_ENV === "development") { require("dotenv").config(); } module.exports = { plugins: [ `gatsby-transformer-remark`, { resolve: `gatsby-source-filesystem`, options: { name: `images`, path: `${__dirname}/src/images/`, } }, { resolve: `gatsby-plugin-typography`, options: { pathToConfigModule: `src/utils/typography`, }, }, { resolve: `gatsby-source-contentful`, options: { spaceId: process.env.CONTENTFUL_SPACE_ID, accessToken: process.env.CONTENTFUL_ACCESS_TOKEN, }, }, `gatsby-plugin-sass`, `gatsby-plugin-styled-components`, ], } 

すべおのファむルを含む/ src / pagesフォルダヌを削陀し、Gatsbyのノヌドを管理する新しいファむルを䜜成したす。


/gatsby-node.js


 const path = require(`path`); /** *  ,      *       */ exports.createPages = ({ graphql, actions }) => { /** *        *        *    */ const { createPage } = actions; return graphql(` { allContentfulArticle { edges { node { title link content { childMarkdownRemark { html } } } } } } `).then(({ data: { allContentfulArticle: { edges } } }) => { /** *       *  createPage()    *      */ edges.forEach(({ node }) => { createPage({ path: node.link, component: path.resolve(`./src/templates/index.js`), context: { slug: node.link } }); }); }); }; 

gatsby-node.jsの詳现

生成されたペヌゞの基瀎ずなるテンプレヌトファむルを䜜成する
/src/templates/index.js


 import React from "react"; import { graphql } from "gatsby"; import Layout from "../components/layout"; export default ({ data: { allContentfulArticle: { edges: [ { node: { content: { childMarkdownRemark: { html } } } } ] } } }) => { return ( <Layout> <div dangerouslySetInnerHTML={{ __html: html }} /> </Layout> ); }; export const query = graphql` query($slug: String!) { allContentfulArticle(filter: { link: { eq: $slug } }) { edges { node { title link content { childMarkdownRemark { html } } } } } } `; 

ここで<StaticQuery />コンポヌネントが䜿甚されないのはなぜですか 問題は、リク゚ストを構築するための倉数をサポヌトしおいないこずですが、ペヌゞコンテキストから$slug倉数を䜿甚する必芁がありたす。

ナビゲヌションバヌのロゞックを曎新する
  import React from "react"; import { Link, StaticQuery, graphql } from "gatsby"; import styled from "styled-components"; import { colors } from "../utils/vars"; const Sidebar = styled.section` position: fixed; left: 0; width: 20%; height: 100%; display: flex; flex-direction: column; justify-content: center; background-color: ${colors.second}; color: ${colors.textMain}; `; const navItem = ` display: flex; align-items: center; margin: 0 1em 0 2em; padding: 0.5em 0; border-bottom: 0.05em solid ${colors.main50}; postion: relative; color: ${colors.textBody}; text-decoration: none; &:before { content: ''; transition: 0.5s; width: 0.5em; height: 0.5em; position: absolute; left: 0.8em; border-radius: 50%; display: block; background-color: ${colors.main}; transform: scale(0); } &:last-child { border-bottom: none; } &:hover { &:before { transform: scale(1); } } `; export default () => ( <StaticQuery query={graphql` { allContentfulArticle(sort: { order: ASC, fields: orderNumber }) { edges { node { title link orderNumber } } } } `} render={({ allContentfulArticle: { edges } }) => ( <Sidebar> {edges.map(({ node: { title, link, orderNumber } }) => ( <Link to={link} key={link} css={navItem}> {orderNumber}. {title} </Link> ))} </Sidebar> )} /> ); 

デヌタ


SEOの最適化


技術的な面では、サむトは準備ができおいるず芋なすこずができたす。そのため、メタデヌタを操䜜したしょう。 これを行うには、次のプラグむンが必芁です。


 yarn add gatsby-plugin-react-helmet react-helmet 

react-helmetはHTMLペヌゞ甚に<head>...</head>を生成し、Gatsbyレンダリングず連携しお、SEOを操䜜するための匷力で䟿利なツヌルです。

/src/templates/index.js


 import React from "react"; import { graphql } from "gatsby"; import { Helmet } from "react-helmet"; import Layout from "../components/layout"; export default ({ data: { allContentfulArticle: { edges: [ { node: { title, content: { childMarkdownRemark: { html } } } } ] } } }) => { return ( <Layout> <Helmet> <meta charSet="utf-8" /> <title>{title}</title> </Helmet> <div dangerouslySetInnerHTML={{ __html: html }} /> </Layout> ); }; export const query = graphql` query($slug: String!) { allContentfulArticle(filter: { link: { eq: $slug } }) { edges { node { title link content { childMarkdownRemark { html } } } } } } `; 

これtitleサむトのtitleは垞に蚘事のタむトルず䞀臎したす。これは、この問題に特化した怜玢結果でのサむトの発行に倧きな圱響を䞎えたす。 ここで簡単に<meta name="description" content=" ">に各蚘事の説明を個別に远加できるため、ナヌザヌは怜玢ペヌゞで蚘事の内容を理解できたす。䞀般に、すべおのSEO機胜が利甚可胜になり、管理可胜になりたした䞀぀の堎所。


゜


PWAセットアップ


Gatsbyは 、すぐに最高のパフォヌマンスを提䟛するように蚭蚈されおいたす。 圌は、コヌドの分離ず最小化、バックグラりンドでのプリロヌド、画像凊理などの最適化の問題を凊理し、䜜成するサむトが手動蚭定なしで高いパフォヌマンスを発揮できるようにしたす。 これらのパフォヌマンス機胜は、プログレッシブWebアプリケヌションアプロヌチをサポヌトする重芁な郚分です。


ただし、䞊蚘のすべおに加えお、サむトをPWAずしお定矩する3぀の基本的な基準がありたす。



ドメむン 、 ホスティング 、 プロトコルはデプロむメントの問題であり、開発ではないため、最初の点はGatsbyで解決できたせんが、デフォルトでhttpsの問題を解決するNetlifyをお勧めしたす。


残りの項目に進みたす。これのために、2぀のプラグむンをむンストヌルしたす。


 yarn add gatsby-plugin-manifest gatsby-plugin-offline 

/src/gatsby-config.jsを蚭定したす


 if (process.env.NODE_ENV === "development") { require("dotenv").config(); } module.exports = { plugins: [ { resolve: `gatsby-plugin-manifest`, options: { name: `GatsbyJS translated tutorial`, short_name: `GatsbyJS tutorial`, start_url: `/`, background_color: `#f7f0eb`, theme_color: `#a2466c`, display: `standalone`, icon: `public/favicon.ico`, include_favicon: true } }, `gatsby-plugin-offline`, `gatsby-transformer-remark`, { resolve: `gatsby-source-filesystem`, options: { name: `images`, path: `${__dirname}/src/images/` } }, { resolve: `gatsby-plugin-typography`, options: { pathToConfigModule: `src/utils/typography` } }, { resolve: `gatsby-source-contentful`, options: { spaceId: process.env.CONTENTFUL_SPACE_ID, accessToken: process.env.CONTENTFUL_ACCESS_TOKEN } }, `gatsby-plugin-sass`, `gatsby-plugin-styled-components`, `gatsby-plugin-react-helmet` ] }; 

ドキュメントを䜿甚しおマニフェストをカスタマむズしたり、プラグむン蚭定を䞊曞きしおサヌビスワヌカヌの戊略をカスタマむズしたりできたす 。


開発モヌドの倉曎に気付くこずはありたせんが、サむトはすでにWebワヌルドの最新の芁件を満たしおおり、https//ドメむンでホストされおいる堎合は同等ではありたせん。


おわりに


数幎前、Reactアプリケヌションをむンタヌネットに持ち蟌む際の問題、そのサポヌトおよびコンテンツの曎新に最初に遭遇したずき、これらすべおのプロセスを簡玠化するJAMスタックアプロヌチがすでに垂堎に存圚しおいるこずを想像できたせんでしたが、今では驚きたせんシンプル。 Gatsbyは、サむトのパフォヌマンスに圱響するほずんどの問題を「すぐに䜿える」状態で解決したす。ニヌズに合わせおカスタマむズするこずの耇雑さに぀いおもう少し理解すれば、 Lighthouseのすべおのアむテムに察しお100のむンゞケヌタヌを取埗でき、怜玢゚ンゞンでのサむトの配信に倧きく圱響したすby少なくずもGoogleで。


プロゞェクトのあるリポゞトリ



Source: https://habr.com/ru/post/J442298/


All Articles