common.js let request = require('request');let fs = require('fs');let pathModule = require('path');let sprintf = require('sprintf').sprintf;/** * 定义代码所在的行 */Object.defineProperty(global, '__stack', { get: function () { var o
let request = require('request');
let fs = require('fs');
let pathModule = require('path');
let sprintf = require('sprintf').sprintf;
/**
* 定义代码所在的行
*/
Object.defineProperty(global, '__stack', {
get: function () {
var orig = Error.prepareStackTrace;
Error.prepareStackTrace = function (_, stack) {
return stack;
};
var err = new Error;
Error.captureStackTrace(err, arguments.callee);
var stack = err.stack;
Error.prepareStackTrace = orig;
return stack;
}
});
// 当前行
Object.defineProperty(global, '__line', {
get: function () {
return __stack[1].getLineNumber();
}
});
// 调用此函数的上个函数的行
Object.defineProperty(global, '__preLine', {
get: function () {
return __stack[2].getLineNumber();
}
});
// 调用此函数的上个文件的名字
Object.defineProperty(global, '__preFile', {
get: function () {
return __stack[2].getFileName();
}
});
class Common {
constructor() {
}
/**
* 终止函数
*/
die(message = '') {
if (message) {
console.log(message);
}
// 终止进程
process.exit();
}
/**
* 当前日期
*/
now() {
date = new Date();
return this.formatDate(date);
}
/**
* 当前时间
*/
nowTime() {
date = new Date();
return this.formatDateTime(date);
}
/**
* 格式化Date "Y-m-d"
*
* @param date
* @returns {string}
*/
formatDate(date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? '0' + m : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
return y + '-' + m + '-' + d;
}
/**
* 格式化DateTime "Y-m-d H:i:s"
*
* @param date
* @returns {string}
*/
formatDateTime(date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
h = h < 10 ? ('0' + h) : h;
var minute = date.getMinutes();
minute = minute < 10 ? ('0' + minute) : minute;
var second = date.getSeconds();
second = second < 10 ? ('0' + second) : second;
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
}
/**
* 保存图片
*
* 依赖:
* request
*
* @param img_src 图片地址
* @param destFileName 目标文件名
* @return boolean
*/
saveImg(img_src, destFileName) {
// 采用request模块,向服务器发起一次请求,获取图片资源
request.head(img_src, function (err, res, body) {
if (err) {
console.log(err);
throw new Error(err);
}
// 通过流的方式,把图片写到本地/image目录下,并用新闻的标题和图片的标题作为图片的名称。
request(img_src).pipe(fs.createWriteStream(destFileName));
return true;
});
}
/**
* 格式化字符串
* @returns {*}
*/
sprintf() {
// es6 扩展操作符
return sprintf(...arguments);
}
/**
* 判断路径是否存在
* @param path
* @returns {boolean}
*/
exists(path) {
console.log(path);
return fs.existsSync(path);
}
/**
* 判断是否文件
* @param path
* @returns {*|boolean}
*/
isFile(path) {
return this.exists(path) && fs.statSync(path).isFile();
}
/**
* 判断是否文件夹
* @param path
* @returns {*|boolean}
*/
isDir(path) {
return this.exists(path) && fs.statSync(path).isDirectory();
}
/**
* 删除左右两端的空格
* @param str
* @returns {string|XML|*|void}
*/
trim(str) {
return str.replace(/(^\s*)|(\s*$)/g, "");
}
/**
* 删除左边的空格
* @param str
* @returns {string|XML|*|void}
*/
ltrim(str) {
return str.replace(/(^\s*)/g, "");
}
/**
* 删除右边的空格
* @param str
* @returns {string|XML|*|void}
*/
rtrim(str) {
return str.replace(/(\s*$)/g, "");
}
/**
* 检查空对象、空数组
* @param obj
* @returns {boolean}
*/
isEmpty(obj) {
// 检验 undefined 和 null
if (!obj && obj !== 0 && obj !== '') {
return true;
}
if (Array.prototype.isPrototypeOf(obj) && obj.length === 0) {
return true;
}
if (Object.prototype.isPrototypeOf(obj) && Object.keys(obj).length === 0) {
return true;
}
return false;
}
}
module.exports = new Common();
