G2 5.0 推出了服务端渲染的能力,为了让开发者更快捷得使用这部分能力,最写了一个 node 命令行工具 g2-ssr-node:用于把 G2 的 spec 转换成 png、jpeg 或者 pdf 等。基本的使用如下:
$ g2-ssr-node g2png -i ./bar.json -o ./bar.png
其中 bar.json是一个如下绘制条形图的 G2 spec:
{
"type": "interval",
"data": [
{ "genre": "Sports", "sold": 275 },
{ "genre": "Strategy", "sold": 115 },
{ "genre": "Action", "sold": 120 },
{ "genre": "Shooter", "sold": 350 },
{ "genre": "Other", "sold": 150 }
],
"encode": {
"x": "genre",
"y": "sold"
}
}
最后得到如下的图片 bar.png:
那接下来就来看看如何从 0 到 1 实现 g2-ssr-node。
初始化环境
首先新建一个文件夹并且用 npm 初始化项目:
$ mkdir g2-ssr-node && cd g2-ssr-node && npm init -y
在得到的 package.json 中增加一个 bin 字段,该字段指向了包里面的可执行文件,也就是最后运行 $ g2-ssr-node 时候执行的文件。
{
"bin": "bin/g2-ssr-node.js",
}
接下来新增 bin 目录、新增 g2-ssr-node.js,并且输入以下的内容:
#!/usr/bin/env node
console.log('hello world!')
其中第一行说明用 node 来执行 g2-ssr-node.js 文件,类似于当运行 $ g2-ssr-node的时候调用 $ node g2-ssr-node.js。
这之后在项目根目录下运行 npm link 会把当前包安装到全局。如果打开控制台输入 g2-ssr-node能打印出 hello world!, 那么说明开发环境已经搭建好了,可以进一步写代码了。
安装 commander
首先安装 commnder 工具包来简化开发命令行的成本,比如帮助解析参数、展现使用错误和实现提示信息等。
npm i commander -D
本文实现的 g2-ssr-node 有一个子命令:g2png,将 G2 的 spec 转换成图片。该子命令有两个参数:
- -i, --input <filename>: 指定包含需要转换的 spec 的文件地址
- -o, --output <filename>: 指定输出图表的文件地址
修改 bin/g2-ssr-node.js 如下用于满足上述需求:
#!/usr/bin/env node
const { Command