Node.js 工作日常

122 阅读2分钟

Node.js 配合 WebStorm 在日常工作中处理各种问题, 方便的很, 基于我现在的开发工作,每天上班第一件事,就是打开电脑,打开WebStorm

常用的库

  1. axios 测试api
  2. node-mysql-promise 连接mysql
  3. node-xlsx 处理excel
  4. fs, path 文件处理
  5. crypto 各种加解密 md5、sha1、aes等
  6. ali-oss 上传文件到阿里云
  7. lodash 处理各种数据
  8. request-promise 测试api, 特定的情况下,使用这个更方便
  9. dayjs 轻量的日期处理库
  10. mockjs 模拟数据生成
  11. pinyin 汉字转拼音
  12. node-uuid 生成uuid
  13. string-random 随机生成字符串
  14. node-schedule 定时任务
  15. 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();
    
})

先就写这些了,有时间再继续补充