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

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

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

不知道你们有没有遇到过这样一个场景:产品经理笑眯眯地走过来说,"我们来做一个聊天功能吧,要能像微信那样发表情哦!😉" 你心想这不简单?然后一头扎进 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! ❤️

相关推荐
徐子颐11 分钟前
从 Vibe Coding 到 Agent Coding:Cursor 2.0 开启下一代 AI 开发范式
前端
小月鸭23 分钟前
如何理解HTML语义化
前端·html
jump6801 小时前
url输入到网页展示会发生什么?
前端
诸葛韩信1 小时前
我们需要了解的Web Workers
前端
brzhang1 小时前
我觉得可以试试 TOON —— 一个为 LLM 而生的极致压缩数据格式
前端·后端·架构
yivifu1 小时前
JavaScript Selection API详解
java·前端·javascript
这儿有一堆花1 小时前
告别 Class 组件:拥抱 React Hooks 带来的函数式新范式
前端·javascript·react.js
十二春秋1 小时前
场景模拟:基础路由配置
前端
六月的可乐2 小时前
实战干货-Vue实现AI聊天助手全流程解析
前端·vue.js·ai编程
一 乐2 小时前
智慧党建|党务学习|基于SprinBoot+vue的智慧党建学习平台(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·学习