Как динамически загружать сторонние библиотеки, которые предлагают CDN, только в приложении Angular 7? - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь загрузить содержимое файла javascript из CDN обязательно в файле машинописного текста, чтобы я мог использовать его в правильных хуках жизненного цикла, и чтобы я мог гарантировать, что он загружается только тогда, когда он первыйНужен.

Например, googleCDN для загрузки Jquery:

Я не хочу добавлять библиотеку src на мою страницу index.html, и я не хочу добавлять ее в свой angular. Файл конфигурации json, потому что я не хочу использовать эту библиотеку во многих местах моего приложения, и поэтому я не хочу всегда заставлять своих пользователей загружать ее.

Я экспериментировал с методом HttpClient.JsonPпоскольку сервер CDN, от которого я пытаюсь запросить библиотеку, использует CORS, тем не менее, я считаю, что поскольку ответ не JSON, а скорее функция, он не работает.

пример кода:

load<T = any>(): Observable<T> {
    return this.http
        .jsonp(
            'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js',
            'callback'
        ) as Observable<T>;
}

с ошибкой:

"JSONP injected script did not invoke callback."

Эта ошибка имеет смысл, я думаю, потому что ответ не является JSON и не заключен в такую ​​функцию, какбраузер ожидает.

Сейчас я пытаюсь использовать такой же метод, как здесь: https://gist.github.com/zainzafar90/1f58a4a04ac17fcf8e7424a053620822#file-dynamic-script-loader-service-ts

Но мне действительно не нравится это, поскольку я считаю, что мне придется дополнить глобальную переменную этимхотя пока не знаю как.

...