js修改json文件_静态网站生成器之React框架Gatsby (三)连接json数据源

news/2024/5/17 12:12:00/文章来源:https://blog.csdn.net/weixin_39593718/article/details/110798796

前面一篇,我们讲到了替换首页的模板,用antd的首页模板页面。这一篇,我们将使用gatsby的数据源功能,把首页的一些数据从模板页面的js中剥离出来。

这里我们将使用json文件作为gatsby的数据源,所以我们首先需要安装依赖的plugin。

7ce951e974208f83a113bae3b5bfb43b.png

安装依赖

一个是starter创建的时候,默认安装的插件,gatsby-source-filesystem插件,这个插件是本地代码的文件系统插件,他会帮你去指定的目录去查找所有的文件,然后我们就可以在graphql中查询目前的所有文件。

7e13a3c4c1619efc54c55091a7b9a798.png

graphql查询所有文件

这里我们可以看到通过http://localhost:8000/___graphql,进入graphql页面,然后就可以通过查询语句

allFile { edges { node { id name relativePath } } }

就可以查询出所有的文件。

gatsby-transformer-json插件是用来把json文件的内容转换成javascript的object使用。

安装好依赖包之后,我们需要修改gatsby-config.js来配置文件系统解析,来查找json文件,上面的结果是配置了json目录之后,才会找到的。

c7bc1a57e05c849f73f721620301e513.png

Gatsby-config.js

这里我们看到,添加了gatsby-transformer-json插件,以及gatsby-source-filesystem插件,并配置了文件系统的名称是json,目录是当前目录下面的data/json下面,所以我们所有的json数据源的存放地址就是data/json下面。

接下来,我们就需要把所有的数据源文件放到json目录下面。

14718ed83664753f90b153f3bf7db186.png

json目录tree

682a2421075d475e7fe1017bc36126d6.png

banner_data.json

我们看其中一个json文件示例,banner_data.json,里面就是一个列表,目前我理解的json数据源还只能是列表查询,还不知道一个字典是怎么查询的。gatsby的site的对象是一个字典,就可以直接查询里面的字段。或许有方法,还需要看一下。

接下来,就是怎么查询这个json数据了。

8f970a854f725ae89c04ea0c8b25ba52.png
allBannerDataJson { edges { node { id name className texty text } }}

在graphql界面,输入的时候会自动提示已有的数据,所有的json的数据都是以all开头来搜索的,其他的数据也是按照这种方法来查询。

知道了查询方法之后,接下来,我们就需要把数据,跟模板页面关联起来,把查询的数据结构传递给页面去渲染了。

在我们的index页面中,我们需要引入graphql支持

import { graphql } from "gatsby";

在IndexPage对象后面,导出查询语句。

b689cea8b6a4bf50e6666f6ac44ef59d.png

graphql query

这样,IndexPage就会传入一个参数名为data,我们直接从data中获取所有的查询结果。

5742d9f58b4d62cd3d55572840decb34.png

这样,就把数据和页面关联了起来,我们就可以直接把相关的数据传递到不同的组件中使用了。

写完之后,我们就可以直接gatsby build,生成最终的静态页面了。

这里记住,如果是component不是gatsby里的某一个页面的话,一定要放到src/components目录下面,因为所有放到pages下面的js/jsx文件都会被视为独立页面来编译,因为我们components里面用到了父级传来的参数,当被视为page编译的时候,自己就是根页面,所以如果没有引入数据查询的话,不会有任何参数传入,则build的时候会报错,像这样。

6625a4e61029076d343ddf2f4a40ab99.png

build成功之后,我们就可以本地gatsby serve运行,访问测试了。

b04c4fd20b0a7b0f7a71ee4906d8ea51.png
4557374135a9809dcebf2277d90bc4eb.png

到这,我们就成功实现了把数据用json的格式分离,通过graphql查询,生成静态页面了。下一篇,我们将实现怎么可以只需要一个域名的钱,搭建自己的https的门户介绍网站。谢谢大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_818097.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小虾视频网站广告屏蔽器 V 5.0

本软件用于屏蔽一些视频网站的广告,也具备屏蔽一些恶意网站的作用!如过你发现在电脑正常的情况下有些网友打开开,那是因为屏蔽的原因,只要单击一键还原广告就OK了!~打开软件后不要老是点击不然容易出错!要是…

当前网站设计风格的发展趋势!

这篇文章翻译至:[url]http://www.webdesignfromscratch.com/current-style.cfm[/url]它总结了一些当前网站设计风格的发展趋势。但是我得先提一句,它说的都是西方网站,未必适合我们中国网站的情况和中国网民的审美观。如果能给你一点点参考和…

网站地图(sitemap)在线生成

网站地图在线生成其实也就是sitemap在线生成,在线生成网站地图(sitemap)的方式其实就两种: 一是、网站后台有sitemap网站地图生成功能; 二是、三方工具从一个入口地址,实现全站地址抓取分析。 如果是网站…

在线地图制作网站

网站地图Sitemap的好处是很多的,对SEO而言,网站地图起到的作用是快速提交链接,加速收录。当网站的层级关系很深的时候,没有网站地图,完全靠搜索引擎比如百度自己去抓取链接,速度是很慢的。所以需要主动让百…

百度、熊掌号、移动专区网站主动推送,网页实时监控解决方案

