当前位置: 首页 > news >正文

(企业 / 公司项目)前端使用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 }` 选项来确保在监听器触发时,回调函数总是被触发,即使新值和旧值相等。

之后就是这个了

相关文章:

  • Flink系列之:SQL提示
  • 山景DU561—32位高性能音频处理器(DSP)芯片
  • three.js(一)
  • SpringBoot接入轻量级分布式日志框架GrayLog
  • LVS+Keepalived 高可用集群
  • 学习使用js保留两位小数同时去掉小数末尾多余的00
  • 电机驱动开发
  • el-date-picker限制选择7天内禁止内框选择
  • 四川云汇优想教育咨询有限公司电商服务靠谱吗
  • 前端技术基建过程
  • Bert-vits2-v2.2新版本本地训练推理整合包(原神八重神子英文模型miko)
  • 基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI+Vant 电影院订票管理系统 的设计与实现
  • Hive参数操作和运行方式
  • Vue2源码梳理:在 import Vue 时干了啥
  • whisper深入-语者分离
  • [笔记] php常见简单功能及函数
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 0基础学习移动端适配
  • HomeBrew常规使用教程
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • java中具有继承关系的类及其对象初始化顺序
  • leetcode46 Permutation 排列组合
  • MySQL几个简单SQL的优化
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 关于extract.autodesk.io的一些说明
  • 前端存储 - localStorage
  • 使用API自动生成工具优化前端工作流
  • 微信小程序:实现悬浮返回和分享按钮
  • 白色的风信子
  • ​业务双活的数据切换思路设计(下)
  • #laravel 通过手动安装依赖PHPExcel#
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (BFS)hdoj2377-Bus Pass
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (转)mysql使用Navicat 导出和导入数据库
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • @KafkaListener注解详解(一)| 常用参数详解
  • @Transactional类内部访问失效原因详解
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [AutoSar]BSW_Com07 CAN报文接收流程的函数调用
  • [BIZ] - 1.金融交易系统特点
  • [BJDCTF2020]The mystery of ip
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [BZOJ1053][HAOI2007]反素数ant
  • [C/C++]数据结构 循环队列
  • [JavaWeb学习] tomcat简介、安装及项目部署
  • [Linux] CE知识随笔含Ansible、防火墙、VIM、其他服务
  • [loj6039]「雅礼集训 2017 Day5」珠宝 dp+决策单调性+分治
  • [NSSCTF]-Web:[SWPUCTF 2021 新生赛]easyrce解析
  • [PTP][1588v2] Delay_Resp消息
  • [Python学习]总结一下Cygwin安装与进阶学习列表
  • [SWPUCTF 2021 新生赛]Do_you_know_http