js模块加载方式浅析

 更新时间:2017年08月12日 14:15:15   作者:深海里的一条鱼  
这篇文章主要为大家详细介绍了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']
          ], //模块数组
 });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 用倒置滤镜把div倒置,再把table倒置。

    用倒置滤镜把div倒置,再把table倒置。

    用倒置滤镜把div倒置,再把table倒置。...
    2007-07-07
  • JavaScript reduce方法使用方法介绍

    JavaScript reduce方法使用方法介绍

    Reduce是个纯函数,即只要传入相同的参数,每次都应返回相同的结果。不要把和处理数据无关的代码放在Reduce里,让Reduce保持纯净,只是单纯地执行计算,这篇文章主要介绍了Redux拆分reduce函数流程
    2022-10-10
  • JavaScript delete 属性的使用

    JavaScript delete 属性的使用

    JavaScript对象数据结构基本形式:{ key : value},其中key:value就为对象的一个属性,key作为属性名称,value为属性值,这值可以是任何JavaScript数据类型。
    2009-10-10
  • 利用js定义一个导航条菜单

    利用js定义一个导航条菜单

    本文主要介绍了利用js定义一个导航条菜单的方法。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • JS常见问题之为什么点击弹出的i总是最后一个

    JS常见问题之为什么点击弹出的i总是最后一个

    最近有很多朋友问我,为什么点击弹出的i总是最后一个,于是抽时间写了这篇文章,特此分享到脚本之家平台,供大家参考
    2016-01-01
  • 支付宝小程序自定义弹窗dialog插件的实现代码

    支付宝小程序自定义弹窗dialog插件的实现代码

    支付宝小程序官方提供的alert提示框、dialog对话框、model弹窗功能比较有限,有些都不能随意自定义修改的。这篇文章主要介绍了支付宝小程序自定义弹窗dialog插件的实现代码,需要的朋友可以参考下
    2018-11-11
  • 浅谈js常用内置方法和对象

    浅谈js常用内置方法和对象

    下面小编就为大家带来一篇浅谈js常用内置方法和对象。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • js实现超酷的照片墙展示效果图附源码下载

    js实现超酷的照片墙展示效果图附源码下载

    这篇文章主要介绍了超酷的照片墙展示效果图附源码下载的相关资料,需要的朋友可以参考下
    2015-10-10
  • javascript获取时间戳的5种方法详解

    javascript获取时间戳的5种方法详解

    这篇文章主要介绍了javascript获取时间戳的5种方法详解,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 移动端效果之IndexList详解

    移动端效果之IndexList详解

    这篇文章主要为大家详细介绍了移动端效果之IndexList,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10

最新评论