Предоставление машинописной функции для потребления html страницы для вызова - PullRequest
1 голос
/ 25 марта 2020

В настоящее время я пишу модульную библиотеку машинописного текста, которая отделена от участка js. Эта библиотека будет использоваться приложениями для определенных c функций. Приложение / веб-страница потребителя добавит ссылку в html на мою библиотеку, например.

<script defer src='mylib.js' />

Я хочу предоставить в моей библиотеке одну функцию, чтобы потребители могли вызывать и инициализировать мою библиотеку. Каков наилучший способ раскрыть эту функцию?

1 Ответ

0 голосов
/ 25 марта 2020

Вы можете использовать концепцию сервиса / провайдера. Однако для создания сервиса вам нужен одноэлементный объект. JS это сложно сделать. Я прочитал несколько статей, как создать синглтон. Ниже приведен образец может соответствовать вашему требованию.

const singleton = clName => {
  return new Proxy(clName.prototype.constructor, {
    inst: null,
    construct: (target, args) => {
      if (!this.inst) this.inst = new target(...args);
      return this.inst;
    }
  });
};
class Util {
  constructor(configs) {
    this.time = +new Date();
    this.configs = configs;
  }
  printMsg() {
    console.log(this.msg);
  }
}

UtilClass = singleton(Util);

const myObj = new UtilClass({ timeout: 100 });
console.log(myObj)
const myObj2 = new UtilClass({ timeout: 200 });
console.log(myObj2)
.as-console-wrapper { max-height: 100% !important; top: 0; color: blue; background: #fff}
...