2

我见过很多使用以下模式的库 - 例如我刚刚使用的clipboard.js :

var clipboard = new Clipboard(".cpy");

这就是它发挥它的魔力所需要的一切。但这让 ESLint 很恼火:

clipboard is defined but never used (no-unused-vars)

我看过的一些解决方法是:

  • 对“使用”的虚假console.log()调用clipboard
  • /* exported clipboard */- 但我无法让它工作(也许我的 eslint 需要更新?)
  • /* eslint-disable no-unused-vars */- 并希望在项目的其他地方取得最好的成绩
  • 放入varsIgnorePattern选项 - 不是一个非常“快速”的解决方案,并且每个项目都不同

我对其中任何一个都不满意。但是,有没有比var x = new X();实例化库“更好”的模式?或者更好的方式告诉 ESLint 发生了什么?

4

3 回答 3

4

根据此 PR,您现在可以执行每行忽略:

var clipboard = new Clipboard('.cpy') // eslint-disable-line no-unused-vars

这只会影响这一行,并且不会让您的代码库对所有未使用的变量开放。

您以前可以这样做:

/*eslint-disable no-eval*/
var clipboard = new Clipboard('.cpy');
/*eslint-enable*/
于 2015-10-14T14:16:57.840 回答
2

ESLint 就在这里。如果您不需要实例,则无需将其存储在变量中:

new Clipboard('.cpy'); // eslint-disable-line no-new
// no `var clipboard`

当然,通过构造函数执行副作用是一种反模式,但如果Clipboard这样工作,就没有办法绕过它。

于 2015-10-14T14:22:41.990 回答
1

理论上不应该在使用后进行一些清理吗?

 clipboard.destroy();
于 2015-10-16T13:49:13.577 回答