我正在使用ECMAScript6模块.从以下选项中导出/导入模块中的多个方法的正确方法是什么?
单类静态方法:
//------ myClass.js ------
export default class myClass {
static myMethod1() {
console.log('foo');
}
static myMethod2(args...) {
console.log('bar');
}
}
//------ app.js ------
import myClass from 'myClass';
myClass.myMethod1(); //foo
Run Code Online (Sandbox Code Playgroud)
多种导出方法:
//------ myMethods.js ------
export function myMethod1() {
console.log('foo');
}
export function myMethod2() {
console.log('bar');
}
//------ app.js ------
import {myMethod1, myMethod2} from 'myMethods';
myMethod1() //foo;
//OR
import * as myMethods from 'myMethods';
myMethods.myMethod1() //foo;
Run Code Online (Sandbox Code Playgroud)
1)导出:一类只是静态方法感觉有点"代码味道",但同样单独导出所有内容确实感觉有点冗长.它只是开发人员偏好还是存在性能影响?
2)导入:'*as'语法是我首选的方法,因为它允许您使用点符号(引用模块和方法)帮助代码可读性.当我可能只使用其中一种方法时,这是否有性能影响?
在ES6中我们可以做匿名类:
var entity = class {
}
Run Code Online (Sandbox Code Playgroud)
但我们也可以实例化它:
var entity = new class {
constructor(name) { this.name = name; }
getName() { return this.name; }
}('Foo');
console.log(entity.getName()); // Foo
Run Code Online (Sandbox Code Playgroud)
背后做了什么,它带来了什么好处以及它带来了什么警告?
javascript oop anonymous-function javascript-objects ecmascript-6
我有一个像这样的单例类的依赖项:
// dependency.js
class Dependency {
foo() { ... }
}
export default new Dependency();
Run Code Online (Sandbox Code Playgroud)
我试图用 Jest 来模拟这个类,但由于它是一个单身人士,我不知道如何模拟它。我试过这个:
jest.mock('../Dependency', () => {
return { foo: jest.fn() };
});
Run Code Online (Sandbox Code Playgroud)
但这没有用。
ecmascript-6 ×3
javascript ×3
class ×1
es6-class ×1
jestjs ×1
module ×1
oop ×1
unit-testing ×1