(企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音

1.官方网址:pinyin-pro | pinyin-pro

 

2.介绍​

pinyin-pro 是一个专业的 JavaScript 中文转拼音的库,具备多音字识别准确、体积轻量、性能优异、功能丰富等特点。

在同类产品中,pinyin-pro 无论是多音字识别准确率、体积、性能还是功能的支持度上,都做到了全网领先。以下是关于性能及准确率方面和同类竞品 pinyin@napi-rs/pinyin 的具体对比数据。

测试环境​

  • 设备:
    • 品牌及型号:联想小新 Pro 13 ARE 2020
    • 系统:Windows10
    • RAM:16 GB
    • CPU: AMD Ryzen 7 4800U 1.8GHz
  • 运行环境: Nodejs v18.12.1

对比结果​

对比项pinyin@napi-rs/pinyinpinyin-pro
准确率😕 Node 版: 97.844%😕 97.433%🤩 99.744%
😕 Web 版: 94.507%
性能5k字转换耗时🐢 749.111ms🚲 200.877ms🚀 5.958ms
1w字转换耗时🐢 795.904s🚲 206.5ms🚀 15.260ms
100w字转换耗时⛔ 内存溢出转换失败🚀 638.888ms🚀 607.131ms
兼容性Web 环境✔️ 支持❌ 不支持✔️ 支持
Node 环境✔️ 支持✔️ 支持✔️ 支持

基准数据​

  • 准确率测试数据可见: accuracy
  • 性能测试数据可见:speed

 

3.快速开始​

环境​

pinyin-pro 支持在浏览器和 Nodejs 环境运行。

安装​

pinyin-pro 支持使用包管理器安装或者通过 <script />链接引入。

使用包管理器​

推荐使用包管理器进行安装:

perl

 npm安装

npm install pinyin-pro --save
# 选择一个你喜欢的包管理器

# NPM
$ npm install pinyin-pro --save

# Yarn
$ yarn add pinyin-pro

# pnpm
$ pnpm install pinyin-pro

Script 链接​

也可以通过浏览器的 script 标签导入 CDN 文件使用,下面以 unpkg 和 jsDelivr CDN 厂商为例:

unpkg​

html

<!-- 引入固定版本 -->
<head>
  <script src="https://unpkg.com/pinyin-pro@3.18.2/dist/index.js"></script>
</head>

<!-- 自动引入最新版本 -->
<head>
  <script src="https://unpkg.com/pinyin-pro"></script>
</head>

jsDelivr​

html

<!-- 引入固定版本 -->
<head>
  <script src="https://cdn.jsdelivr.net/npm/pinyin-pro@3.18.2/dist/index.js"></script>
</head>

<!-- 自动引入最新版本 -->
<head>
  <script src="https://cdn.jsdelivr.net/npm/pinyin-pro"></script>
</head>

TIP

我们建议使用 CDN 引入 pinyin-pro 的用户在链接地址上锁定版本,以固定版本的方式引入,以免将来 pinyin-pro 升级时受到非兼容性更新的影响。如果你有自己的 CDN,也建议将 pinyin-pro 文件下载下来托管到你自己的 CDN 上,以免第三方 CDN 不稳定带来的影响。

使用​

支持多种环境及模块化规范的使用方式。

ESM​

js

import { pinyin } from 'pinyin-pro';

pinyin('汉语拼音'); // 'hàn yǔ pīn yīn'

动态导入​

js

import('pinyin-pro').then((exports) => {
  exports.pinyin('汉语拼音'); // 'hàn yǔ pīn yīn'
});

Script 连接​

当你使用 <script /> 引入 pinyin-pro 时,会在全局(window)挂载一个名为 pinyinPro 变量。

html

<script src="https://unpkg.com/pinyin-pro"></script>

<script>
  var { pinyin } = pinyinPro;
  pinyin('汉语拼音'); // 'hàn yǔ pīn yīn'
</script>

CommonJS​

js

const { pinyin } = require('pinyin-pro');

pinyin('汉语拼音'); // 'hàn yǔ pīn yīn'

 

4. 实战demo怎么使用很简单

首先准备一个vue的界面在上面的 npm安装下载完之后。我想要实现的是以下的页面效果,在一个弹出框里面我输入汉字之后他的完整的拼音就会自己显示出来,并且他的首字母也会显示出来

 导入这个依赖,然后定义拼音namePinyin  和 namePy

  Vue.js 中定义一个表格的列配置(columns)数组。它定义了表格的 4 列,包括:

  1. 标题为“站名”(title: '站名')
  2. 数据源为“name”(dataIndex: 'name')
  3. 作为键(key: 'name')
  4. 标题为“站名拼音”(title: '站名拼音')
  5. 数据源为“namePinyin”(dataIndex: 'namePinyin')
  6. 作为键(key: 'namePinyin')
  7. 标题为“站名拼音首字母”(title: '站名拼音首字母')
  8. 数据源为“namePy”(dataIndex: 'namePy')
  9. 标题为“操作”(title: '操作')
​
    const columns = [
    {
      title: '站名',
      dataIndex: 'name',
      key: 'name',
    },
    {
      title: '站名拼音',
      dataIndex: 'namePinyin',
      key: 'namePinyin',
    },
    {
      title: '站名拼音首字母',
      dataIndex: 'namePy',
      key: 'namePy',
    },
    {
      title: '操作',
      dataIndex: 'operation'
    }
    ];

​

实现这个功能的方法

    watch(() => station.value.name, ()=>{
      if (Tool.isNotEmpty(station.value.name)) {
        station.value.namePinyin = pinyin(station.value.name, { toneType: 'none'}).replaceAll(" ", "");
        station.value.namePy = pinyin(station.value.name, { pattern: 'first', toneType: 'none'}).replaceAll(" ", "");
      } else {
        station.value.namePinyin = "";
        station.value.namePy = "";
      }
    }, {immediate: true});

 这段代码是用 Vue.js 编写的,用于监听 station 对象的 name 属性值的变化。当 name 属性值发生变化时,会执行后面的代码块。

1. 首先,使用 `watch` 函数监听 station 对象的 name 属性值的变化。参数是一个回调函数,当 name 属性值发生变化时,这个回调函数将被调用。
2. 在回调函数中,使用 `Tool.isNotEmpty` 函数检查 station.value.name 是否为空。如果为空,则执行第 7 和 8 行代码,将 namePinyin 和 namePy 重置为空字符串。
3. 如果 station.value.name 不为空,则使用 pinyin 函数将 name 转换为拼音,并将结果赋值给 namePinyin 和 namePy。pinyin 函数的第一个参数是要转换的文本,第二个参数是选项对象,用于指定拼音的格式。在这个例子中,我们使用了 `{ toneType: 'none' }` 选项来禁用拼音中的音调。
4. 最后,使用 `{ immediate: true }` 选项来确保在监听器触发时,回调函数总是被触发,即使新值和旧值相等。

之后就是这个了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/258754.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[AutoSar]基础部分 RTE 01 介绍

目录 关键词平台说明一、什么是RTE二、RTE的主要功能 关键词 嵌入式、C语言、autosar、EcuM、wakeup、flex 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0c;C编译器HighTec (GCC) 一、什么是RTE RTE&#xff08;Run-Time Environment&…

React高手都会用的useMemo有什么用的?

在 React 中&#xff0c;性能优化一直是开发者们关注的焦点之一。为了减少组件的重渲染和提高应用程序的性能&#xff0c;React 提供了一些钩子函数&#xff0c;其中之一就是 useMemo。本文将深入探讨 useMemo 的用法&#xff0c;展示它如何帮助我们优化 React 组件。 目录 1.…

深入了解常见的应用层网络协议

目录 1. HTTP协议 1.1. 工作原理 1.2. 应用场景 1.3. 安全性考虑 2. SMTP协议 2.1. 工作原理 2.2. 应用场景 2.3. 安全性考虑 3. FTP协议 3.1. 工作原理 3.2. 应用场景 3.3. 安全性考虑 4. DNS协议 4.1. 工作原理 4.2. 应用场景 4.3. 安全性考虑 5. 安全性考虑…

【华为OD机试真题2023CD卷 JAVAJS】加密算法

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 加密算法 知识点DFS搜索 题目描述: 有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。规则如下: 1. 明文为一段数字串由0~9组成 2. 密码本为数字0~9组成的二维数组 3. 需要…

npm install安装报错phantomjs-prebuilt安装脚本失败

前言: 进入了一个新项目,项目经理给了工程权限,我拉取代码建立好分支之后,安装依赖,报错 报错如下: 问题就是我本地安装了phantomjs,当我运行npmi install 的时候,它总尝试通过下载来安装,然后公司代理阻止了直接下载, 运行phantomjs -v看到本地版本,它正常工作在 解决问题: …

Stable Diffusion Windows 部署简单认知

写在前面 偶然看到&#xff0c;简单了解博文为 SD 部署&#xff0c;以及简单使用&#xff0c;部署过程遇到问题解决理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。…

铲屎官必备——在拍宠物萌照这一块,Mate X5可能真的是遥遥领先

养宠物已经成了年轻人的潮流之一&#xff0c;谁不想要有可爱高萌的猫猫狗狗作伴呢&#xff1f;也正因为如此&#xff0c;如何给自家主子拍一张可以分享炫耀到朋友圈的萌宠美照就成了难题&#xff0c;很多时候明明萌宠可爱溢出&#xff0c;却因为拍照出片的效果太差&#xff0c;…

【算法】红黑树

一、红黑树介绍 红黑树是一种自平衡二叉查找树&#xff0c;是在计算机科学中用到的一种数据结构&#xff0c;典型的用途是实现关联数组。 红黑树是在1972年由Rudolf Bayer发明的&#xff0c;当时被称为平衡二叉B树&#xff08;symmetric binary B-trees&#xff09;。后来&am…

R语言——文件读写(三)

目录 一、获取数据 二、读取文件 三、写入文件 四、读写Excel文件 五、读写R格式的文件 参考 一、获取数据 获取数据的三种途径&#xff1a; 1. 利用键盘来输入数据 2. 通过读取存储在外部文件上的数据 3. 通过访问数据库系统来获取数据 edit()&#xff1a;定义一个数…

在使用mapstruct,想忽略掉List<DTO>字段里面的,`data` 字段的映射, 如何写ignore: 使用@IterableMapping

在使用mapstruct,想忽略掉List字段里面的,data 字段的映射, 如何写ignore 代码如下: public interface AssigmentFileMapper {AssigmentFileDTO assigmentFileToAssigmentFileDTO(AssigmentFile assigmentFile);AssigmentFile assigmentFileDTOToAssigmentFile(Assigment…

【Proteus仿真】【Arduino单片机】视力保护仪

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使LCD1602液晶&#xff0c;DS18B20温度传感器、按键、蜂鸣器、继电器开关、HC05蓝牙模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD16…

5252D 5G基站测试仪

01 5252D 5G基站测试仪 产品综述&#xff1a; 5252D多通道综测仪打破了信号发生器进行信号发射、频谱分析仪进行观看频域波形的测试方案&#xff0c;将信号收发融为一体&#xff0c;推动无线通信测试进入全新时代。其独具的多通道收发一体、高性能、全方位测试能力及直观操作…

UE5 runtime模式下自定义视口大小和位置并跟随分辨率自适应缩放

本文旨在解决因UI问题导致屏幕中心位置不对的问题 处理前的现象&#xff1a;如果四周UI透明度都为1&#xff0c;那么方块的位置就不太对&#xff0c;没在中心 处理后的现象&#xff1a; 解决办法&#xff1a;自定义大小和视口偏移 创建一个基于子系统的类或者蓝图函数库(什么类…

链表对象的封装

前言 前面我自己写了一个对链表对象的封装&#xff0c;现在看来&#xff0c;确实还得是大佬的封装思路更加完善 前言知识介绍 __init__方法 __init__方法是Python中的一个特殊方法&#xff0c;用于初始化一个新对象。当一个类的实例被创建时&#xff0c;__init__方法会被自…

【数据结构和算法】 K 和数对的最大数目

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;双指针排序 三、代码 3.1 方法一&#xff1a;双指针排序 3.2 方法二&#xff1…

107基于matlab的模糊推理系统(ANFIS)的时间序列预测

基于matlab的模糊推理系统&#xff08;ANFIS&#xff09;的时间序列预测&#xff0c;输出训练集、测试集和预测数据结果&#xff0c;数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 107 时间序列预测模糊推理系统 (xiaohongshu.com)

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜A/B

老规矩&#xff0c;看目录&#xff0c;平均3-5题 文章目录 A/B2023真题&#xff08;2023-19&#xff09;-A-选项特点&#xff1a;两个等号&#xff1b;-判断需联立的难易&#xff1a;难&#xff0c;看着感觉需要联立&#xff0c;所以判断联立需要有理论支撑&#xff0c;不然还…

QT qAbs()、qRound()

1.qAbs qAbs:原型为 T qAbs(const T &value) 返回输入参数对应类型的绝对值&#xff0c;其中T为输入参数类型&#xff0c;也就是可以返回多种类型&#xff08;int,float,double型&#xff09; 代码示例&#xff1a; int d -1; float b -3.14; double c -4.36;int a_…

具有超低功耗性能的R7F102GAC3CSP、R7F102GAC2DSP、R7F102G6C3CSP RL78/G22微控制器 16-bit MCU

RL78/G22 简介&#xff1a; 除了具有低电流消耗&#xff08;CPU工作时&#xff1a;37.5μA/MHz&#xff1b;STOP时&#xff1a;200nA&#xff09;外&#xff0c;RL78/G22微控制器还配备了丰富的电容触摸通道。完备的16-48引脚封装和32KB-64KB闪存&#xff0c;扩充了新一代RL78…

PMP认证需要多少钱?

PMP认证费太贵&#xff1f;这些可以省下来&#xff01; 学习PMP认证到拿证的过程中一共有两个地方需要有费用支出&#xff0c;第一是PMP培训费用&#xff0c;第二就是PMP考试费用。 为什么一定要参加培训&#xff1f;这是PMI的考试条件中要求的&#xff0c;任何考生都需要有35学…