Json2e

利用XLSX搞一个JSON转Excel的小工具

# 缘由

控制台的国际化一直由美杜莎国际化文案管理平台负责,代码中使用唯一的key来表示每条文案。发布上线前会将文案整合送给翻译小姐姐们,在项目目录中,文案{key:中文}使用json存储。 要是直接复制粘贴给小姐姐,估计小姐姐们顺着网线就过来打你了,成百条的文案一下显示在聊天框中谁看谁难受。不妨转为Excel后发给小姐姐,干净利落,便于保存且可追溯。说不定还能收一句辛苦小哥哥了、

这种JSON转Excel的在线工具挺多,复制粘贴一键转换并下载,不要太方便了。但是,由于数据安全问题,内网对上传下载做了部分限制。既然这样还不如自己本地撸一个然后npm link, 随便那个项目中都能使用。

话不多说,npm官网搜索相关词条,就XLSX吧,原因文档局详细~全是英文看不懂啊~。大概看一下关于写Excel的API就开始吧。用到了如下几个:

xlsx.utils.book_new()
xlsx.utils.aoa_to_sheet()
xlsx.utils.book_append_sheet()
xlsx.writeFile()

对于各个方法的作用,一开始也不是很明了。这种已经是常态了,对新接触的内容要怎么快速上手呢,一是先看方法命名,先盲猜一波;二是复制在本地,不管三七二十几先跑一下,通过看结果来反推。

先对文件目录npm init 一下,下载相关依赖,XLSX,commander,inquirer等。

美杜莎平台支持Excel批量上传文案,文件格式为

AppName Key Simplified Chinese English
name y.page.OK 确定 OK
name .... .... ....
const inquirer = require('inquirer')
const fs = require('fs');
const path = require('path')
const xlsx = require('xlsx');
const ora = require('ora')


const question = [
  {
    name: 'appName',
    message: "美杜莎应用名(如 yundun-console-aliyun-com-ddosdip):"
  }
]

const spinner = ora('疯狂读取中...');

inquirer
  .prompt(question).then(answer => {
    const {appName} = answer;
    let ws_head = [
  ['AppName','Key','Simplified Chinese'],
];
  spinner.start();
  const workBook = xlsx.utils.book_new();
  const ws_name = 'SheetJS';
  const filePath = path.join(process.cwd(),'src','locales','message_zh.json');
  const jsonFile = JSON.parse(fs.readFileSync(filePath));
  let ws_data = [];
  Object.keys(jsonFile).map(key => {
    let tep = [appName,key,jsonFile[key]];
    ws_data.push(tep);
  });
  const ws = xlsx.utils.aoa_to_sheet([...ws_head,...ws_data]);
  xlsx.utils.book_append_sheet(workBook,ws,ws_name);
  xlsx.writeFile(workBook,'mds.xlsb');
  spinner.succeed('文案已经全部导出~~');
  })

代码非常简单基础功能很好的就实现了。

TCP/IP协议

什么是HTTP协议,什么是TCP/IP协议.

浏览器的回流与重绘

了解浏览器的回流(Reflow)与重绘(Repaint)