Как связать html-файл с js-файлом из node_modules? - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь добавить \node_modules\sip.js\dist\sip.min.js в мой HTML-файл.Я попытался импортировать как import * as SIP from 'sip.js/dist/sip'; в мой component.ts, но это работает, только если я вызываю какую-то функцию из него.Но мне нужен мой HTML-файл, чтобы прочитать это sip.min.js.

Также я попытался загрузить локальные файлы и добавил в свой HTML-файл

       <script src="js/sip-0.5.0.js"></script>
       <script src="js/ua.js"></script>

и добавил:

   public loadScript() {
        console.log("preparing to load...");
        let node = document.createElement('script');
        node.src = this.url;
         node.type = "text/javascript";
        node.async = true;
        node.charset = "utf-8";
        document.getElementsByTagName("head")[0].appendChild(node);
   }

   ngOnInit() {
        this.loadAPI = new Promise(resolve => {
            console.log("resolving promise...");
            this.loadScript();
        });
   }

Но это не работает

1 Ответ

0 голосов
/ 31 мая 2019

Вы можете добавить их в тело.Также ваши пути должны быть доступны со стороны клиента.Но добавление сценариев в событие Init является плохой практикой - оно добавляется каждый раз при создании компонента.Я добавил сценарии в службу - она ​​выполняется один раз.

     const files = ['js/sip-0.5.0.js','js/ua.js']
     files.forEach((file) => {
                const fileRef = document.createElement('script');
                fileRef.setAttribute('type', 'text/javascript');
                fileRef.setAttribute('src',  file);
                fileRef.onload = function () {
                    console.log('loaded' + file);
                };
                document.body.appendChild(fileRef);
            });

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

...