Правильный способ написания внешних библиотек 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, который вы видели - транспортер может добавить это для вас. Конечно, вы можете также выпустить обе версии.

Другие вопросы по тегам