Gatsby.js 未来的网页06:加入Markdown

栏目: 前端 · 发布时间: 6年前

内容简介:Gatsby可以以Markdown作为资料来源自动产生页面,这让我们可以轻易的建立Blog之类的网站:写blog只需写markdown。我们要从Markdown文件中取得页面内容需要gatsby-source-filesystem的帮助:

Gatsby.js 未来的网页06:加入Markdown

Gatsby可以以Markdown作为资料来源自动产生页面,这让我们可以轻易的建立Blog之类的网站:写blog只需写markdown。

视频教学连结

gatsby-source-filesystem

我们要从Markdown文件中取得页面内容需要gatsby-source-filesystem的帮助:

npm install --save gatsby-source-filesystem

安装完成后,需要在gatsby-config.js的plugins部分,加入这个plugin。这次,我们要进行一些设定:

{
  resolve: 'gatsby-source-filesystem',
  options: {
    path: `${__dirname}/src/pages`,
    name: 'pages',
  }
}

resolve是plugin名称,options是设定,其中path是文件存放目录, ${__dirname} 是工作目录,即这个网站的所在目录,由于用到变量,我们用 backtick: ` (数字1左边的那个按键),而不是引号。name是存放文件的目录名称。

gatsby-transformer-remark

接着,我们需要将从Markdown文件读取出来的数据转化成Gatsby能够透过GraphQL提取的内容,这就需要另一个plugin:gatsby-transformer-remark

npm install --save gatsby-transformer-remark

这个plugin功能很强大,也能透过gatsby-config.js进行设定,但目前我们只要把它加入plugins里:

'gatsby-transformer-remark'

有了这两个Plugin,Gatsby就能够从Markdown文件中透过GraphQL读取资料。

建立blog文章

在/src/pages底下,新增文件夹:20-08-2018-blog-post-1,在里面新增index.md文件,这便是blog文章所在位置。

这个文件的由frontmatter开始。frontmatter是网站的基本资料,如title。以下是我们的index.md:

---
path: 'blog-post-1'
title: 'My post'
---

# Post Heading

templates

blog的文章要怎样呈现?这就需要用到模版,让所有的文章都使用相同的模版。

在/src底下,新增templates目录,在其中新增post.js作为模版文件,其内容为:

import react from 'react';
import Helmet from 'react-helmet';

export default function Template({data}) {
  const {markdownRemark: post} = data;
  return (
    <div>
      <h1>{post.frontmatter.title}</h1>
    </div>
  )
}

参数data是由GraphQL送进来的数据,也就是Markdown文件里面的内容。这些数据存放在markdownRemark变量当中,我们把它提取并存入post变量中,接着就可以透过post.frontmatter.title使用frontmatter中的title内容。

我们还要在template中加入GraphQL的query:

export const postQuery = graphql`
  query BlogPostByPath($path: String!) {
    markdownRemark(frontmatter: { path: { eq: $path } }) {
      html
      frontmatter {
        path
        title
      }
    }
  }
`

这段query是要透过路径(参数:$path)取得对应的文章。

graphql开始是GraphQL的内容。第二行的BlogPostByPath是这段query的名称,其接受一个参数:$path。我们要在markdownRemark中找frontmatter的path等于参数给予的$path的数据,找到后,我们要取得其html以及frontmatter中的path和title当中存放的内容。

下一步是要用Gatsby的createPages API创建页,这部分的内容,我们留到明天继续。

本文参与 iT邦帮忙铁人赛繁体


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与问题求解

数据结构与问题求解

韦斯 / 清华大学出版社 / 2011-8 / 89.50元

《数据结构与问题求解(Java语言版)(第4版)》是专为计算机科学专业的两个学期课程而设计的,从介绍什么足数据结构开始,继而对高级数据结构与算法进行分析。《数据结构与问题求解(Java语言版)(第4版)》以独特的方式,清晰地将每种数据结构的接口与其实现分离开来,即将如何使用数据结构与如何对数据结构编程相分离。《数据结构与问题求解(Java语言版)(第4版)》从抽象思维和问题求解的角度出发,为数据结......一起来看看 《数据结构与问题求解》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具