Cách lấy HTML trang Gatsby trong graphQL
Tôi đang cố gắng triển khai tìm kiếm trang web vớiasticlunr và đang làm theo các hướng dẫn cho gatsby-plugin -asticlunr-search. Tôi gặp khó khăn khi cố gắng tạo chỉ mục tìm kiếm vì tôi không thể tìm ra truy vấn graphql bao gồm bất kỳ nội dung nào của tôi.
Mỗi ví dụ tôi tìm thấy đều cho thấy cách chỉnh sửa gatsby-config.js để điền vào graphql với nội dung đánh dấu:
resolvers: {
// For any node of type MarkdownRemark, list how to resolve the fields` values
MarkdownRemark: {
title: node => node.frontmatter.title,
tags: node => node.frontmatter.tags,
path: node => node.frontmatter.path,
},
},
Tôi không có bất kỳ đánh dấu nào, nội dung của tôi hoàn toàn bằng HTML và một vài tệp JSON. Có cách nào để kéo nội dung HTML vào graphql để nó có thể được đưa vào chỉ mục tìm kiếm không?
Tôi có đang đi sai cách không?
Trả lời
Bạn có thể truy xuất các tệp / nội dung JSON giống như cách mà các hướng dẫn làm với đánh dấu (như bạn có thể thấy trong tài liệu của Gatsby hoặc trong bài viết này ), tuy nhiên, bạn có thể cần tạo cấu trúc dữ liệu để điền HTML của mình vì bạn có thể ' không tìm nạp trực tiếp dữ liệu từ tệp HTML vì nó không nằm trong hệ thống tệp Gatsby, vì vậy Gatsby không biết cách tạo các nút cũng như lược đồ GraphQL từ nội dung đó.
Cách tiếp cận dễ nhất là tạo một hệ thống tệp dữ liệu tùy chỉnh (JSON, YAML hoặc tệp đánh dấu) để điền vào HTML của bạn và làm cho nó động chứ không phải "mã cứng" như thực tế (dường như). Khi bạn đã thiết lập hệ thống tệp và bạn có thể tạo truy vấn để thu thập dữ liệu và điền vào các trang / thành phần của mình, bạn sẽ có thể tạo truy vấn để sử dụng elasticlunr.
Tài nguyên:
- https://itnext.io/reading-data-from-a-json-file-with-gatsby-graphql-572b18ab98a
- https://github.com/gatsbyjs/gatsby/issues/20734
- Truy vấn GraphQL truy cập tất cả các tệp json đã được chuyển đổi trong một thư mục nằm trong các thư mục con