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();