Ответ 1
Класс только статических методов чувствует себя как "запах кода"
Да, действительно. Здесь вам не нужна структура class
! Просто экспортируйте нормальный объект "module":
//------ myMethods.js ------
export default {
myMethod1() {
console.log('foo');
},
myMethod2(args...) {
console.log('bar');
}
};
Я рекомендую ваш второй подход с несколькими экспортами.
экспорт всего индивидуально чувствует себя немного многословным
Ну, вам не нужна структура обертки, поэтому я бы сказал, что это менее шаблонный. Вам просто нужно явно пометить все, что вы хотите экспортировать, что не так уж плохо.
Синтаксис
* as
- это мой предпочтительный метод, так как он позволяет использовать точечную нотацию (ссылаясь как на модуль, так и на метод), помогая читать код.
Это очень личное предпочтение и зависит от типа кода, который вы пишете. Иногда краткость превосходит, но способность явно ссылаться на модуль также может быть полезна. Обратите внимание, что именованный экспорт с использованием * as
и объектов экспорта по умолчанию здесь очень похож, хотя только именованный экспорт позволяет вам напрямую ссылаться на них через import {myMethod1, myMethod2}
.
Имеют ли это последствия для производительности?
Я так не думаю. В настоящее время существующие реализации ES6 еще не нацелены на оптимизацию производительности.
В общем, статические идентификаторы легче разрешать и оптимизировать, чем доступ к ресурсам [1] множественный экспорт и частичный импорт могут теоретически сделать JIT быстрее, и, конечно, меньшим файлам требуется меньше времени для загрузки, Подробнее см. здесь. Там вряд ли будут заметные различия в производительности, вы должны использовать то, что лучше обслуживается.
[1]: пространства имен модулей (import * as ns
) также являются статическими, даже если ns.…
выглядит как доступ динамического свойства