Я пытаюсь загрузить содержимое файла 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
Но мне действительно не нравится это, поскольку я считаю, что мне придется дополнить глобальную переменную этимхотя пока не знаю как.