어떻게 30분 안에 개츠비와 에어테이블을 이용하여 사이트를 구축합니까
Airtable에는 킬러급 기능"share view"이 있습니다. 그곳에서 시계의 보기를 공유하고 간단한 iframe를 사용하여 사이트에 삽입할 수 있습니다.저는 같은 기능을 사용하여 Startups vs COVID의 첫 번째 버전을 구축했습니다. 이것은 2019 관상바이러스 질병에 대응하는 창업 회사에 자금, 지원과 자원을 제공하는 실시간 저장소입니다.
다음과 같이 Airtable iframes가 포함된 간단한 HTML 웹 사이트입니다.
하지만 이 버전의 단점은 다음과 같습니다.
이것은 두 번째/현재 버전입니다.
왜 개츠비야?
GatsbyJs와 Airtable를 사용하여 웹 사이트를 구축하려면 어떻게 해야 합니까?
In this article, we'll focus only on connecting airtable & displaying data on your gatsby web page. We are not going deeper into the design of the website here.
먼저 GatsbyJS를 설치하고 프로젝트를 시작합니다.Here 네가 할 수 있다.또한 starter packs 중 하나를 사용하여 시작할 수 있습니다.
게이츠비는 여러 개의 플러그인을 가지고 있어 다른 응용 프로그램을 통합하는 데 도움을 줄 수 있다.여기서 우리는 게이츠비원airtable 플러그인을 이용할 것이다.Airtable 데이터베이스에서 웹 사이트에 데이터를 제공합니다.이것은 미리 작성된 모듈로 airtable API를 사용하여Gatsby GraphQL로 변환합니다.
게이츠비 사이트와 Airtable 받침대가 준비되면 폴더에
gatsby-source-airtable
플러그인을 설치합니다.# using npm
npm install --save gatsby-source-airtable
# using yarn
yarn add gatsby-source-airtable
시작하다
다음은 구축이 완료된 폴더의 모양입니다.
코드에 Airtable 통합
gatsby-source-airtable
플러그인을 설치한 후 gatsby-config.js
파일에 다음과 같이 Airtable 테이블을 구성합니다.{
resolve: "gatsby-source-airtable",
options: {
apiKey: process.env.AIRTABLE_API_KEY,
tables: [
{
baseId: "YOUR_AIRTABLE_BASE_ID",
tableName: "YOUR_TABLE_NAME",
},
]
}
}
gatsby-config.js
의 표에서 지정해야 합니다Airtable에서 Google 개츠비 프로젝트로 데이터 가져오기
개츠비는 GraphQL을 사용하여 데이터를 다른 페이지로 보냅니다.이 플러그인
gatsby-source-airtable
은 Airtable의 restapi를 GraphQL 모드로 변환합니다.우선 Gatsby의 GraphQL 인터페이스를 사용하여 Airtable API에서 데이터를 가져오는지 확인하겠습니다.
개츠비 서버 시작:
gatsby develop
다음으로 이동: http://localhost:5000/_graphql
이제 Airtable의 데이터를 확인하기 위한 간단한 조회를 실행합시다.gatsby-source-airtable
는 allAirtable
라는 조회를 제공합니다. 이 조회는 모든 데이터를 가져옵니다.query {
allAirtable {
edges {
node {
column_name_1
column_name_2
}
}
}
}
이 때, 우리는 이미 airtable에 연결되었고, 데이터는 GraphQL에 도착해야 한다.다음 단계는 이 데이터를 저희 홈페이지로 가져오는 것입니다pages/index.js
import React from "react"
import { graphql } from "gatsby"
export default ({data}) => {
const allAirtableData = data.allAirtable.nodes;
return (
<div>
{
allAirtableData.map((node) => (
<div>
<img src={node.data.column_name_1} />
<h1>{node.data.column_name_2}</h1>
<a href={`/${node.recordId}`}>Click Here</a>
</div>
))
}
</div>
)
}
export const query = graphql`
query {
allAirtable {
node {
recordId
data {
column_name_1
column_name_2
}
}
}
}
`
이것은 매우 간단하다!목록을 allAirtable
조회에서react 구성 요소의 data
변수에 비추겠습니다.그리고 우리는 map()
를 사용하여 이 목록을 교체하고airtable 라이브러리의 모든 데이터를 열거했습니다.각 레코드에 대한 독립 페이지 만들기
검색엔진의 최적화를 높이기 위해 모든 줄에 페이지를 만드는 것은 좋은 생각이지만, 우리는 모든 줄을 수동으로 만들고 싶지 않다.반대로, Airtable이 업데이트될 때 자동으로 이 페이지를 생성하기를 희망합니다.가장 좋은 방법은 백엔드 서버에서 전체 항목을 실행하고 서버 쪽 렌더링을 사용하여 루트를 만드는 것이다.그러나 게이츠비는 내장 함수를 제공하여 게이츠비로 페이지를 만들 수 있다.이것은 우리를 위해 많은 시간을 절약했다.우리는 웹 사이트를 실행하기 위해 백엔드 서버를 유지할 필요가 없다.
시작하기 전에 이 페이지의 표준 템플릿을 만듭니다.
새 폴더 "template"를 만들고
post.js
라는 파일을 만듭니다.import React from 'react'
import { graphql } from 'gatsby'
export default ({ data }) => {
return (
<div>
<h1>{data.airtable.column_name_1}</h1>
<img src={data.airtable.column_name_2} />
</div>
)
}
export const query = graphql`
query GetRecord($recordId: String!){
airtable(recordId: { eq: $recordId}) {
id
table
recordId
data {
column_name_1
column_name_2
}
}
}`
빠르게 살펴보면, GraphQL 조회는 좀 복잡해졌지만, 상대적으로 간단해졌다.새로운 변수$recordId
가 있습니다. 이것은 기본적으로airtable의 모든 줄/기록된 id입니다.recordId
의 값은 스크립트에서 전달되고 (다음 단계에서 진행할 것입니다) airtable에서 해당하는 기록을 가져오는 데 사용됩니다.createPage 함수 소개
createPage()
는gatsby의 내장 함수로 프로그래밍 방식으로 구축에 페이지를 만드는 데 사용됩니다.현재, 우리가 해야 할 일은 airtable에서 모든 기록을 가져오고, 모든 기록을 훑어보고, 모든 기록을 위한 페이지를 만드는 것이다.우선 루트 폴더에 다음 내용을 포함하는 새 파일
gatsby-node.js
을 만들어야 합니다.const path = require(`path`);
exports.createPages = ({ graphql, actions }) => {
const { createPage } = actions
return new Promise(async resolve => {
const result = await graphql(`
{
allAirtable {
edges {
node {
table
recordId
data {
column_name_1
column_name_1
}
}
}
}
}
`)
// For each path, create page and choose a template.
// values in context Object are available in that page's query
result.data.allAirtable.edges.forEach(({ node }) => {
createPage({
path: `/${node.recordId}`,
component: path.resolve(`./src/template/post.js`),
context: {
recordId: node.recordId,
},
})
});
resolve()
})
}
본 페이지에서 발생한 일을 점차적으로 이해하다allAirtable
라는 상수에 저장합니다.result
의 모든 수조는 기본적으로airtable baseresult.data.allAirtable.edges
경로가 createPage()
페이지로 생성됩니다./:recordId
로 지정합니다. 이것은 우리가 이전에 만든 것입니다.post.js
context
을(를) graphQL 질의에 사용된 템플릿으로 전송recordId
.→ 예: post.js
축하합니다!이제 프런트엔드의 Airtable base에서 필요한 모든 데이터를 얻을 수 있습니다.여러 개의 시계, Airtable의 웹hook, 앞부분의 구성 요소, PWA 등 더 많은 일을 할 수 있습니다. 다음 글에 관심을 가지고 이 기능을 어떻게 실현하는지 알아보십시오.읽어주셔서 감사합니다.질문이나 건의가 있으면 메시지를 남겨주세요!
Reference
이 문제에 관하여(어떻게 30분 안에 개츠비와 에어테이블을 이용하여 사이트를 구축합니까), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sethu/how-to-build-a-website-using-gatsby-airtable-in-30-mins-42gm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)