在Java中,我们有四个可见性级别。除了public
和private
,我们有protected
级别和一个默认级别(没有修饰符),也称为“package-local”或“package-private”。
| 修饰符|班级| Package |子类|世界|
| - -----|- -----|- -----|- -----|- -----|
|公开| Y轴|Y轴|Y轴|Y轴|
|受保护| Y轴|Y轴|Y轴|X|
|无修饰符| Y轴|Y轴|X|X|
|私人| Y轴|X|X|X|
参见:https://www.programcreek.com/2011/11/java-access-level-public-protected-private/
**我特别需要Javascript中的“package-private”级别。**Javascript模块是否有类似的方法?
我正在写一个库(NPM包),我想export
的东西(function
,class
等),但不是在模块的公共API(由库的消费者使用)。只是在我的模块文件之间本地使用。
2条答案
按热度按时间iaqfqrcu1#
Breaking TypeScript NPM package into multiple files without exposing internal components
这似乎是一个诀窍:package.json定义了从npm包中实际导出的内容。所有内容仍然可以从项目中的任何地方导入,但导入是显式的。未通过package.json显式公开的内容不能从使用该包的其他项目导入。
wlwcrazw2#
Node.js中有一个**
exports
字段,定义在“package.json”**中:https://nodejs.org/api/packages.html#exports它可以控制消费者可以导入哪些文件(以及如何导入)。它有很多选项,不幸的是没有记录在上述官方参考。
例如,参见"package.json" of my
smart-color
package:上面的配置使消费者能够
import
文件:"./lib/Color.js"
这样:作为其他示例,参见"package.json" of
dotenv
package和"package.json" ofserver-only
package。