npm 包 gatsby-plugin-lunr-search 使用教程

简介

在现代 Web 应用中,搜索是一种非常常见的功能。针对静态网站而言,按照往常的做法,需要通过手动构建一个搜索索引,依赖于一个现成的搜索解决方案。而 GatsbyJS 就是一个可以生成静态网站的前端框架,它提供了一些有趣的解决方案来构建和优化您的静态网站,比如使用 GatbyJS 的 gatsby-plugin-lunr-search 插件来构建搜索索引。

gatsby-plugin-lunr-search 是通过使用 Lunr.js 的内存搜索功能打造出一个完全在客户端上使用的网站搜索系统。它会通过只在构建时生成用于索引的 JSON 数据,而不是像其他网站搜索一样通过后端根据用户的请求进行搜索。这个插件可以在构建过程中生成搜索索引,然后将索引 JSON 文件(通常命名为 search_index.json) 连同静态文件一起托管到网站服务器上,并在客户端访问时直接搜索 JSON 文件完成。也就是说,不再需要服务器端进行搜索,不会因为搜索请求过于频繁而导致服务器的负载增大,同时也更加省去了后端服务器的维护和扩展。

安装

使用 npmyarn 安装:

--- ------- ------ -------------------------
- --
---- --- -------------------------

插件设置

gatsby-config.js 文件中添加以下配置:

-------------- - -
    -------- -
        -- --- ----- --------
        -
            -------- ----------------------------
            -------- -
                -- --------- ------
                ------- --------- --------

                -- -------- ------
                ---------- -
                    --------------- -
                        ------ ------ -- -----------------------
                        ----- ------ -- ---------------------
                        ----- ------ -- -----------------
                    --
                --
                --------- -------------------- -- ------ ---- ----- -------- -- --------------------
            --
        --
    --
--

上述示例中,我们将 gatsby-plugin-lunr-search 添加到了我们的项目中。我们还在 options 对象下指定了必须索引的字段,和可选的索引字段。还可以通过 resolvers 指定如何从每个节点中提取标题、内容的字段值等,以及索引 JSON 文件的名称,最终搜索输出结果在 json 中。

使用

安装和配置好插件后,我们现在就可以开始使用它来构建搜索索引,并在我们的 GatsbyJS 网站上启用完整的搜索体验:

------ ----- ---- --------
------ - ----- ------- - ---- ---------
------ - ----- - ---- -------
------ ------ ---- -----------------------

----- ---------- ------- --------------- -
    ------------------ -
        -------------
        ---------- - -
            ------ ---
            -------- ---
        --
    -

    ------------------- -
        ----- -------------- - ---------------------------------------------- ---- -- -- -
            ------ -
                --- --------
                ------ -----------------------
                ----- ---------------------
                ----- -----------------
            --
        ---
        ---------- - --------------------------------------------------
        --------------- -------------- ---
    -

    -------- -
        ------ -
            --------
                ---------- ------------
                ------ ----------- ------------------------ ---------------------- --
                ----
                    ------------------------------ -- -
                        ------ -
                            --- --------------
                                ----- ----------------------------------
                            -----
                        --
                    ---
                -----
            ---------
        --
    -

    ------ - ------- -- -
        ----- ----- - -------------------
        ----- ------- - ------------------------------- --- -- -- -
            ------ ------------------------------------ -- ------ --- -----
        ---
        --------------- ------ ------- ---
    --
-

------ ------- -----------

------ ----- --------- - --------
    ----- ---------------- -
        ---- -
            ------------ -
                -----
            -
        -
        --------------- -
            -----
        -
        ----------------- -
            ----- -
                ---- -
                    --
                    ------ -
                        ----
                    -
                    ----------- -
                        -----
                    -
                    ---------------
                -
            -
        -
    -
--

在上面的代码中,我们在页面的 componentDidMount() 生命周期函数内将从 GraphQL 查询中获取的 Markdown 中的节点转化为可搜索的 JSON 格式,然后通过 Index.load() 函数将其加载到 Lunr 索引中。在调用 search() 方法时,Lunr 将返回匹配查询的文档。在我们的搜索页面上,我们使用这些搜索结果(文档)来构建一个简单的无序列表。

结论

gatsby-plugin-lunr-search 插件提供了一个简单但高效的方法来添加一流的搜索体验到您的 GatsbyJS 网站中。使用它能够使您节省服务器资源并显著提高搜索性能,同时也能够节省您的维护时间,使您的网站更加智能。大家可以在自己的项目上实施它,并在他们的用户中获得一流的搜索体验。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60065f81238a385564ab6b6b


猜你喜欢

  • npm 包 @ermakovich/gulp-cucumber 使用教程

    前言 在现代 Web 应用开发过程中,前端自动化构建和测试已经成为开发流程不可或缺的一部分。在自动化构建和测试的过程中,使用 Gulp 构建任务和 Cucumber.js 进行测试已经成为了许多前端开...

    3 年前
  • npm 包 @mladen/leaflet.tilelayer.wmts 使用教程

    前言 在网站或移动端等前端应用中,使用 Leaflet 地图库可以很方便地实现瓦片地图的加载,但是在使用中国地图服务时,我们需要使用 WMTS(Web Map Tile Service)协议下的服务提...

    3 年前
  • npm 包 initialify 使用教程

    什么是 initialify? initialify 是一款 npm 包,它可以帮助我们快速地创建项目的初始目录结构,省去自己手动创建的时间和工作量。 如何使用 initialify? 安装 init...

    3 年前
  • npm 包 ip-locale 使用教程

    简介 ip-locale 是一个用于获取用户 IP 地址的 npm 库, 由于 IP 地址和用户所在地区的关系密切,因此 ip-locale 还可以获取用户所在地区的语言、货币、时区等信息。

    3 年前
  • npm 包 mhf-cordova-demo 使用教程

    介绍 mhf-cordova-demo 是一个基于 Cordova 框架的移动端示例应用。它包含了常见的功能模块,如登录、注册、个人中心、图片上传等,可以帮助开发者快速入门和理解 Cordova 框架...

    3 年前
  • npm 包 viewport-units-buggyfill3 使用教程

    在前端开发中,经常会遇到使用 viewport units 时的兼容性问题。为此,我们可以使用 npm 包 viewport-units-buggyfill3 来解决这个问题。

    3 年前
  • npm 包 prop-scopes 使用教程

    前言 在前端开发中,组件化开发已经成为了一个普遍的趋势,而 props 作为组件间传递数据的重要方式,也越来越受到关注。 但是,在复杂的业务场景中,props 的数据往往会包含多层嵌套关系,这对组件的...

    3 年前
  • npm 包 vue-isortable 使用教程

    前言 Vue.js 是一款适合构建交互式前端界面的开源 JavaScript 框架,而 npm 则是 JavaScript 的包管理工具,通过 npm 我们可以快速下载各种 JavaScript 库和...

    3 年前
  • npm 包 rpscript-api-google-maps 使用教程

    在前端开发过程中,使用谷歌地图 API 是非常常见的需求。虽然 Google Maps Platform 提供了相对完善的文档和示例,但是对于一些较为复杂的应用场景,我们还是需要使用一些第三方库来简化...

    3 年前
  • npm 包 ncent-sdk 使用教程

    在前端开发中,npm 包是非常常见的一种工具。而在众多的 npm 包中,ncent-sdk 是一款非常有用的工具,可以帮助开发者快速集成一个加密的积分系统。本篇文章将详细介绍 ncent-sdk 的使...

    3 年前
  • npm 包 cordova-plugin-win-serialport 使用教程

    介绍 cordova-plugin-win-serialport 是一个基于 Apache Cordova 的插件,提供了使用串口进行数据通信的 API,可以在 Windows 平台上使用。

    3 年前
  • npm 包 cordova-icreate-amap-location 使用教程

    简介 cordova-icreate-amap-location 是一款使用高德地图实现定位的 Cordova 插件。可以在 Cordova 的 Hybrid App 中调用高德地图进行定位,返回定位...

    3 年前
  • npm 包 gulu-test-1-1 使用教程

    在前端开发中,我们经常需要使用一些工具和库来提升我们的开发效率。npm 是一个非常流行的 Node.js 的包管理器,可以方便我们安装、更新、卸载以及管理 Node.js 模块。

    3 年前
  • npm 包 @tulevaag/generator-web-app 使用教程

    如果你是一名前端开发者,你一定会用到很多工具来提高你的代码质量和开发效率。其中一个重要的工具就是 npm 包,可以让你快速搭建开发环境,集成常用的工具和库。在这篇文章中,我们将介绍一个非常有用的 np...

    3 年前
  • npm 包 grunt-slack-hook-tunable 使用教程

    前言 在前端开发中,自动化构建是非常必要的一个工具。而 Grunt 是一个非常流行的自动化构建工具。但是,许多团队在构建项目时需要在不同的项目和环境中使用不同的钩子和配置,这就需要一个可以根据项目和环...

    3 年前
  • npm 包 test-constructs 使用教程

    简介 test-constructs 是一个基于 Node.js 平台的测试库,它提供了针对 JavaScript 测试的基础结构。该库可以被用于单元测试或集成测试等方面。

    3 年前
  • npm 包 @thedrupalkid/ng-drupal 使用教程

    前言 随着 Drupal 的使用范围不断扩大,越来越多的人开始在前端开发中使用这个优秀的 CMS 系统。而在 Angular 中集成 Drupal API 是必不可少的一步。

    3 年前
  • npm 包 ng-drupal8 使用教程

    前言 Drupal 是一款优秀的开源 CMS 系统,它具有灵活、可扩展性强等特点,在全球很多大型网站中都得到了广泛的应用。同时,Angular 是一款流行的前端框架,它能够快速搭建丰富的、高效的单页应...

    3 年前
  • npm 包 redux-ga-screen-tracker 使用教程

    在前端开发中,我们经常需要通过 Google Analytics(简称 GA)来追踪网站的数据。而对于使用 React 和 Redux 构建的应用程序,我们可以通过使用 npm 包 redux-ga-...

    3 年前
  • npm 包 mask-container 使用教程

    在前端开发中,有时需要给页面某个区域加上一个蒙版,以达到遮挡、提示或强调的效果。此时可以使用 npm 包 mask-container 来实现。 什么是 mask-container? mask-co...

    3 年前

相关推荐

    暂无文章