当前位置 : 主页 > 网络编程 > JavaScript >

node - 公共 - 代码模块

来源:互联网 收集:自由互联 发布时间:2021-06-30
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
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 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();
网友评论