好用,但是不常见的npm包

1,333 阅读2分钟

1.esm

之所以第一个推荐esm是因为它能够将.mjs转成.cjs,能够在node中使用import export语法。

现在的前端都是习惯使用import export的方式,而在node中导入包是用require module.exports的方式,这样用起来就很别扭,要来回切换。

那么有没有一种统一规范的方法呢?有了,就是esm。

index.js作为入口文件,再引入mian.js主文件

//index.js

require = require('esm')(module)
module.exports = require('./main.js')

main.js中写主逻辑,即可畅快的使用import export

//main.js

import _ from 'lodash'
var array = [1];
var other = _.concat(array, 2, [3], [[4]]);
console.log(other) //[ 1, 2, 3, [ 4 ] ]

运行node index.js即可输出结果。

不使用esm的话,还有一种方式就是把.js改成.mjs,也可以在node中使用es6规范,不过就是太繁琐了,每次创建新文件就改后缀名,这样还不如一次性配置好就行了。

2.dayjs

在时间格式化上,鼎鼎大名的就是moment.js,但是moment.js太臃肿了,于是乎day.js出现了。

dayjs是一个轻量级的处理时间的库。

import dayjs from 'dayjs'
const day = dayjs().format('YYYY-MM-DD hh:mm:ss')
console.log(day) //2021-09-26 04:39:43

引入,设置时间格式,就这么简单。

需要传入一个utc格式的时间(2021-09-26T08:41:47.353Z),不传则默认会获取当前的时间自动传入。

3.qs

在发送ajax请求的时候,post传参一般都是传json格式的数据,比如:

data:{ 
        username: 'xx', 
        password: 'xx' 
      }

但是如果是传formdata,则需要将json数据转成formdata的格式,比如: username=xx&password=xx

    import axios from 'axios'
    
    const { data } = await axios.request({
        method: 'post',
        url: 'https://api/login',
        data: {
            username: '天平',
            password: 'xxx',
        },
        transformRequest: [
            function (originalData) {
                let data = ''
                for (let item in originalData) {
                    data += `${item}=${originalData[item]}&`
                }
                //减去最后一个&
                data = data.substr(0, data.length - 1)
                return data
            },
        ],
    })

原生代码也可以实现,但是看起来很冗余,qs则能很好的帮我们实现。

    import axios from 'axios'
    import qs from 'qs'
    
    const { data } = await axios.request({
        method: 'post',
        url: 'https://api.copymanga.com/api/v3/login',
        data: qs.stringify({
            username: '天平',
            password: 'xxx',
        }),
    })