相关疑难解决方法(0)

ES6模块:导出单类静态方法或多个单独方法

我正在使用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'语法是我首选的方法,因为它允许您使用点符号(引用模块和方法)帮助代码可读性.当我可能只使用其中一种方法时,这是否有性能影响?

javascript module class ecmascript-6

38
推荐指数
2
解决办法
2万
查看次数

Javascript/Typescript:导出单个函数或 const 类有什么区别?

我正在 VueJs、Typescript 和 WebPack 中开发一个 Web 应用程序,我对如何管理/拆分功能组(实用程序和服务)感到有些困惑。

我在 GitHub 的各种项目中看到一些函数是直接从文件 ex 中声明和导出的:

实用程序.ts

export function Sum(a:number, b:number):number{
    return a+b;
}
Run Code Online (Sandbox Code Playgroud)

这可以与导入一起使用:

import {Sum} from "./utilities.ts"

let result = Sum(5,6);
Run Code Online (Sandbox Code Playgroud)

另一个常见的解决方案是声明一个 const 类:

otherUtilities.ts

export const OtherUtilities = {
    Sum(a:number, b:number) : number => {
        return a+b;
    },
    
    Hello() : string => {
        return "Hello";
    }
}
Run Code Online (Sandbox Code Playgroud)

并导入为:

import {OtherUtilities} from "./otherUtilities.ts"

let result = OtherUtilities.Sum(5,6);
Run Code Online (Sandbox Code Playgroud)

有什么区别?

过去,JS 存在名称冲突问题,但现在通过 Loaders 的导出/导入技术,这个问题应该已经过时了,对吧?

谢谢

javascript typescript ecmascript-6 es6-modules

8
推荐指数
1
解决办法
1万
查看次数