javascript - 如何导出模块中的函数?

标签 javascript

亲爱的,我刚开始学习 javascript 中的模块。这是我实现的一个模块:

module.exports = function(logger_level) {
    this.info = function(message) {
        stdout(message);
    };
};

function stdout(message)
{
    process.stdout.write(message+'\n');
}

我必须这样调用它:

var logger = require('./js/logger.js');
var logger1 = new logger("info1");

logger1.info("info");

我的问题是如何更改模块的实现,以便我可以像这样调用它:

var logger = require('./js/logger.js')("info");
logger.info("info");

最佳答案

如果你想那样使用它,根本不需要构造函数:

module.exports = {
    info: function(message) {
        stdout(message);
    }
};

function stdout(message)
{
    process.stdout.write(message+'\n');
}

I just started learning modules in javascript.

请注意,这与其说是“JavaScript 中的模块”,不如说是“NodeJS 中的模块”。直到 ES2015(“ES6”)才引入的 JavaScript 模块在外观和行为上都大不相同,但它们尚未得到广泛支持。如果是,您的模块可能如下所示:

// ES2015+ syntax
export default {
    info: function(message) {
        stdout(message);
    }
};

function stdout(message)
{
    process.stdout.write(message+'\n');
}

...并像这样使用:

import logger from './logger.js';
logger.info("info");

关于javascript - 如何导出模块中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41910140/

相关文章:

javascript - 对嵌套对象数组进行排序

javascript - 为什么运行命令时终端返回 `Cannot send an empty message`?

javascript - Passport.js:使用主干时访问用户

javascript - 如果 href=url 更改/添加类到父元素

javascript - 使用 jQuery 时维持此范围

javascript - Bootstrap 3 使用 Javascript 在页面加载时打开下拉菜单

javascript - JS 陷入 while 循环

javascript - 如何使 Youtube 上的视频不遮盖灯箱?

javascript - 具有 2 个级别的 jQuery 选项卡

javascript - XLSX 文件中查询定义的位置