簡體   English   中英

動態加載腳本(angularJs)

[英]Load scripts dynamically (angularJs)

我的angularjs應用程序中有一些庫和依賴項,我只想用一個腳本加載所有這些,因為我有三個應用程序都使用了此依賴項。 其實我有這個自定義腳本:

var initDependencies = {

  _dependencies: [
    '/path/to/jquery.js', '/path/to/angular.js', 'path/to/bootstrap.js', ...];
  ],

  _currentFolder: '/' + window.location.pathname.split('/')[1],

/**
 * Constructor
 */
  init: function() {
    initDependencies.createDependencies();
  },

/**
 * Retorna el folder actual
 */
  getCurrentFolder : function() {
    return initDependencies._currentFolder;
  },

/**
 * Retorna el array de dependencia
 */
  getDependencies: function() {
    return initDependencies._dependencies; 
  },

/**
 * Crea un nuevo tag <script> con su correspondiente src
 * @param {*} src 
 */
  createNewDependencie : function(src) {
    var myScript = document.createElement("script");
    myScript.type = "text/javascript";
    myScript.src = src;
    console.log('myScript :', myScript);
    document.body.appendChild(myScript);
  },

/**
 * Crea todas las dependencias
 */
  createDependencies: function() {
    for (var dependencie in initDependencies.getDependencies()) {
        var src = this.getCurrentFolder() + initDependencies.getDependencies()[dependencie];
        initDependencies.createNewDependencie(src);
    }
  }
}

document.addEventListener("DOMContentLoaded",initDependencies.init);

但是我在我的dependencies數組中存在另一個依賴項錯誤,實際上我有很多類型錯誤:

Uncaught TypeError: Cannot read property 'module' of undefined (我想angular變量未定義)。

如何動態加載依賴項和庫?

這些事情通常是通過任務運行器為特定目標預先構建來完成的。 GruntGulp易於拾取,可在NodeJS上運行,易於安裝,值得花一兩個小時根據環境或目標部署來設置構建過程。 這使您可以擁有越來越少的JS代碼文件。

如果您想忽略構建器,可以自己編寫代碼,NodeJS也具有內置函數來處理您在上面編寫的大部分內容。

請記住,如果您在瀏覽器中執行內容,則它無權處理OS的文件系統等。另一方面,NodeJS將會擁有並且將允許您預構建所有想要的東西。

這可能更簡單,更快捷,因為您可以立即將所有您需要的js文件進行丑化,縮小和加載,而不是稍后在用戶等待某些結果時加載它們,並且您正在加載MB的庫。那一刻,才發出請求。

依賴關系生態系統還可以為您跟蹤版本(如果您將NPM與NodeJS一起使用),隨着時間的流逝,當依賴於維護依賴關系時,這將是一個巨大的好處。

設置完成后,您可以從文件中復制正確配置的依賴文件npm init,運行builder for specific environment選項,然后您可以使用舊文件系統中的文件系統組織在10秒內設置一個新應用,並設置一些區別。 它還允許您以一種更實用的方式存儲所有內容(涉及版本控制)。 您不想在存儲庫中構建用於構建最終應用程序的1000個依賴文件,而希望在2個純文本文件中具有npm和構建器配置。

我希望這鼓勵了您研究它,因為我相信在任何嚴肅的項目中,這都是要走的路,而不是您要嘗試的路。

我會在評論中放這個,但是太長了,聲明“使用構建器來處理它”聽起來像什么都沒解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM