Sie können auch Funktionen aus anderen Skripten fast so aufrufen, als hätten Sie alle direkt importiert. Sie können dies mithilfe von Konstruktoren und benutzerdefinierten Prototypen tun.
zunächst die Hintergrund-Skripte zum Mainfest, um den Zugang hinzufügen, wie sowie Skripte in unserem popup.html vor dem Body-Tag Schließung verbunden:
manifest.json
...
"background": {
"persistent": false,
"scripts": [
"foo.js",
"bg.js"
]},
...
In der Datei foo.js erstellen wir unseren Objektprototyp. Ich bin ein Modul Muster verwenden, weil wir es wollen sonst privat sein:
foo.js
(() => {
console.log('foo loaded'); // check that the script has loaded
window.test = window.test || {}; // check for or create the object
test.FooFunc = function() { // setup a constructor to hold defaults
this.foo = 'bar',
this.time = '15000'
}
test.FooFunc.prototype = { // add our prototype with a single method
callConsole: (text) => {
console.log('FooFunc method loaded from ' + text);
}
}
})();
Vom bg.js-Datei können wir diese Funktion ständig aufrufen, indem wir einen neuen Test Objekt instanziieren. die Skripte Feuer, einschließlich unserer Funktion
bg.js
(() => {
console.log('bg loaded'); // check that the script has loaded
var testProto = new test.FooFunc; // instantiate new test object
testProto.callConsole('Background!');
})();
Nach dem Laden der Dateien, und sobald das Symbol der Pop-up öffnet geklickt wird. Sie sollten so etwas wie dies in der Konsole sehen:
foo loaded
bg loaded
FooFunc method loaded from Background!
Verwenden mehrerer Hintergrundskripte
Natürlich können wir weiterhin mehrere Skripte in die Mischung hinzufügen, indem Sie sie einfach auf den Hintergrund Skript-Liste hinzufügen und popup.html vor dem bg.js, * in der Reihenfolge, in der sie aufgerufen werden sollen **. Sobald hinzugefügt, machen Sie neue Prototypen zum Test Objekt aus den neuen Skripten in der gleichen Manor, und dann Methoden zu jedem hinzufügen (test.Prefs ist ein großer zu machen).
* Skripts werden in der Reihenfolge geladen, in der sie aufgerufen werden. Wenn der Prototyp also nicht vor einem Skript erstellt wird, das darauf zugreifen möchte, kann der neue Prototyp nicht gefunden werden. Jedes Skript kann auf die Prototypen zugreifen, solange sie vor dem Aufruf dieser Skripte erstellt werden.
Für ein großartiges Beispiel in einem Anwendungsfall können Sie Chrome's Buildbot Monitor auschecken. Es zeigt nicht nur einen großartigen Prozess des privaten Arbeitens mit mehreren Skripts, sondern auch, wie Sie ein einzelnes Objekt verwenden können, um mehrere Einstellungen, Prototypen und Methoden für den Zugriff auf Ihre Erweiterung zu speichern.
Großartig, der ganze Grund, warum ich nach Ihrer Lösung suchte, war DRY zu verbessern. Ihr zweiter Hinweis hilft noch mehr !! Vielen Dank – kas