导入模块只是为了运行它

时间:2016-07-15 14:13:42

标签: javascript ecmascript-6

我有一个JavaScript文件,它为我正在使用的表单验证库注册验证器。这些验证器可以通过该库访问,因此我不需要在任何地方导入它,我只需要确保它运行一次。

  1. 如何在es6中以这种方式导入模块?

  2. 项目中最好的地方是什么?我目前在我的主js文件中有所有内容启动,但该文件与表单或数据验证无关,所以感觉有点awkwared

2 个答案:

答案 0 :(得分:4)

  

如何在es6中以这种方式导入模块?

您可以使用

import 'validators/register';

仅导入模块的副作用。

  

项目中最好的地方是什么?

最好的解决方案不是将验证器注册为副作用,而是使用自定义对象装饰验证库。模块结构,即导入这些装饰的地方,很快就会变得明显。

如果您需要使用注册方法,只需将导入放入使用已注册验证器的任何模块中,通常与库本身的导入一起使用。如果您在许多地方需要将库与注册捆绑在一起,您还可以将其考虑在一个额外的模块中。

答案 1 :(得分:3)

这取决于上下文,你在使用Node.JS吗?如果是这样,那么[缓存本机功能](https://nodejs.org/docs/latest/api/modules.html#modules_caching)允许在第一次调用时缓存JS文件,无论写入多少次。如果没有,你可以创建一个Singleton using closures。这将确保它只运行一次。

1:es6 way

import lib from './lib';

2:你可以把它放在main.js上,但如果感觉很尴尬,可以把它放在一个单独的util JS文件中并导入那个。