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',
}),
})