簡體   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