news 2026/9/30 17:56:52

使用 cnchar 生成汉字拼音、笔画、组词数据(Node.js 实战教程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 cnchar 生成汉字拼音、笔画、组词数据(Node.js 实战教程)

一、使用场景

在汉字学习、识字类项目中,通常需要提前生成:

  • 汉字
  • 拼音(带声调)
  • 笔画数
  • 笔画类型(横竖撇捺等)
  • 常见组词

本文使用Node.js + cnchar生成 JSON 数据,供后端直接导入数据库使用。


二、安装依赖

npminstallcnchar cnchar-order cnchar-poly cnchar-words cnchar-voice

三、生成脚本

generate_char_data1.js

// generate_char_data_for_execjs.js// Node ESM / execjs / cnchar// 生成:拼音 / 笔画数 / 笔画名 / 原始笔画数据importcncharfrom'cnchar';importorderfrom'cnchar-order';importpolyfrom'cnchar-poly';importwordsfrom'cnchar-words';importvoicefrom'cnchar-voice';importfsfrom'fs';// =======================// 1️ 注册插件// =======================cnchar.use(order,poly,words,voice);// =======================// 2️ 获取单字数据// =======================functiongetCharacterData(char){try{// 拼音constspell=cnchar.spell(char,'tone');constpinyin=Array.isArray(spell)?spell.join(' / '):spell||'';// 笔画数conststrokeCount=cnchar.stroke(char)||1;// 笔画名称(标准)conststrokeNameList=cnchar.stroke(char,'order','name');conststrokeNames=Array.isArray(strokeNameList)?strokeNameList.join(','):'';// ⭐ 原始笔画(detail 模式)conststrokeDetailList=cnchar.stroke(char,'order','detail');conststrokesRaw=cnchar.stroke(char,'order','shape')// 组词constwordList=cnchar.words(char);constwordsStr=Array.isArray(wordList)?wordList.slice(0,8).join(','):'';return{character:char,pinyin,stroke_count:strokeCount,stroke_names:strokeNames,strokes_raw:strokesRaw,// 新增字段words:wordsStr};}catch(err){return{character:char,pinyin:'',stroke_count:1,stroke_names:'',strokes_raw:[],words:''};}}// =======================// 3️Node 直接运行示例// =======================if(process.argv[1]&&process.argv[1].includes('generate_char_data')){constchars=['一','人','好','学','你','我'];constdata=chars.map(getCharacterData);fs.writeFileSync('./char_data.json',JSON.stringify({generated_at:newDate().toISOString(),total:data.length,characters:data},null,2),'utf-8');console.log(' 已生成 char_data.json(含原始笔画)');}// =======================// 4️ execjs 导出// =======================export{getCharacterData};

四、运行脚本

nodegenerate_char_data1.js

生成文件:

generated_characters.json

五、生成结果示例

{"generated_at":"2025-12-27T02:47:57.131Z","total":6,"characters":[{"character":"一","pinyin":"Yī","stroke_count":1,"stroke_names":"横","strokes_raw":[["一"]],"words":"八一,八一队,不一,不一定,创一流,初一,单一,第一"},{"character":"人","pinyin":"Rén","stroke_count":2,"stroke_names":"撇,捺","strokes_raw":[["丿","㇏"]],"words":"爱人,爱人民,保护人,被告人,北京人,本人,辩护人,别人"},{"character":"好","pinyin":"Hǎo","stroke_count":6,"stroke_names":"撇点,撇,横,横撇|横钩,竖钩,横","strokes_raw":[["𡿨","丿","一","㇇|乛","亅","一"]],"words":"爱好,爱好者,办好,备好,变好,不好,大好,打好"},{"character":"学","pinyin":"Xué","stroke_count":8,"stroke_names":"点,点,撇,点2,横撇|横钩,横撇|横钩,竖钩,横","strokes_raw":[["丶","丶","丿","㇀","㇇|乛","㇇|乛","亅","一"]],"words":"爱科学,爱学习,办学,博学,不科学,才学,辍学,初学"},{"character":"你","pinyin":"Nǐ","stroke_count":7,"stroke_names":"撇,竖,撇,横撇|横钩,竖钩,撇,点","strokes_raw":[["丿","丨","丿","㇇|乛","亅","丿","丶"]],"words":"你的,你好,迷你,你们,你我"},{"character":"我","pinyin":"Wǒ","stroke_count":7,"stroke_names":"撇,横,竖钩,提,斜钩|卧钩,撇,点","strokes_raw":[["丿","一","亅","㇀","㇂|㇃","丿","丶"]],"words":"你我,忘我,我厂,我处,我方,我国,我局,我军"}]}

六、注意事项(重要)

  • stroke_count可靠
  • stroke_names仅用于基础展示
  • 教学级笔顺 / 动画建议前端使用HanziWriter
  • 不推荐在 Django / Java 中直接计算笔画

七、总结

  • cnchar 适合数据预生成
  • Node.js 非常适合做汉字数据工具脚本
  • 后端只负责存储,前端负责交互与动画
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 9:07:27

【Java毕设源码分享】基于springboot+vue的“课件通”中小学教学课件共享平台的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/9/29 13:52:08

基于TensorFlow的股票价格预测模型构建

基于TensorFlow的股票价格预测模型构建 在量化交易的世界里,一个微小的预测优势可能就意味着巨大的收益差异。尽管“市场有效假说”长期主导金融理论,现实中的高频交易员、对冲基金和算法团队却从未停止寻找那0.5%的可预测性——尤其是在短期价格波动中隐…

作者头像 李华
网站建设 2026/9/29 13:52:08

揭秘Open-AutoGLM 2.0下载难题:3步完成安装并避坑所有常见错误

第一章:Open-AutoGLM 2.0安装前的环境准备与核心挑战在部署 Open-AutoGLM 2.0 前,必须确保系统环境满足其运行依赖。该框架对底层计算资源、Python 版本及第三方库有严格要求,任何配置偏差都可能导致后续训练失败或推理异常。系统与硬件要求 …

作者头像 李华
网站建设 2026/9/29 13:52:08

你还在手动操作手机?Open-AutoGLM已实现全流程自动控制!

第一章:你还在手动操作手机?Open-AutoGLM已实现全流程自动控制!在移动自动化测试与智能交互领域,传统手动操作已无法满足高效、精准的需求。Open-AutoGLM 作为新一代开源自动化框架,基于大语言模型驱动,实现…

作者头像 李华
网站建设 2026/9/30 13:52:38

为什么你的AutoGLM任务总失败?:直击Open-AutoGLM 2.0的4个设计硬伤

第一章:AutoGLM任务失败的根源性认知在实际应用中,AutoGLM作为自动化生成语言模型任务调度系统,其运行稳定性常受多种隐性因素干扰。任务失败并非单一模块异常所致,而是多维度系统性问题的外在表现。深入剖析其根源,有…

作者头像 李华