首頁  >  文章  >  web前端  >  解析JavaScript模組的載入方式

解析JavaScript模組的載入方式

巴扎黑
巴扎黑原創
2017-08-15 10:08:571512瀏覽

這篇文章主要為大家詳細介紹了js模組載入方式的初級學習資料,具有一定的參考價值,有興趣的小夥伴們可以參考一下

簡介:前端模組化開發日漸鼎盛,如何將零散的插件或是普通的js腳本檔案統一管理與引用,是眾多開發者共同的目標。本人是從事.net開發的,最近對前端的一些東西特別的感興趣,也會嘗試的夾雜一點自己的想法,寫一些小東西。東西不屌,但是感覺用起來還是方便那麼一點的。

下面就展示一下簡短的小程式碼。

中心思想:透過外部呼叫事先封裝好的模組載入方法,傳入參數(包括主目錄及模組js或css的目錄),在程式運作的同時,會動態的將對應的css或是js程式碼追加引用到head標籤內,這樣,就可以使用被引用的檔案的樣式或方法啦。

原始檔:


(function(req) {
  window._Req= req;
})((function($) {
  var _factory = function() {}; //模块工厂
  //docker
  _factory.prototype = {
    _origin: location.origin || location.protocol + "//" + location.host,//域名地址
    _aim: null,
    _config: function(param) {
      var _default = { //默认参数
          _coreDir: "",
          _moduleArr: [
            ['', '']
          ], //模块数组
        },
        _opt = {};
      $.extend(_opt, _default);
      if (typeof param === 'object')
        $.extend(_opt, param);
      this._aim = _opt;
      this._load();  //加载模块
    },
    _load: function() {
      try {
        var _modules = this._aim._moduleArr,
          _core = this._aim._coreDir;
        _modules.forEach(function(_element) {
          _element.forEach(function(_ele) {
            var _index = _ele.lastIndexOf('.'), 
              _moduleType = _ele.substring(_index + 1), 
              _moduleDir = _core + '/' + _ele, 
              _module = null;
            switch (_moduleType) {
              case 'js':
                _module = document.createElement('script');
                _module.src = _moduleDir;
                break;
              case 'css':
                _module = document.createElement('link');
                _module.href = _moduleDir;
                _module.rel = 'stylesheet';
                break;
              default:
                console.error("对不起模块类型不匹配");
                break;
            }
            document.head.appendChild(_module); 
          });
        }, this);
      } catch (ex) {
        throw ex;
      }
    }
  };
  return new _factory(); //返回工厂
})(jQuery))

呼叫:


_Req._config({
    _coreDir: "../jq-package",
          _moduleArr: [
            ['js/ui-dialog.js', 'css/dialog.css']
          ], //模块数组
 });

以上是解析JavaScript模組的載入方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn