如何用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

相关推荐

  • 怎么用命令提示符关机操作

    基础关机命令打开命令提示符按下 Win + R 键,输入 cmd 后按回车,或以管理员身份运行:搜索“命令提示符” > 右键选择“以管理员身份运行”(需权限时使用),执行关机命令输入以下命令并回车:shutdown /s系统将在 1分钟后 自动关闭,屏幕显示警告提示,预留时间保存工作,进阶参数与场景应用根……

    2025年6月18日
    20800
  • ASP网站管理系统源码哪里找?

    ASP网站管理系统源码的技术架构与核心功能在当今数字化时代,网站管理系统已成为企业、组织和个人展示信息、管理内容的重要工具,ASP(Active Server Pages)作为一种经典的服务器端脚本技术,因其简单易用、兼容性强等特点,被广泛应用于中小型网站管理系统的开发中,本文将围绕ASP网站管理系统源码的技术……

    2025年12月18日
    9600
  • 国内最早的域名注册机构究竟是谁?中国互联网络信息中心

    国内最早的域名注册始于1990年11月28日,由中国科学院计算机网络信息中心(CNIC)完成了中国第一个顶级域名“.CN”的注册,标志着中国互联网基础设施建设的正式起步,这一历史节点不仅确立了国家网络身份标识的雏形,更为后续二十余年的互联网商业化浪潮奠定了基石,理解这段历史,对于当前企业构建品牌护城河、理解域名……

    2026年5月20日
    3100
  • 国内数据连接解决方案开发面临哪些挑战与机遇?数据连接解决方案

    国内数据连接解决方案的核心在于构建基于隐私计算与API网关的混合架构,通过标准化接口实现跨域数据的安全流通,2026年行业共识已明确“可用不可见”为合规底线,企业应优先选择符合《数据安全法》要求的本地化部署或混合云方案,市场现状与合规挑战:2026年的新范式随着《数据安全法》与《个人信息保护法》的深入实施,20……

    2026年5月25日
    2200
  • 国内智能客服系统好用吗?智能客服系统排名

    2026年国内智能客服系统记录显示,基于大语言模型(LLM)的新一代系统已实现90%以上的通用场景自动化解决率,其核心价值从“被动应答”转向“主动营销与全链路情感计算”,头部企业通过私有化部署与行业垂直模型微调,显著降低了幻觉率并提升了数据合规性,智能客服系统的技术演进与2026年现状从规则匹配到认知智能的跨越……

    2026年5月19日
    1900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信