宜兰县网站建设_网站建设公司_VS Code_seo优化
2025/12/27 14:42:17 网站建设 项目流程

一、使用场景

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

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

本文使用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 非常适合做汉字数据工具脚本
  • 后端只负责存储,前端负责交互与动画

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询