Einführung:
In Angular-Anwendungen besteht die Notwendigkeit, externe Skripte einzubinden entstehen kann. Das direkte Hinzufügen von
Dynamisches Laden von Skripten:
Zum dynamischen Laden Skripts können wir die folgenden Schritte ausführen:
Beispielcode:
Unten finden Sie eine Beispielimplementierung des Skriptspeichers und -dienstes:
interface Scripts { name: string; src: string; } // Script store with sample script definitions export const ScriptStore: Scripts[] = [ { name: 'filepicker', src: 'https://api.filestackapi.com/filestack.js' }, { name: 'rangeSlider', src: '../../../assets/js/ion.rangeSlider.min.js' } ]; @Injectable() export class ScriptService { private scripts: any = {}; constructor() { ScriptStore.forEach((script: any) => { this.scripts[script.name] = { loaded: false, src: script.src }; }); } load(...scripts: string[]) { var promises: any[] = []; scripts.forEach((script) => promises.push(this.loadScript(script))); return Promise.all(promises); } loadScript(name: string) { return new Promise((resolve, reject) => { // Check if script is already loaded if (this.scripts[name].loaded) { resolve({ script: name, loaded: true, status: 'Already Loaded' }); } else { let script = document.createElement('script'); script.type = 'text/javascript'; script.src = this.scripts[name].src; script.onload = () => { this.scripts[name].loaded = true; resolve({ script: name, loaded: true, status: 'Loaded' }); }; script.onerror = (error: any) => resolve({ script: name, loaded: false, status: 'Loaded' }); document.getElementsByTagName('head')[0].appendChild(script); } }); } }
Verwendung:
In die Komponente oder den Dienst, in den Sie Skripte dynamisch laden möchten, fügen Sie den ScriptService ein. Rufen Sie dann innerhalb einer Methode die Lademethode wie folgt auf:
this.script.load('filepicker', 'rangeSlider').then(data => { console.log('script loaded ', data); }).catch(error => console.log(error));
In diesem Beispiel werden sowohl Filepicker- als auch RangeSlider-Skripte dynamisch geladen. Sie können den ScriptStore jetzt so konfigurieren, dass er Skripte je nach Bedarf entweder von einem CDN oder einem lokalen Ordner lädt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3