데일리 투 센트 - 포트폴리오
6513 단어 gatsby
포트폴리오 사이트를 만들 때 Gatsby을 사용했습니다. 앞서 언급했듯이 저는 사이드 프로젝트에 새로운 기술을 사용하는 것을 즐깁니다. 저는 이 프로젝트를 위해 Gatsby를 선택했습니다.
내가 자랑스럽게 생각하는 한 가지는 Gatsby 플러그인 gatsby-source-filesystem을 사용하는 것입니다. 이를 통해 지정된 폴더(이 경우 프로젝트 폴더)에 있는 각 파일을 살펴볼 수 있습니다.
> projects
- bujo.md
- penny.md
- portfolio.md
따라서 일부 사용자 정의 코드가 포함된 플러그인은 각 파일을 통과하여 마크다운 파일인지 확인한 다음 해당 파일에 대한 슬러그를 생성하므로 나중에 참조할 수 있습니다. 이것은 아래에서 볼 수 있듯이 내가 사용하는 플러그인의 createNodeField 메소드를 사용합니다.
const { createFilePath } = require(`gatsby-source-filesystem`)
exports.onCreateNode = ({ node, getNode, actions }) => {
const { createNodeField } = actions
if (node.internal.type === `MarkdownRemark`) {
const slug = createFilePath({ node, getNode, basePath: `pages` })
createNodeField({
node,
name: `slug`,
value: slug,
})
}
}
그런 다음 생성된 각 슬러그에 대해 해당 슬러그에 대한 페이지를 생성하여 마크다운 파일만으로 프로젝트를 관리할 수 있습니다. 페이지를 생성하기 위해 createPage 메소드를 사용합니다.
exports.createPages = async ({ graphql, actions }) => {
const { createPage } = actions
const result = await graphql(`...`)
result.data.allMarkdownRemark.edges.forEach(({ node }) => {
createPage({
path: node.fields.slug,
component: path.resolve(`./src/templates/project-post.js`),
context: {
// Data passed to context is available
// in page queries as GraphQL variables.
slug: node.fields.slug,
},
})
})
}
나는 graphql을 사용하여 슬러그를 얻은 다음 해당 파일을 사용하여 페이지를 만듭니다. 파일 자체는 비교적 간단합니다. 내가 필요한 모든 것을 포함하는 마크다운 파일의 앞부분에 데이터를 포함합니다.
---
index: 1
title: "Penny"
startDate: "2020-06-11"
dark:
image: /contactkeeper.jpg
live: https://penny.centanomics.repl.co/
repo: https://github.com/centanomics/Penny
description: "Featured Project"
---
그리고 나머지 마크다운 파일은 내가 만든 템플릿을 사용하여 html로 변환된 일반 마크다운입니다. 나는 주로 메인 페이지에 내 모든 프로젝트를 표시하는 데 사용합니다. 또한 내가 잊기 전에 방금 말한 모든 코드를 확인할 수 있습니다here.
저는 여기에서 서명하고 이 사이트를 다듬는 데 더 집중할 것이므로 내일 뵙겠습니다!
Reference
이 문제에 관하여(데일리 투 센트 - 포트폴리오), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/centanomics/daily-two-cents-portfolio-519g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)