0

0

通过分页、排序和过滤功能优化电子商务导航

WBOY

WBOY

发布时间:2024-08-20 21:40:03

|

390人浏览过

|

来源于dev.to

转载

通过分页、排序和过滤功能优化电子商务导航

在我的网络笔记中查看这篇文章!

我们正在使我们的商店变得越来越人性化,今天我们将在我们的电子商务商店改进方面又迈出一步。在之前的文章中,我们已经添加了分页、排序和过滤器,但它们只是我们模板的一部分,没有任何功能,现在是时候修复它了,所以让我们开始为今天的工作构建一个简单的计划,并继续改进我们的商店nuxt.js.

只是想提醒一下,您可以在这里查看我们正在构建的演示,以及这里的源代码。

  1. 分页。将产品列表划分为可管理的页面。
  2. 通过用户友好的界面实现排序功能。
  3. 根据相关产品属性(例如类别)实施过滤器。

概述了需要改进的关键领域后,是时候卷起袖子深入研究实施细节了。我们的目标是通过向之前实现的分页、排序和过滤功能添加功能,将 nuxt.js 电子商务商店转变为用户友好的平台。让我们从处理分页功能开始,该功能会将我们的产品列表划分为可管理、可抓取的页面,以增强浏览体验。

1.分页。将产品列表划分为可管理的页面。

之前我们在商店页面添加了分页元素,我喜欢它的设计,所以我不会改变css样式,只改变分页功能。

什么是分页?分页是一种用于将大量内容(例如产品列表)划分为单独页面的技术。这有助于通过一次仅加载内容的子集来提高网站性能,使用户更轻松地浏览信息。

在我们的例子中,产品列表将是我们的“大内容”,所以让我们修改产品数组,但不要直接在商店状态中修改它,让我们在商店 getter 中渲染之前修改它。对于打开的产品商店和内部状态,添加将存储“currentpage”和“itemsperpage”值的分页对象,然后在 getter 内部创建新的 getter“gpaginateditem”,它将接受项目列表并逐部分返回该列表。该 getter 将计算页面的开始值和结束值,并在这些值之间“切片”项目列表:

gpaginateditems: (state) => (items) => {
    const start = (state.pagination.currentpage - 1) * state.pagination.itemsperpage;
    const end = start + state.pagination.itemsperpage;
    return items.slice(start, end);
},

下一步,我们需要创建仅修改“currentpage”值的操作,它们将用于更改页面。

asetpage(page) {
    this.pagination.currentpage = page;
},
anextpage() {
    if (this.pagination.currentpage < this.gtotalpages) {
        this.pagination.currentpage++;
    }
},
aprevpage() {
    if (this.pagination.currentpage > 1) {
        this.pagination.currentpage--;
    }
}

现在我们可以转到我们的商店页面,其中有一些更改:

  • 更新产品列表部分,我们需要添加 getter,它将使用产品列表作为参数并一次仅渲染一页;
  • 更新我们的分页部分,添加将更改页面的点击事件(箭头的上一页和下一页并将页面设置为每个数字),实现仅显示第一页、最后一页和当前页面的功能;
  • 1
  • ...
  • {{ page }}
  • ...
  • {{ productsstore.gtotalpages }}

是的,就是这样,现在我们只需要重新启动 nuxt 开发服务器,添加更多测试产品,并尝试分页行为。
通过分页、排序和过滤功能优化电子商务导航
我喜欢它的外观和工作原理,但我们没有时间玩,需要继续前进。

2. 通过用户友好的界面实现排序功能。

在我们的设计中,我们已经有一个包含所有排序选项的下拉菜单,因此我们只需要接收用户选择的选项并对我们所有的产品进​​行排序,但不要忘记它应该与我们的分页同时实现。

请打开产品存储并添加一个新变量“排序”,默认值为“流行度”。让我们使用我们将在操作中对产品进行排序的变体,在这种情况下,我们需要创建一个新的排序操作并添加一个条件语句,该条件语句将根据排序值修改我们的产品列表。

asetsort(sort) {
    this.sort = sort;
    if (sort === 'ltoh') {
        return this.productslist.sort((a, b) => a.price - b.price);
    } else if (sort === 'htol') {
        return this.productslist.sort((a, b) => b.price - a.price);
    }
},

另外,不要忘记添加一个将返回排序语句值的 getter。接下来,我们需要再次修改我们的商店页面,并简单地使用新值更新排序下拉列表:

多多校园交易网
多多校园交易网

v2.2 修改相关字眼,加强搜索功能,重写找回密码功能,减少文件,增加学院功能,补给相关页面,修改相关表单字段名,更新图片新闻显示功能,修正租房搜索,增加BLOG,BBS文件夹,并修改频道设置和导航布局,去除相关ID扫描漏洞·全站设计考虑校园电子商务模式,人性化的设计,独特的校园式网络交易平台。 ·功能十分强大的后台管理界面,通过IE浏览器即可管理整个网

下载

sort by

并将 setter-getter 添加到我们的排序值中:

sort: {
    get() {
        return this.productsstore.gsort;
    },
    set(value) {
        this.productsstore.asetsort(value);
        this.productsstore.asetpage(1);
    }
}

太好了,重启 nuxt 开发服务器并检查结果:

3. 根据相关产品属性(例如类别)实施过滤器。

这是我们今天的第三部分,也是最后一部分,我们将为不同的产品类别添加和配置过滤器。为此,打开产品商店并将“categoryfilter”变量添加到状态中,然后添加“asetcategoryfilter”操作,该操作将简单地更新我们的过滤器,并根据该过滤器值,我们将返回过滤后的产品列表。修改“gproductslist”getter,它将按类别键过滤所有项目,并仅返回具有某些特定类别的项目。

gproductslist: (state) => {
    let products = state.productslist;
    if (state.categoryfilter) {
        products = products.filter(el => el.category === state.categoryfilter);
    }
    if (state.categoryfilter === 'all') {
        products = state.productslist
    }
    return products;
},

您可以在该列表中添加任意数量的过滤器,并使用户可以选择他们正在寻找的产品。

此外,我们还需要修改商店模板中的过滤器本身:

  • {{ category }}

现在,只要用户按下某个过滤类别,我们的应用程序就会返回已过滤的产品列表。

在本文中,我们通过实现三个基本功能来优化 nuxt.js 商店的电子商务导航体验:分页、排序和过滤。我们首先添加分页功能,将产品列表划分为可管理的页面,以获得更好的性能和用户体验。接下来,我们实现了排序选项,允许客户根据受欢迎程度、价格从低到高、价格从高到低对产品进行排序,增强用户偏好。最后,我们结合了基于产品类别的过滤器,使客户能够快速缩小搜索结果范围。在整个实施过程中,我们保持了用户友好的界面,确保了无缝且直观的导航体验。通过优化这些关键功能,我们不仅提高了电子商务平台的整体可用性,还可能提高客户满意度、转化率和自然流量。

学习某些东西的最佳变体是自己制作它,同样的事情也适用于编码,但如果您需要本教程的源代码,您可以在这里获取。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 数组和切片
go语言 数组和切片

本专题整合了go语言数组和切片的区别与含义,阅读专题下面的文章了解更多详细内容。

46

2025.09.03

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

513

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5306

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

481

2023.09.01

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

218

2023.09.14

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

1

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

CSS教程
CSS教程

共754课时 | 24.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号