还在为跨框架的微信表情包烦恼?我写了个通用的,拿去吧!🚀

嘿,各位在代码世界里摸爬滚打的兄弟姐妹们,大家好!👋

这个周末,我没有选择"躺平",而是潜心打磨了一个小工具,今天就来跟大家分享一下这个热乎乎的周末结晶!

不知道你们有没有遇到过这样一个场景:产品经理笑眯眯地走过来说,"我们来做一个聊天功能吧,要能像微信那样发表情哦!😉" 你心想这不简单?然后一头扎进 npm 的海洋里,结果发现事情并不简单。尤其当你的技术栈里既有 React 又有 Vue 的时候,那种抓狂的感觉,谁懂啊!😫

今天,我就想跟大家聊聊我在这个"小黄脸"表情上踩过的坑,以及我是如何亲手终结这个烦恼的。

不堪回首:我们曾经用过的 react-wechat-emoji 📜

在很久很久以前,当我的项目还是纯纯的 React 16 时,我发现了一个叫 react-wechat-emoji 的库。在当时,它就像一道光,轻松解决了文本里 [微笑] 这类代码转换成表情图标的问题。

但好景不长,随着技术迭代,它的问题也越来越致命:

  1. 框架"焊死"了 🔗:它的名字就说明了一切,react-wechat-emoji,只能在 React 里用。如果我手头另一个项目是 Vue 的,对不起,您得另请高明。这导致不同项目里的表情方案五花八门,维护起来那叫一个心累。
  2. 版本"石化"了 🗿:这是最要命的。它死死地依赖着 React 16。现在都什么年代了?React 18 都满地跑了,大家都在愉快地用着 Hooks。想在现代项目里用它?不是报这个错就是报那个错,基本上就是告诉你:"小伙子,你太年轻了,我带不动。"

就这样,一个原本挺好用的工具,慢慢变成了历史的尘埃。

是时候跟"旧时代"说再见了 👋

所以,问题很明显了。我们需要的根本不是一个只能在特定框架、特定版本下工作的"瘸腿"工具。我们需要的是一个能跟上前端发展步伐,能无缝穿梭于不同框架之间 ,体验顺滑的"全能型选手"。

在 npm 里搜寻无果后,我萌生了一个朴素的想法:既然没有好用的轮子,那我就自己造一个! 😤

闪亮登场:wechat-emoji-renderer,为现代前端而生 ✨

于是,wechat-emoji-renderer 诞生了!它是我倾注了无数心血(和头发)打造的全新解决方案,目的只有一个:让你在任何主流前端框架中,都能优雅地处理微信表情。😎

它有啥不一样?

  • 一个顶仨 👑:原生 JS、React、Vue 3通吃,代码和体验高度统一。
  • 与时俱进 ⚙️:完全使用 TypeScript 构建,提供完善的类型定义,让你的代码智能提示拉满,健壮性 up up!
  • 简单到没朋友 👌:无论是渲染带表情的文本,还是弹出一个表情选择器,都给你封装成了即插即用的组件。
  • 高度灵活 🎨:支持自定义表情大小、雪碧图等,满足你的一切定制化需求。

口说无凭,上代码!👇

在 React 里用是这样:

tsx 复制代码
import { WechatEmojiRenderer, EmojiPicker } from 'wechat-emoji-renderer/react';
import 'wechat-emoji-renderer/dist/vue/style.css'; // 别忘了样式

function App() {
  const [text, setText] = useState('你好[微笑],今天天气不错[太阳]');

  return (
    <div>
      <WechatEmojiRenderer text={text} />
      <EmojiPicker onSelectEmoji={(emoji) => setText(prev => prev + emoji.code)} />
    </div>
  );
}

在 Vue 3 里用是这样:

ts 复制代码
<template>
  <div>
    <WechatEmojiRenderer :text="text" />
    <EmojiPicker @emoji-click="onClickEmoji" />
  </div>
</template>

<script setup>
import { ref } from 'vue';
import { WechatEmojiRenderer, EmojiPicker } from 'wechat-emoji-renderer/vue';
import 'wechat-emoji-renderer/dist/vue/style.css'; // 同样需要样式

const text = ref('你好[微笑],今天天气不错[太阳]');
const onClickEmoji = (emoji) => {
  text.value += emoji.code;
};
</script>

是不是感觉就像呼吸一样自然?

我们最终想要的是什么?🤔

从最初被老旧的库折磨,到下定决心自己动手,我深刻地体会到:一个好的开源工具,不应该成为开发者的束缚,而应该是解放生产力的翅膀。🕊️

wechat-emoji-renderer 就是基于这个理念诞生的。它希望能帮你抹平不同框架带来的差异,让你能更专注于业务逻辑本身,而不是在这些琐碎的基础建设上反复横跳。

如果你也曾为微信表情的问题而烦恼,那么,请务必试试它!

把它带走吧:👇

欢迎大家试用、提 Issue、甩 PR!让我们一起让前端开发变得更简单、更纯粹一点。Peace & Love! ❤️

相关推荐
LaoZhangAI1 分钟前
Sora Image API完全指南2025,平替gpt-image-1 API
前端·后端
vivo互联网技术7 分钟前
BI 数据可视化平台建设(3)—首页性能提升实践
前端·性能优化·性能调优·bi可视化·首屏加载
GISer_Jing10 分钟前
浏览器自动化领域的MCP
运维·前端·自动化
草履虫建模10 分钟前
若依框架下前后端分离项目交互流程详解
java·前端·javascript·spring boot·spring cloud·intellij-idea·交互
cccyi711 分钟前
vue-v-model进阶-ref-nextTick
前端·javascript·vue.js
今天出摊吗12 分钟前
项目中预构建和配置文件中优化的区别
前端
前端拿破轮13 分钟前
重生之我在掘金做毕设【一】:技术选型
前端·github·前端工程化
鹏程十八少16 分钟前
2. Android 组件化二Arounter 注解处理器:APT 自动生成路由表 vs 手写实现
前端
咚咚咚ddd17 分钟前
移动端适配方案 : PostCSS px to viewport
前端·javascript·前端工程化
工业互联网专业17 分钟前
基于springboot+vue的酒店管理系统设计与实现
java·vue.js·spring boot·毕业设计·源码·课程设计·酒店管理系统