設置document head內容,好比title, favicon, descriptioncss
添加meta-tags,好比openGragh, Twitter Cardhtml
方式一:建立依賴helmet的SEO組件,在page中引用組件,經過props自定義metareact
方式二:自定義html.js,修改head內容管理全局metawebpack
在當前項目中,使用方式一管理全局和自定義metagit
須要引用favicon文件覆蓋默認設置github
import favicon from "../../static/favicon.ico"; <Helmet htmlAttributes={{ lang, }} title={title} titleTemplate={`%s · ${data.site.siteMetadata.title}`} link={[ { rel: `shortcut icon`, href: `${favicon}`, type: `image/x-icon` } ]} />
爲基礎內容添加多語言支持web
方式一:React-intl + Context API數據結構
方式二:React-i18next + gatsby-plugin-i18nextapp
方式一在Layout內包裹Provider,在page中沒法使用高階函數調用Intl對象curl
Gatsby默認使用Prettier作代碼格式化,webpack中攜帶eslint-loader,可經過gatsby-plugin-eslint插件自定義設置。若想用eslint代替Prettier作格式化功能,可按照官方文檔走https://www.gatsbyjs.org/docs...
當前項目配置
https://juejin.im/entry/5b10b...
官方提供的幾種方案
CSS-in-JS Glamor:經過組件上的css屬性定義樣式,與組件緊密耦合
import React from "react" const Container = ({ children }) => ( <div css={{ margin: `3rem auto`, maxWidth: 600 }}>{children}</div> )
CSS-in-JS Styled Components
import React from "react" import styled from "styled-components" const Container = styled.div` margin: 3rem auto; max-width: 600px; display: flex; flex-direction: column; align-items: center; justify-content: center; ` export default () => ( <Container> <h1>About Styled Components</h1> </Container> )
試着玩一玩CSS-in-JS Glamor、CSS Modules
GraphQL容許開發者使用數據結構聲明查詢對應結構的數據,查詢語法支持限制、排序、篩選、格式化
用gitpage的方式已經有點老了,不如試試看Netlify。
Netlify:持續集成工具,從遠程倉庫自動部署靜態站點,支持自定義域名,HTTPS,全局CDN.
設置webpack解析根目錄,來支持使用絕對路徑導入模塊
支持React Helmet,React Helmet是用來控制document head的組件,可在任意位置使用
添加manifest文件,https://www.gatsbyjs.org/docs...
支持react-i18next
https://www.flaticon.com/ - 優質的免費圖標
項目倉庫:https://github.com/curlywater...
線上效果:https://curlywater.netlify.com