javascript - 导入和导出 JS 库

标签 javascript vue.js ecmascript-6 import export

这里我有一组我定义的库

lib1.js

export default {
    Func1() {
        return ...
    }
}

(我的其他库等等)

在这里,我将这些库导入到一个主文件中,稍后我想将其导入到我的 Vue 中:

api.js(不是lib1、lib2、lib3和api在同一个文件夹)

import './lib1';
import './lib2';
import './lib3';

在 View 中:

<script>
    import * as Api from '@/api/api';

    mounted() {
      Api.func1();
    }

</script>

Mix 提示我找不到函数:

"export 'Func1' (imported as 'Api') was not found in '@/api/api' .... 

我知道路径是正确的,因为例如,如果我在我的 View 中直接导入库,它就可以工作:

( View ):



<script>
    import Lib1 from '@/api/lib1'
    import Lib2 from '@/api/lib2'
    import Lib3 from '@/api/lib3'

    mounted() {
      Lib1.func1();

      ...

    }

</script>

这里有什么?我只想要一个“主”文件来导入我所有的 Api 函数,而不是分别导入每个函数。

关于环境的一些其他注意事项:我使用的是 Laraval 6 和 Vue。

最佳答案

组合模块的方法有很多种,我创建了stackblitz向您展示如何做到这一点。
您的方法无效,因为您导出了 default 并且当您尝试 import './lib1'; 时,此类模块的名称是未知的。
此外,import * as Api 只有在您有多个 named 导出但没有一个 default 时才有效。
如我所见,您想将多个库合并到一个导出的对象中。 有几种方法可以实现您的目标:

  1. 仅导出命名函数(我最喜欢的):

库1

export function Func1() {
  return ...;
}
export function Func2() {
  return ...;
}

然后在主文件中:

import * as lib1 from './lib1';

export default {
...lib1
}
  1. 在您的示例中导出默认值

库1

export default {
 Func1() {},
 Func2() {}
}

然后在主文件中:

import lib1 from './lib1';

export default {
...lib1
}
  1. 导出默认但组合

库1

export default {
 Func1() {},
 Func2() {}
}

然后在主文件中:

import lib1 from './lib1';

export default {
 lib1
}

但是在你的其他文件中你应该像这样使用它:

import Api from '@api/api';

Api.lib1.Func1()

注意:根据您当前的配置,您应该使用 import Api from '@api/api'; 而无需 * 还有很棒的article关于 named 导入与 default 的对比。

关于javascript - 导入和导出 JS 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59150527/

相关文章:

javascript - 如何修复函数以获取单元格的文本颜色

javascript - 如何使用jquery检测iframe中的点击事件

c# - 将键/值对从 javascript 传递到后面的 C# 代码

javascript - Vue.js 2.0 : Apply vue component rendered using v-html, 编译标记

javascript - 如何在 React 中使用循环显示数据?

javascript - jquery 单击事件未在 Internet Explorer 上触发

Symfony 4、Twig 和 VueJS - 重定向到 Vue 组件中的 Symfony 路由

vue.js - 在 Vue.js 路由更改上打开模式

Javascript - 并行调用函数并返回组合结果

javascript - 如何使用 ES6 箭头函数从 jQuery on() 事件中获取元素?