Node.js 配合 WebStorm 在日常工作中处理各种问题, 方便的很, 基于我现在的开发工作,每天上班第一件事,就是打开电脑,打开WebStorm
常用的库
- axios 测试api
- node-mysql-promise 连接mysql
- node-xlsx 处理excel
- fs, path 文件处理
- crypto 各种加解密 md5、sha1、aes等
- ali-oss 上传文件到阿里云
- lodash 处理各种数据
- request-promise 测试api, 特定的情况下,使用这个更方便
- dayjs 轻量的日期处理库
- mockjs 模拟数据生成
- pinyin 汉字转拼音
- node-uuid 生成uuid
- string-random 随机生成字符串
- node-schedule 定时任务
- cheerio 解析html
api测试
比如今天后端给了一个接口,需要测试一下,又懒的打开Android Studio, 小程序开发者工具
打开webstorm, 随便在一个工程下,新建 api-test.js 文件,写代码,点右键运行,就能看到结果
const axios = require('axios')
axios.post('http://192.168.1.106:8080/api/data/list', { pageIndex: 1, pageSize: 10 }).then(response => {
console.log(response.data);
}).catch(err => {
console.error(err);
})
实现过程中不会像上面这代码这么简单,比如请求需要认证,参数需要加解密,不过这些都在日常工作中早写好了,碰到的时候,直接使用就可以
excel 数据处理
比如老板今天给了我一个用户的 excel 表,需要批量生成一批用户
打开webstorm, 随便在一个工程下,新建 excel-test.js 文件,写代码,点右键运行,就能看到结果
const xlsx = require('node-xlsx')
const mysql = require('node-mysql-promise');
const connect = mysql.createConnection({
host: '127.0.0.1',
prot: '3306',
user: 'user',
password: 'password',
database: 'test',
timezone: 'UTC',
dateStrings: true,
logSql: true
});
const sheets = xlsx.parse('./test.xls'); //获取到所有sheets
const dataList = sheets[0].data;
console.log(dataList);
// 这样就可以拿到 excel 里的数据,根据实际业务处理
// 数组转对象, 索引对应, 对不上的可以为空
const headers = ['name', 'age', 'sex', '', '', 'address']
let list = [];
dataList.forEach(row => {
let obj = {};
headers.forEach((key, index) => {
if(key) {
obj[key] = row[index];
}
});
list.push(obj)
})
list.forEach(item => {
item.password = md5('随机密码');
})
console.log(list);
// 使用 node-mysql-promise 批量写入数据库
connect.table('sys_user').addAll(list).then(id => {
console.log('写入数据库成功', id);
})
随机生成密码
const stringRandom = require('string-random');
// 包含特殊字符+大小写+数字, 绝对复杂
console.log(stringRandom(16, {specials: true }));
大日志文件处理
程序运行过程中写下的日志文件,有小时大于500MB以上,用文本编辑器没法处理,可以使用文件流处理
const fs = require('fs');
const stream = fs.createReadStream('文件路径', { autoNext: true });
stream.setEncoding('UTF8');
stream.on('data', function (data) {
// 根据特征符号,写到不同的文件里处理
})
stream.on('end', function () {
console.log('文件读取完..')
stream.close();
})
先就写这些了,有时间再继续补充