--- tags: 110-1 --- # Gatsby 常用功能簡介 參考連結: https://www.gatsbyjs.com/docs/ ## Page 的構成 Layout, Component, CSS module, query [Gatsby 頁面常用 component 及 Styling 官方教學](https://www.gatsbyjs.com/docs/tutorial/part-2/) Gatsby Link Use the <Link> component ```javascript= // src/pages/index.js import * as React from 'react' import { Link } from 'gatsby' const IndexPage = () => { return ( <main> <title>Home Page</title> <h1>Welcome to my Gatsby site!</h1> <Link to="/about">About</Link> <p>I'm making this by following the Gatsby Tutorial.</p> </main> ) } export default IndexPage ``` ## Styling [CSS module 官方教學](https://www.gatsbyjs.com/docs/how-to/styling/css-modules/#what-is-a-css-module) ![](https://i.imgur.com/zeaesIx.png) ![](https://i.imgur.com/jPNCBkr.png) * 每個 .js(component) 對應一個 module.scss(css) 放在同一個目錄底下 * 從 scss import className 填入 tag 的 className ## Query for Data with GraphQL [GraphQL 官方教學](https://www.gatsbyjs.com/docs/tutorial/part-4/) ```bash= npm run develop gatsby develop 網址:http://localhost:8000/___graphql ``` ![image alt](https://www.gatsbyjs.com/static/c6b53975530da3347f0e0d12fc175208/84a90/graphiql.png) * 根據需求將選取需要的資料,回傳的資料會是 json 的格式 * gatsby-source-filesystem plugin: 可以用來存取本機端的資料(static 中的images 或是 markdowns) * page query: query頁面生成需要的資料,並傳入page component. * 觀察下面兩張圖可以發現結構完全對應 ```bash= query MyQuery { site { siteMetadata { title } } } ``` ```json= { "data": { "site": { "siteMetadata": { "title": "My First Gatsby Site" } } }, "extensions": {} } ``` ### 範例格式 ```javascript= import * as React from 'react' import { Link, useStaticQuery, graphql } from 'gatsby' import { container, heading, navLinks, navLinkItem, navLinkText } from './layout.module.css' const Layout = ({ pageTitle, children }) => { const data = useStaticQuery(graphql` query { site { siteMetadata { title } } } `) return ( <div className={container}> <title>{pageTitle} | {data.site.siteMetadata.title}</title> <header>{data.site.siteMetadata.title}</header> </div> ) } export default Layout ``` ## Add Features with Plugins ### 新增 Plugin 的步驟 1. Install the plugin using npm. 2. Configure the plugin in your site’s `gatsby-config.js` file. 3. Use the plugin features in your site, as needed. ### 範例: 用 npm 安裝該套件 ```bash= npm install plugin-name ``` 修改並設定 `gatsby-config.js` ```javascript= // gatsby-config.js module.exports = { siteMetadata: { title: "My First Gatsby Site", }, plugins: [ { resolve: "plugin-name", options: { // Check the plugin README for what options go in here } }, ] } ``` ### 常用套件 1. `"gatsby-plugin-image"` 2. `"gatsby-plugin-sharp"` 3. ... ## Create Pages Programmatically [Gatsby 生成頁面 官方教學](https://www.gatsbyjs.com/docs/tutorial/part-6/) * Use Gatsby’s Filesystem Route API to dynamically create new pages for your blog posts. * Add a query variable to a page query.