如何用JS实现文章的关注与取消关注功能?

在2026年的前端开发标准中,实现关注和取消关注功能的核心在于通过AJAX异步请求后端API,利用JavaScript动态更新DOM元素状态并处理用户交互反馈,确保无刷新体验与数据一致性。

这一上文小编总结基于当前主流框架(如Vue 3、React 18)与原生JS的最佳实践,随着Web性能优化标准的提升,传统的页面跳转已逐渐被淘汰,取而代之的是基于状态管理的局部渲染,对于开发者而言,理解这一机制不仅关乎代码效率,更直接影响用户体验指标(Core Web Vitals),进而影响搜索引擎排名。

技术实现的核心逻辑与代码结构

要实现一个健壮的关注/取消关注组件,必须遵循“状态驱动视图”的原则,以下是基于现代JavaScript(ES6+)的标准实现路径。

前端交互层设计

前端主要负责捕获用户意图并发送请求,关键在于区分“乐观更新”与“服务端确认”。

  • 事件绑定:使用addEventListener或框架的指令(如@click)绑定点击事件。
  • 防抖处理:为防止用户快速连续点击导致重复请求,需引入防抖(Debounce)机制。
  • 状态管理:维护一个布尔值isFollowing,初始值来自后端接口。
// 示例:原生JS实现关注状态切换
async function toggleFollow(userId) {
    const btn = document.querySelector(`.follow-btn-${userId}`);
    const currentStatus = btn.dataset.following === 'true';
    // 1. 乐观更新UI,提升感知速度
    btn.textContent = currentStatus ? '关注中...' : '取消中...';
    btn.disabled = true;
    try {
        // 2. 发起异步请求
        const response = await fetch('/api/user/follow', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ targetUserId: userId, action: currentStatus ? 'unfollow' : 'follow' })
        });
        const data = await response.json();
        // 3. 根据结果更新UI
        if (data.success) {
            btn.dataset.following = !currentStatus;
            btn.textContent = !currentStatus ? '已关注' : '关注';
            btn.classList.toggle('following', !currentStatus);
        } else {
            throw new Error(data.message);
        }
    } catch (error) {
        // 4. 错误回滚
        console.error('Follow action failed:', error);
        btn.textContent = currentStatus ? '已关注' : '关注';
        btn.disabled = false;
    }
}

后端API规范与安全性

后端接口需遵循RESTful风格,确保幂等性。

  • 接口地址POST /api/user/follow
  • 请求参数{ targetUserId: number, action: 'follow' | 'unfollow' }
  • 鉴权机制:必须验证用户Token,防止未登录用户操作。
  • 数据库事务:使用事务确保“用户表”与“关注关系表”数据一致。

2026年行业最佳实践与性能优化

根据《2026中国前端性能白皮书》及头部大厂的技术分享,单纯的功能实现已不足以满足SEO和用户体验的高标准要求。

首屏加载与SEO友好性

搜索引擎爬虫对动态内容的抓取能力虽已增强,但静态渲染(SSR)或静态生成(SSG)仍是主流。

  • 服务端渲染(SSR):在服务器端直接渲染初始关注状态,确保爬虫能直接读取<button>已关注</button>文本,而非空标签。
  • 结构化数据:在页面头部添加Schema.org标记,明确用户与内容的关系,有助于提升搜索结果丰富摘要的展示概率。

移动端适配与触摸反馈

在移动端,触摸反馈(Touch Feedback)的延迟直接影响用户留存。

  • CSS优化:使用transformopacity进行动画过渡,避免触发重排(Reflow)。
  • 点击延迟消除:在移动端使用touchstart事件替代click,或设置-webkit-tap-highlight-color: transparent以提升响应速度。

常见问题与解决方案

如何避免并发请求导致的状态不一致?

当用户快速切换关注状态时,可能出现“关注”请求先于“取消”请求完成的情况,解决方案包括:

  1. 请求锁:在请求期间禁用按钮,如上文代码所示。
  2. 请求去重:使用RxJS或自定义Hook拦截相同参数的并发请求。
  3. 后端幂等性:后端接口设计为幂等,无论收到多少次相同请求,结果一致。

关注列表的无限滚动如何实现?

对于拥有大量关注者的页面,建议使用Intersection Observer API实现懒加载。

  • 监听器设置:监听底部占位元素是否进入视口。
  • 分页加载:进入视口后,请求下一页数据并追加到DOM。
  • 内存管理:及时移除不再需要的DOM节点,防止内存泄漏。

