0

我目前用 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';

仅仅是风格上的差异吗?

我知道例如只导入登录而不使用注销方法是没有意义的,所以导出一个包含所有方法的类听起来不错,但另一种方式的优点是不必一直使用“this”关键字。

4

1 回答 1

2

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

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

// user.js

export default class User {}
export function getUserInfo()


// ... other file ...

import User, {getUserInfo} from 'user.js'

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

最终,这取决于您期望/希望如何使用您的模块。

于 2015-09-22T14:37:02.663 回答