繁体   English   中英

如何将 javascript function 导出为模块

[英]how to export javascript function as a module

我已经导出了一个 function 并将其导入到 Javascript 中,但我可以访问其中的函数的唯一方法是像这样键入它:

myModule.mainFunc().func1()

但我想要实现的更像是这样的:

myModule.mainFunc.func1()

目前,如果我尝试像这样引用它,它会给出错误。

我尝试将函数的值作为对象返回,但它仍然需要我将其作为函数调用。

function greet() {

    var hello = () => {
        console.log("hello there");
    };

    var hi = () => {
        console.log("hi there");
    };

    return { hello: hello, hi: hi };  // I've tried this doing it like this 
}

export default {greet};

这是我导入它的方式:

import greetings from "./index.js";

greetings.greet().hello()

您不能将 Greet greet中定义的函数引用为

myModule.mainFunc.func1()

因为myModule.mainFunc本身就是一个greet function 。 您要导入的是调用greet function 的结果。

您可以通过使 function 成为IIFE (Immediately Invoked Function Expression)来避免手动调用greet function。 这样做将在定义 function 后立即执行它。

const greet = (function() {

    var hello = () => {
        console.log("hello there");
    };

    var hi = () => {
        console.log("hi there");
    };

    return { hello, hi };
})();

export default { greet };

现在当你导出greet时,你不是在导出greet function,而是调用greet function 的结果,它是一个 object 有两个功能, hellohi

将 greet 定义为 object

var greet = {
    hello: () => {
        console.log("hello there");
    },
    hi: () => {
        console.log("hi there");
    },
}

并像greet.hello()一样访问它

你在哪个环境运行你的代码? 如果是 NodeJS,请确保它支持 ES6 模块作为您当前的导出和导入样式。 普通 NodeJS 只支持 CommonJS 模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM