Maison  >  Article  >  interface Web  >  Analyser la façon dont les modules JavaScript sont chargés

Analyser la façon dont les modules JavaScript sont chargés

巴扎黑
巴扎黑original
2017-08-15 10:08:571511parcourir

Cet article présente principalement en détail le matériel d'apprentissage principal de la méthode de chargement de module js, qui a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

Introduction : Développement modulaire frontal. est de plus en plus populaire. Comment gérer et référencer uniformément des plug-ins dispersés ou des fichiers de script js ordinaires est un objectif commun à de nombreux développeurs. Je suis engagé dans le développement .net. Récemment, j'ai été particulièrement intéressé par certaines choses front-end, je vais également essayer d'y intégrer certaines de mes propres idées et d'écrire quelques petites choses. Le truc n'est pas génial, mais il semble quand même un peu pratique à utiliser.

Ce qui suit est un code court.

Idée centrale : En appelant en externe la méthode de chargement du module pré-encapsulé, en passant des paramètres (y compris le répertoire principal et le répertoire js ou css du module), pendant que le programme est en cours d'exécution, il ajoutera dynamiquement le code CSS ou js correspondant à la balise head, afin que vous puissiez utiliser le style ou la méthode du fichier référencé.

Fichier source :


(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))

Appel :


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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn