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 包 fp-recursion 使用教程

    简介 在函数式编程中,递归经常被用来处理非常常见的问题,例如树形结构的遍历和处理。但是,使用 JavaScript 内置的递归函数通常会导致栈溢出错误。因此,需要一种方法来避免这个问题。

    3 年前
  • npm 包 if-win-backslash 使用教程

    在前端开发过程中,我们经常会面临跨平台文件路径的问题。Windows 下使用的反斜杠(\)在 Unix 系统上是不被识别的,而 Unix 系统下使用的正斜杠(/)在 Windows 系统上也只有在特定...

    3 年前
  • npm 包 nikud.js 使用教程

    介绍 nikud.js 是一个用于处理带有音标的希伯来语文本的 npm 包。它可以将希伯来语文本中的音标转换为 Unicode 范畴 P 字母表中的字符。此外,nikud.js 还提供了一组工具函数,...

    3 年前
  • npm 包 pandoc-index 使用教程

    前言 在进行前端开发过程中,我们经常需要对我们的文档进行管理和编写,这就需要我们使用到一些常用的文档工具。而 pandoc-index 就是一款非常实用的 npm 包,它可以帮助我们管理和编写文档,并...

    3 年前
  • npm 包 parse-server-fs-store-adapter 使用教程

    介绍 在构建 web 应用程序时,经常需要将文件上传到服务器。parse-server-fs-store-adapter 是一种可用于存储和检索 parse-server 文件的 npm 包。

    3 年前
  • NPM 包 react-swipy 使用教程

    前言 react-swipy 是一个基于 React 的轻量级拖拽交互组件库,提供了拖拽、滑动等手势的支持。如果您正在开发一个需要拖拽或滑动功能的 React 应用程序,那么 react-swipy ...

    3 年前
  • npm 包 babel-plugin-all-curried 使用教程

    前言 在前端开发过程中,我们常常需要用到函数式编程。然而,常规的 JavaScript 函数并不能够直接支持函数柯里化,这就导致我们需要手动写一些辅助函数来实现柯里化。

    3 年前
  • npm 包 react-site-menu 使用教程

    React-site-menu 是一个专门设计用于前端开发的 npm 包。它可以让您在 React 应用程序中轻松实现导航菜单,这是一个常见且必备的功能。本文将详细介绍 react-site-menu...

    3 年前
  • npm 包 censorify0.1.1 使用教程

    前言 在前端开发中,我们经常需要对用户输入的文章或评论进行过滤,以屏蔽敏感词或不良信息。censorify0.1.1 这个 npm 包可以方便地实现这个功能,本文将详细介绍如何使用这个技术包。

    3 年前
  • npm 包 watch-gh-repos 使用教程

    在前端开发中,我们经常需要关注 GitHub 上的项目,以便及时获取最新的更新并快速作出反应。然而,手动去检查项目更新比较繁琐,而且容易漏掉某些变化。这时候,一个自动化的工具 watch-gh-rep...

    3 年前
  • npm 包 @huston007/react-native-image-picker 使用教程

    前言 在如今的移动端开发中,图片上传功能是一个常见的需求,尤其在需要用户上传头像、图像内容展示等业务中。而在 React Native 中,我们可以使用 @huston007/react-native...

    3 年前
  • npm 包 ngx-forge-jyas 使用教程

    在前端开发中,我们经常需要使用各种第三方工具和库来提高开发效率和代码质量。其中,npm 是一个非常流行的包管理器,可以帮助我们快速安装和管理各种项目依赖。ngx-forge-jyas 是一个基于 An...

    3 年前
  • npm 包 react-native-tpush 使用教程

    如果你正在开发无线应用,可能需要使用推送通知服务。而 TPush 是移动推送 SDK 中的一种,它提供了 Android 和 iOS 平台的推送服务。React Native 是一种流行的 JavaS...

    3 年前
  • bragg-sqs:一个高效的 Node.js SQS 处理库

    作为前端开发工程师,我们经常需要使用第三方库来实现复杂的功能。如何找到一个高效的库并学会使用它,是前端开发的重要一环。本文将为大家介绍一个高效的 Node.js SQS 处理库:bragg-sqs,并...

    3 年前
  • npm 包 jmazm-koa-static-cache 使用教程

    前言 在前端开发中,我们经常会需要使用到静态资源。静态资源包括但不限于 HTML、CSS、JavaScript、图片、视频等等。如果静态资源很大,每次请求都去读取磁盘或者 CDN 带来的 I/O 消耗...

    3 年前
  • npm 包 chartist-logscale 使用教程

    简介 Chartist-logscale 是一个能够在 Chart.js 中使用对数刻度的 npm 包。对数刻度在处理大量数据时非常有用,它能够将非线性数据转换为线性数据,从而更好地展示数据趋势。

    3 年前
  • npm 包 sky-pull 的使用教程

    什么是 sky-pull? sky-pull 是一个基于 React 开发的下拉刷新组件,可以在移动端应用中轻松实现下拉刷新功能,提高用户体验。同时,sky-pull 也提供丰富的自定义配置属性,方便...

    3 年前
  • npm 包 alfresco-uploader 使用教程

    简介 Alfresco 是一款企业级的内容管理系统(ECM),用于管理企业的所有文档、记录以及其他内容。alfresco-uploader 是 Alfresco 提供的 npm 包,用于将文件上传到 ...

    3 年前
  • npm 包 arraybuffer-utils 使用教程

    前言 随着 Web 技术的发展,前端开发变得越来越重要。作为一名前端开发者,你可能经常要处理二进制数据,在对二进制数据的处理过程中,你可能会遇到一些不方便,难以操作的问题。

    3 年前
  • npm包 mail-function 使用教程

    在前端开发过程中,邮件是一个非常重要的通信方式,不仅可以用于发送验证码、重置密码等功能,还可以用于向用户推广优惠等。在这篇文章中,我们介绍一个非常实用的npm包 mail-function,它可以帮助...

    3 年前

相关推荐

    暂无文章