从ES6模块导出单例类的优缺点

时间:2015-09-22 14:26:54

标签: javascript node.js ecmascript-6 es6-module-loader

我目前正在开发基于带有Babel的node.js的项目。

我有一个userService.js文件,该文件应该是一个单独的文件并管理我想要的所有用户并保持用户的状态。

为什么我会这样写这个模块:

class UserService { //methods //properties}
export default new UserService(); //so it is a singleton

并以这种方式导入:

import userService from 'userService';

而不是这样:

export function login() {} //other functions etc
export var user={}

并将其导入为:

import * as userService from 'userService&#39 ;;

它只是风格差异吗?

我得到了这个例子,例如只导入登录而不使用logout方法没有意义,所以导出一个包含所有方法的类听起来不错,但另一方面的优点是不必使用"这个& #34;一直都是关键字。

1 个答案:

答案 0 :(得分:0)

您可能希望将一组方法分组到一个文件中,而这些文件并不一定要总是一起导入。例如,实用程序类可能会列出几个您只想根据需要一次导入一个函数。

导出default,无论是类封装还是单个函数,都可以清楚地说明该模块的主要用途是什么。您还可以组合默认导出和命名导出:

class User {}
function getUserInfo()

export default User;
export {getUserInfo};

// ... other file ...

import User, {getUserInfo} from 'aboveFilename'

var user = new User();
getUserInfo(user);

最终,这取决于您对模块的预期/期望。