JavaScript 모듈이 로드되는 방식 구문 분석

巴扎黑
풀어 주다: 2017-08-15 10:08:57
원래의
1517명이 탐색했습니다.

이 글은 주로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