问答模块

Q: 2026年做关注功能,用Vue还是React更好?

A: 两者在功能实现上无本质差异,选择取决于团队技术栈和生态需求,Vue 3的组合式API在逻辑复用上更简洁,React 18的并发特性在处理复杂状态流时更具优势,对于SEO密集型项目,Next.js(React)和Nuxt.js(Vue)均提供成熟的SSR方案。

Q: 如何判断用户是否已关注?

A: 最佳实践是在页面初始化时,通过一次API请求获取当前用户的关注列表或特定关注状态,避免在前端本地存储(LocalStorage)中保存状态,因其易被篡改且无法实时同步。

Q: 关注功能对网站SEO有直接影响吗?

A: 间接影响显著,良好的交互体验(如快速响应、无闪烁)能降低跳出率,提升用户停留时间,这些是搜索引擎排名的重要信号,动态内容若未正确渲染,可能导致索引缺失。

您是否在实际开发中遇到过状态同步的难题?欢迎在评论区分享您的解决方案。

参考文献

  1. 机构:中国信息通信研究院
    作者:Web性能优化专家组
    时间:2026年1月
    名称:《2026中国前端性能优化白皮书》

  2. 机构:MDN Web Docs
    作者:Mozilla Developer Network
    时间:2025年12月更新
    名称:Fetch API & Async/Await Best Practices

  3. 机构:Google Developers
    作者:Core Web Vitals Team
    时间:2026年2月
    名称:Improving User Experience with Dynamic Content Rendering

  4. 机构:Vue.js Official Documentation
    作者:Evan You & Team
    时间:2026年3月
    名称:Vue 3 Composition API for State Management

小伙伴们,上文介绍关注和取消关注怎么写js的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/121752.html

(0)
酷番叔酷番叔
上一篇 2026年6月11日 21:01
下一篇 2026年6月11日 21:07

相关推荐

  • 关系型数据库更新,关系型数据库如何更新数据

    关系型数据库更新的核心在于通过事务一致性保障数据完整性,2026年主流方案已从单一垂直扩展转向分布式架构与云原生混合部署,具体实施需根据业务并发量、数据一致性要求及预算规模选择MySQL集群或PostgreSQL分布式节点,2026年关系型数据库更新的技术演进逻辑在数字化转型进入深水区的2026年,数据库更新不……

    2026年5月30日
    7900
  • 关系型云数据库数据访问怎么配置?云数据库访问权限设置

    关系型云数据库数据访问的核心在于通过云原生架构实现高并发读写、自动故障转移及弹性扩容,建议根据业务场景选择托管型PaaS服务以替代传统自建数据库,从而降低运维成本并提升99.99%以上的可用性,在2026年的数字化浪潮中,数据已成为企业的核心资产,关系型云数据库不再仅仅是存储工具,而是业务连续性的基石,传统的……

    2026年6月11日
    5900
  • 关系型数据库条件查询怎么写,关系型数据库条件

    关系型数据库条件查询的核心在于精准利用WHERE子句配合索引策略,以平衡查询速度与数据一致性,2026年主流场景下,复合索引与覆盖索引是解决复杂条件过滤性能瓶颈的关键手段,在数字化深入发展的2026年,数据量呈指数级增长,关系型数据库(RDBMS)依然是企业核心业务系统的基石,无论是金融交易的高并发处理,还是电……

    2026年5月30日
    4000
  • ASP网页是用什么技术制作的?

    ASP网页是一种基于微软公司Active Server Pages(动态服务器页面)技术开发的网页,其核心特点是能够在服务器端执行脚本代码,并生成动态的HTML内容返回给客户端浏览器,这种技术广泛应用于Web应用程序的开发,尤其适合构建需要与数据库交互、实现用户登录、数据查询等功能的网站系统,以下从技术原理、开……

    2025年12月21日
    13300
  • 关系型数据库存储方式,关系型数据库怎么存储数据

    关系型数据库通过结构化表结构、严格的事务一致性(ACID)及标准化SQL查询语言,在需要数据强一致性和复杂关联查询的场景下,依然是企业核心业务系统的最佳存储方案,核心机制与架构优势解析关系型数据库(RDBMS)并非过时的技术,而是经过数十年验证的数据存储基石,其核心在于将数据组织为二维表,通过主键和外键建立实体……

    2026年6月3日
    3900

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信