JS 中的范围导出

一旦我们exportJS. 例如,在一个名为的文件中,foo.js我们有一行说:

export default foo;

我们可以从我们想要的任何文件中全局导入它。但是,如果需要避免它怎么办。

这是一个问题陈述:

  • 考虑这X是一个包含模块的应用A程序B

  • 每个模块都A包含B一个文件,该文件parser.js具有一些具有相同名称的导出函数。

  • 假设AB是独立的模块。

  • 如果AB是独立的模块,原则上,模块不应访问其范围之外的功能/功能。

  • 由于导出是全球可用的,在开发过程中,一个人可以访问两个parser.js文件中的功能,他/她可能会在不知不觉中使用错误的代码。

有没有办法定义一个范围,导出的模块只能在某个级别使用。

如果没有,那么有没有创造性的方法来解决这个问题?

寻找解决大规模开发问题/经验的想法:)


芜湖不芜
浏览 89回答 1
1回答

回首忆惘然

您可以只使用别名来避免命名冲突:import {  foo,} from './some/path';import {  foo as bar,} from './some/other/path';但是,是的,大多数库都有一个入口点(通常是 index.js)来导出子模块的功能,而您所要做的就是不导出要隐藏的模块。现在,当然,有人仍然可以通过在 node_modules 文件夹中指定路径来直接导入您想要隐藏的子模块,但是这样做的人是 a) 愚蠢地依赖非公共 API 和 b) 可能玩得足够高水平以避免这种错误。至于直接使用的应用程序代码,只需将其包装在您从例如 git url 添加到 package.json 的库中,或者简单地注释代码或更改名称。Typescript 也可以提供帮助,如果函数具有不同的类型签名,则无法在您所指的地方使用一个。但归根结底,最简单的方法是对你的开发人员伙伴有一点信心:方法,方法,太多的努力去试图防止人们犯他们不太可能犯的错误。根据评论编辑导入可以像这样命名空间:import * as Whatever from 'some-module';Whatever.someFn();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript