Node.js 快速开发 cli 应用攻略 - 坑篇
「哇夭寿拉,文章都按照上下章来写啦」
因为一直找不到时间写,上次匆匆做完了介绍,所以开个下集谈谈几个库遇到的坑。
commander
commander 的 bug 确实挺多的,所以下一个坑准备试试 yargs
这个库(差点就准备自己写了 OTZ)。
「哇夭寿拉,文章都按照上下章来写啦」
因为一直找不到时间写,上次匆匆做完了介绍,所以开个下集谈谈几个库遇到的坑。
commander 的 bug 确实挺多的,所以下一个坑准备试试 yargs
这个库(差点就准备自己写了 OTZ)。
这周花了两天 + 一天测试修 Bug 的时间完成了一个 cli,踩了一些坑,觉得也可以总结一波。
主要代码由于是 private 的不便公开,这里主要安利一些相关库。
commander 用于快速生成 command-line interface。
最近 TypeScript 中毒,想想我一个弱类型出身的人,怎么就喜欢上了类型约束……当然这不是重点,重点可能还是 JS 没有接口,我没法靠 class 语法糖写的非常 OO……
关于 TS 的安利部分结束,今天我想说的其实是在 ts 中如何正确的 import json 格式。
首先我使用了基本姿势
import * as variable from './fooooooo.json'
在工作的时候突然就有了这样一个需求,这一次正好也对本来不太熟的 Stream 有了一点更加深刻的理解……(好吧本来是根本没搞清楚状况)。
Stream,中文叫做流,和我们平时充值信仰的那个 Steam 还是差了那么一点的。所谓流,是一种消费的模型,被消费完就木有了,所以如果我们需要重复使用,就得存下来,也就是把 Stream 转成别的东西——Just Like Array or Buffer。
position 中有哪些属性——相比这是一道送分题,大多数人都知道:static, relative, absolute, fixed,如果能答出 sticky——那么可以给你一颗五角星。
实际上,sticky 在一般的开发中并不常用,主要还是因为兼容性的问题,继续用 caniuse 查 sticky 你会发现支持性并不是很好,所以并不适合大部分业务场景。
这周在切图的时候拿到了 svg,之前自己一直是用 font-icon 的,感觉挺方便的,svg 相比 font-icon 有一些优点(这个以前在网上看到过),本文暂时不展开讲述了。
但是一些图标,在 Element 里自带的 el-icon-xxx
的方式非常统一,其实是根据 class
设置的,我也不喜欢 svg
的插入方式(太硬),所以希望尽可能的让项目中的 font 保持统一。
然后就发现了 svg 没法像 font icon 一样设置 color。
今天刚接的新锅报了个不太好复现的 Bug(实际上到最后都没有在原环境复现……),于是看了一波代码找问题,Bug 大致是:
xxx.hasAttribute is undefined
调用到的地方有几处,首先确定了 hasAttribute
是写在 Element 的原型链上的,即如果是 Element 类型(element.nodeType === 1
),那么必然有 hasAttribute。
在此之前,我先查了一下,什么情况下 「Element」 会没有 hasAttribute:
最近斗志非常差,当然很大程度还是自己的锅……这又不是个情感博客我就不细说了……
这周公司里又开始做新的东西了,大概是类似于反向代理,但是授权了私有库的权限,需要做一些限制,比如 GitHub 路径限制为 dist
。
最初的时候我们这么验证路径:
昨天同事问我关于 Node Event Loop 的问题,代码如下:
const Koa = require('koa')
const app = new Koa()
const logger = require('koa-logger')
let index = 0
const sleep = delay => new Promise(resolve => setTimeout(resolve, delay))
app.use(logger())
app.use(async ctx => {
await sleep(500)
ctx.body = index++
})
app.listen(3000)
CSS 其实还是有很多学问的,上次正好说到了文字的一些效果,干脆就把 CSS Secret 中的文字效果都做一下笔记,还是有很多自己原来不知道的黑科技的。