javascript - 如何导入命名空间?

标签 javascript ecmascript-6 babeljs

我有一个包含以下内容的 JavaScript 文件:

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

  get(url, query) {
    this.call("foo");
  }
}

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

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

    import "services/api.js";
    console.log(api);
    

    Uncaught ReferenceError: api is not defined

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

    import api from "../../services/api.js";
    console.log(api);
    console.log(api.get);
    

    Object {}
    undefined

我做错了什么?

最佳答案

您的 api.js 未导出任何内容。您应该重写它以导出以下每个函数:

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

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

然后你就可以像这样使用它了

import * as api from "../../services/api.js";
console.log(api);
console.log(api.get);

关于javascript - 如何导入命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41549996/

相关文章:

javascript - Meteor 1.3 模块 - 如何在控制台中使用 npm 导入的库?

node.js - babel-node 无法识别 jsx <

reactjs - 如何在IE8中转换Object.defineProperty

javascript - 返回主页时小部件不会重新加载

javascript - 将计算结果设置为 ng 样式标记 Angular.js 中的百分比

javascript - 在过滤方法 React/JS 中删除多个项目

javascript - 以编程方式调用对象中的所有函数? (JavaScript)

javascript - 无法读取空帮助的属性 "style"。 [Javascript、HTML、CSS、JQuery]

javascript - Highcharts 中的多个类别和系列

javascript - Flowtype + babelify