javascript使用eslint每个文件一个类

时间:2018-05-07 16:07:22

标签: javascript eslint

我想使用每个文件一个类的javascript类。它是使用eslint的大型项目的一部分。我开始时:

/*global CSReport*/
/*global CSManager*/
class CSMain {
    constructor() {
        this.report = new CSReport();
        this.manager = new CSManager(this.report);
    }
    launchReport(...
}

但是,eslint会生成错误,说明CSMain已定义但从未使用过。这导致使用导出和导入的想法似乎比使一切全局更好(旁注:主要面前的CS是避免全局冲突的旧式方法)

问题是如何把它放在一起。发布版本将是一个(uglified)文件,因此当它们在(例如)csCompiled.js中连接在一起时,类文件名将不再存在。

问题:

  1. 导入使用文件名。我应该在连接之前使用CSCompiled.js名称而不是文件名吗?
  2. 我想为每个班级设一个模块或模块吗?
  3. 我是否需要导出每个类并导入它使用的每个类?
  4. 我不完全确定角度如何访问此代码但我想导入csMain。
  5. 我试图找到答案,但我只找到不使用ecmascript 6和课程的旧帖子。如果答案存在,我不知道该怎么做。

    背景:
    主项目使用角度1.由于遗留原因,此代码是分开的。它目前用java编写,使用gwt,但我们想转移到javascript以消除对gwt的依赖。它总共转换了大约30-40个文件(类)。

    代码从服务器获取并处理来自报告请求的数据。在将其交还给UI的其余部分之前,已经进行了大量的预处理。

    我使用javascript为已建立的项目使用angular,但缺乏如何创建新项目的专业知识。

    我正在尝试使用基本的javascript,所以如果(例如)我们从angular 1转到当前版本,它就不会需要更新。我还不知道这是否是一个很好的方法。

1 个答案:

答案 0 :(得分:0)

ESLint抱怨是因为您没有导出您创建的类,因此,其他模块无法访问它。你可以用最后一行简单的方法解决这个问题

export default CSMain;
  

导入使用文件名。我应该使用CSCompiled.js名称吗?   比串联前的文件名?

在编译/ transpile / uglify / etc之前使用文件名。之后它将全部变为1个文件,捆绑商将为您处理。

  

我是否需要每个班级的单个模块或模块?

完全可选,我喜欢每个文件有1个类,然后是1个文件(index.js),列出该模块中的所有类。

  

我是否需要导出每个类并导入它使用的每个类?

是的,您需要导入模块将使用的所有内容,并导出所有应该公开的内容或“可导入”其他模块。

  

我不完全确定角度如何访问此代码但我想要导入csMain。

这一切都取决于您如何导出文件。确保导入模块/文件导出的相同名称。