首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个JavaScript模块中封装多个ES6文件的良好实践是什么?

在一个JavaScript模块中封装多个ES6文件的良好实践是什么?
EN

Stack Overflow用户
提问于 2019-06-22 10:29:47
回答 1查看 477关注 0票数 0

考虑到C# / C++打包结构,如何实现将JS类作为单个名称空间导入到单个文件中?

我目前的解决方案是使用一个额外的“包”-script文件,然后封装所有类。请看下面的代码。

这似乎包括大量开销(用每个新类更新包-脚本导出,在每个新类中导入该脚本)。

ClassA.js:

代码语言:javascript
复制
import * as MyPackage from "../MyPackage.js";

export default class ClassA {/* some Class Code */}

export {
    ClassA
};

MyPackage.js:

代码语言:javascript
复制
import ClassA from "./module/ClassA.js";
import ClassB from "./module/ClassB.js";

export {
   ClassA,ClassB
}

script.js:

代码语言:javascript
复制
import * as MyPackage from "./MyPackage.js"

let a = new MyPackage.ClassA();

这方面的最佳做法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-22 10:47:20

我目前的解决方案是使用一个额外的“包”-script文件,然后封装所有类。

是的,这是最好的做法。" package“脚本文件通常称为index.js,放置在包的目录中,因为这是导入时解析文件夹路径的内容。

在每个新类中导入此脚本

不,你不应该那样做。它引入了一个循环依赖项。只要您的模块不依赖于任何其他类,它就不应该导入任何东西。没有“包声明”,模块是一个独立的文件,它有自己的依赖项。

还请注意,您不应该两次从模块导出类,默认导出就足够了。所以你会用

代码语言:javascript
复制
// mypackage/classA.js:

export default class ClassA {
    /* some Class Code */
}

代码语言:javascript
复制
// mypackage/index.js:

export { default as ClassA } from "./classA.js";
export { default as ClassB } from "./classB.js";
// your solution of importing, then exporting works as well.

代码语言:javascript
复制
// script.js:

import * as MyPackage from "./mypackage";
const a = new MyPackage.ClassA();

// or

import { ClassA } from "./mypackage";
const a = new ClassA();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56714693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档