Правильный способ написания внешних библиотек JavaScript
Я создал класс / библиотеку. и я использовал новый синтаксис класса с конструктором и его методами, что теперь? что я должен положить в него для использования этого во внешнем файле JS?
У меня есть что-то вроде этого
class LoadBalancer {
constructor() {/*...*/}
method1(...bla) {/*...*/}
}
Должен ли я поставить наверху use strict
?
'use strict';
Может быть, поместить мой класс в самоисполняющихся анонимных функций? или использовать export
с моим именем класса?
Я видел много файлов.js, которые имеют такой синтаксис:
(function (root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define("EventBus", [], factory);
else if(typeof exports === 'object')
exports["EventBus"] = factory();
else
root["EventBus"] = factory();
})(this, function() { /*....
their functions and libraries declaration goes here
.....*/
return whatEverNewFunc();
});
Но я не знаю, что это значит и что произойдет, если вы просто не используете их или каковы преимущества, что если я просто размещу свой class LoadBalancer {/*...*/}
в файле loadBalancer.js, и это все.
1 ответ
Да, я бы рекомендовал написать модуль ES6 с export
утверждение для вашего класса (и, возможно, другие вещи, которые вы хотите экспортировать). Вам даже не нужно ставить "use strict";
это неявно в модулях ES6.
Выпустите свою библиотеку либо как модуль ES6 (для любой современной среды, так и для сборщиков или транспортеров), или перенесите ее сами и выпустите ее версию со стилем UniversalModuleDefinition, который вы видели - транспортер может добавить это для вас. Конечно, вы можете также выпустить обе версии.