JavaScript モジュールがどのようにロードされるかを解析する

巴扎黑
リリース: 2017-08-15 10:08:57
オリジナル
1513 人が閲覧しました

この記事では、主に js モジュールの読み込み方法の主要な学習教材を詳細に紹介します。興味のある方は参考にしてください。

はじめに: フロントエンドのモジュール開発がますます盛んになり、どのように組み合わせるか。断片化されたプラグインまたは通常の JS スクリプト ファイルの統合管理と参照は、多くの開発者の共通の目標です。最近、特にフロントエンドのことに興味があり、自分のアイデアも交えて、ちょっとしたことを書いてみます。物は素晴らしいというわけではありませんが、それでも少し使いやすいと感じます。

以下はショートコードです。

中心的なアイデア: プログラムの実行中に、事前にパッケージ化されたモジュールのロードメソッドを外部から呼び出し、パラメータ(メインディレクトリとモジュール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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート