如何在全局中导入 lib,以便可以在导入的 js 文件中访问它?

Posted

技术标签:

【中文标题】如何在全局中导入 lib,以便可以在导入的 js 文件中访问它?【英文标题】:How can i import a lib in global so i can access it in an imported js file? 【发布时间】:2020-12-22 16:15:56 【问题描述】:

为什么我认为将我的库放在全局并在不同的文件中访问它是一个有效的选择: 首先我有一个 js 文件,但我的文件越来越大,所以我只是将它分成两部分,现在我通过函数导出访问我的第二个文件函数。 那么为什么我在单个文件上时必须导入一次lib,但当我使用多个文件时要多次导入

我想做的事

当我尝试在 javascript 中使用库时出现错误。

例如,我将使用“lib”而不是来自 js 的真实库

这是我的文件

app.js

import lib from 'lib'

console.log(lib)

这是有效的,但是当我添加时

app.js

import lib from 'lib'
import my_file from './file_path.js'

file_path.js

console.log(lib)

这不起作用,我必须在新文件中导入我的库,例如

file_path.js

import lib from 'lib'
console.log(lib)

我收到此错误

Uncaught ReferenceError: lib is not defined

但我不想复制我的导入,我该怎么做?谢谢

【问题讨论】:

你能举一个实际文件路径的例子吗?你需要它是一个相对路径(以'./'开头) 控制台有错误吗? @DavinTryon 我使用./,找不到路径不是我的问题 @Reger 我得到:Uncaught ReferenceError: lib is not defined 问题是你为什么不想这样做?我的意思是,AFAIK 你在做什么是绝对有效的选择,也是最好的选择,因为它清楚地指定了依赖关系。走向全球通常不是一个好的选择 【参考方案1】:

我找到了一个使用 window 的解决方案

您只需将您的库添加到这样的窗口变量中:

app.js

import lib from 'lib';
window.lib = lib;

import my_file from './file_path.js'

现在您可以在“my_file”中使用您的库而无需再次导入它

PS:感谢帮助我解决问题的人 :)

【讨论】:

我不知道它可以工作。请记住,window 是全局对象 developer.mozilla.org/en-US/docs/Glossary/Global_object。【参考方案2】:

/!\您必须在节点应用程序中才能使用此方法/!\

我还找到了替代窗口并导入

我们可以这样使用require:

window.lib = require('lib');

现在我们只有 1 行而不是 2 行 这是我目前找到的最好的解决方案,不知道能不能做得更好,请告诉我

【讨论】:

以上是关于如何在全局中导入 lib,以便可以在导入的 js 文件中访问它?的主要内容,如果未能解决你的问题,请参考以下文章

如何在vue.js项目的main.js文件中导入js类并在所有组件中使用它而不是在每个组件中导入?

如何在eclipse中导入jar

在 ES 模块(Node.js)中导入 JSON 文件

如何使 sass 文件全局化,而不是在每个文件中导入它并膨胀包大小?

如何配置 Python 以便我可以直接从包中导入函数?

怎么在eclipse中导入gson和dom4