如何导入命名空间?

Jam*_*lly 3 javascript ecmascript-6 babeljs

我有一个 JavaScript 文件,其中包含以下内容:

const api = {
  call(type, url, data) {
    console.log(type + "bar");
  },

  get(url, query) {
    this.call("foo");
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够api.get()在必要时跨多个不同的文件进行调用,但我在导入时遇到问题。

  1. import当我尝试访问变量时,单独加载文件会给我一个 ReferenceError api

    import "services/api.js";
    console.log(api);
    
    Run Code Online (Sandbox Code Playgroud)

    未捕获的引用错误:api 未定义

  2. 给导入一个名称(of api)会返回一个对象,但它没有内部方法:

    import api from "../../services/api.js";
    console.log(api);
    console.log(api.get);
    
    Run Code Online (Sandbox Code Playgroud)

    对象 {}
    未定义

我究竟做错了什么?

Ber*_*rgi 7

api.js没有出口任何东西。您应该重写它以导出以下每个函数:

export function call(type, url, data) {
    console.log(type + "bar");
}
export function get(url, query) {
    call("foo");
}
Run Code Online (Sandbox Code Playgroud)

(这比默认导出对象文字要好得多api

然后你可以像这样使用它

import * as api from "../../services/api.js";
console.log(api);
console.log(api.get);
Run Code Online (Sandbox Code Playgroud)