在网站制作完成之后,很多站长都会使用百度站长工具进行网站内容的自动推送,该功能对网站优化,快照更新以及文章收录都有非常好的提升效果,同时通过实现最新熊账号文章的主动推送也能实现原创文章的保护,那么如何实现百…

网页内容监控 - 怎么才能做到网站内容实时推送百度?

运用业界领先的爬虫技术,判断页面内容是否有新内容产出,并过滤非站内内容,然后将内容链接推送至百度各个数据推送接口(如熊掌号、移动专区等)。 网页内容监控是什么? 网页内容监控是指对网站的指定页面进行定时扫描&…

java https 导入证书_如何把Https网站中的安全证书导入到java中的cacerts证书库

展开全部在项目开发中,有时会遇到62616964757a686964616fe4b893e5b19e31333337613832SSL证书导入,把SSL证书导入java中的cacerts证书库其实很简单,方法如下:第一步:找到安装了SSL证书的网站,点击HTTPS加密协议下载SSL证…

java linux u盘_创建启动U盘或移动硬盘 - 基于Fedora 14搭建高效稳定的Java开发环境_Linux教程_Linux公社-Linux系统门户网站...

创建启动U盘或移动硬盘在这里我们选择Fedora 14 x64为例,其它版本安装过程大同小异。因光驱逐渐淘汰,这里我们选择以U盘或移动硬盘作为安装方式(如果选择光驱方式安装,可以跳过此节,直接将下载的文件刻盘后进入本系列的第三节)&am…

安卓ios混合开发技术_app分析有多少种?app开发技术分析的4种方法 | 免费SEO诊断咨询...

app开发多少钱?开发一个app需要哪些流程?现在市场上的app开发方式,可以分为4种:原生app开发、Web app开发、混合app开发以及免编程app开发。不同app方式的开发流程,开发出来的app功能开发周期及成本不同,大…

discuz修改用户uid_[建站教程]Discuz数据库迁移的详细步骤

在网站发展到一定的阶段后,原先的数据库可能已经跟不上容量和速度的要求。这时,我们就要把数据库切换到其他的高性能库上了。那么如何实现网站数据的迁移呢?大概分为三步:(1)把原数据库中的数据倒出来。&am…

百度排名批量查询_企业网站核心关键词排名消失,什么原因?

自从建立了SEO你问问答的圈子,在很长时间里,我们接触到最多的问题就是为什么我的品牌词排名丢失,我的品牌词怎么搜索不到等相关问题。长沙网站设计|长沙网站制作|长沙app开发公司|长沙做网站|长沙公众号开发公司|长沙网页设计公司|享趣网络​…

兄弟连java网站_IT兄弟连 Java Web教程 URI、URL

原标题:IT兄弟连 Java Web教程 URI、URLURI介绍URI(Uniform Resource Identifier),是统一资源标识符的缩写,是一个用于标识某一个Web资源名称的字符串,该标识允许用户对任何资源通过特定的协议进行交互。Web上可用的每种资源&…

计算机原理WR是什么,8086的引线-微计算机原理-电子发烧友网站

2.5 8086的引线本节概述概念1:有40个引脚,其中地址线有20根,16根分时复用的数据线,还有控制线,如图2-8所示。某些引脚上的信号,在不同时刻具有不同的意义。例如,AD15~AD0,在某些时候…

为什么我php总聘不上,我的phpweb建站经验:[7]招聘、反馈设置

下面我们看看招聘和反馈模块的设置,由于招聘和反馈模块都涉及到表单的设置,所以这一篇将同时做介绍,以免重复。点击招聘模块,我们可以看到左侧的导航栏目,点选职位发布,即可根据表单提交需要招聘的职位内容…

wordpress 最强免插件纯代码sitemap.xml网站地图制作

wordpress 建站我一直是拒绝插件的。 最近想弄个sitemap.xml网站地图文件,不用插件的方法网上有很多相关的代码,但其实好多并不好用。 有的可能是没有全站网站地图,而有的.xml后缀名需要伪静态设置,特别麻烦。 于是,空…

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时&…

html5用语义元素做旅游网站,HTML5: HTML5 语义元素

HTML5 语义元素语义 意义语义元素 有意义的元素什么是语义元素?一个语义元素能够清楚的描述其意义给浏览器和开发者。无语义 元素实例: 和 - 无需考虑内容.语义元素实例: , 浏览器支持Internet Explorer 9, Firefox, Chrome, Safari 和 Opera 支持语义元素。注意: Internet E…

超人气网站集合,快来pick你中意的吧!

网站相对于软件来说,它不用安装就能使用,而且是随时随的就可以打开。那么接下来,就为各位分享几个我觉得很“奶思”的网站,快来pick你中意的吧!http://www.atool88.com/域名查询、链接查询,所有关于互联网方…

怎么在安卓布局里设置滚动字体_八戒网络丨浅谈网站制作页面板块布局与技巧...

建设一个优质的网站,需要关注的地方有很多。想要制作出精致的网站,还应该多关注网站的版块分布,在布局上多下功夫,让访问者能够轻松舒适的浏览,那网站制作如何布局页面板块?有何技巧?对于响应式网站来说,…

mvc2新闻网站

0、 链接 链接:https://pan.baidu.com/s/1IMSkRgEneD7VjTmlvaS_8g 提取码:rqj4 1、实现效果 1)登录 2)删除 4)添加 5)查看 6)修改 3、思路 1)数据库 2)百度富文本编辑器…