一旦我们export在JS. 例如,在一个名为的文件中,foo.js我们有一行说:export default foo;我们可以从我们想要的任何文件中全局导入它。但是,如果需要避免它怎么办。这是一个问题陈述:考虑这X是一个包含模块的应用A程序B。每个模块都A包含B一个文件,该文件parser.js具有一些具有相同名称的导出函数。假设A和B是独立的模块。如果A和B是独立的模块,原则上,模块不应访问其范围之外的功能/功能。由于导出是全球可用的,在开发过程中,一个人可以访问两个parser.js文件中的功能,他/她可能会在不知不觉中使用错误的代码。有没有办法定义一个范围,导出的模块只能在某个级别使用。如果没有,那么有没有创造性的方法来解决这个问题?寻找解决大规模开发问题/经验的想法:)
1 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
您可以只使用别名来避免命名冲突:
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();
添加回答
举报
0/150
提交
取消