js模块加载方式浅析


Posted in Javascript onAugust 12, 2017

简介: 前端模块化开发日渐鼎盛,如何将零散的插件或者是普通的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 相关文章推荐
用js实现控制内容的向上向下滚动效果
Jun 26 Javascript
JavaScript Konami Code 实现代码
Jul 29 Javascript
详解JavaScript中getFullYear()方法的使用
Jun 10 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
Oct 31 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
Sep 03 jQuery
JavaScript 2018 中即将迎来的新功能
Sep 21 Javascript
VUE搭建手机商城心得和遇到的坑
Feb 21 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
Aug 09 Javascript
vue中动态select的使用方法示例
Oct 28 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
Feb 06 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
Jul 26 Javascript
uniapp电商小程序实现订单30分钟倒计时
Nov 01 Javascript
浅谈angular2 组件的生命周期钩子
Aug 12 #Javascript
Node.js pipe实现源码解析
Aug 12 #Javascript
vue实现移动端图片裁剪上传功能
Aug 18 #Javascript
JavaScript实现图片切换效果
Aug 12 #Javascript
vue表单绑定实现多选框和下拉列表的实例
Aug 12 #Javascript
浅谈angularJS的$watch失效问题的解决方案
Aug 11 #Javascript
EasyUI在Panel上动态添加LinkButton按钮
Aug 11 #Javascript
You might like
PHP网站提速三大“软”招
2006/10/09 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
PHP对象、模式与实践之高级特性分析
2016/12/08 PHP
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
jQuery自制提示框tooltip改进版
2016/08/01 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
使用python绘制人人网好友关系图示例
2014/04/01 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
Python 互换字典的键值对实例
2019/02/12 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
python socket 聊天室实例代码详解
2019/11/14 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
视光学专业毕业生推荐信
2013/10/28 职场文书
社区党务公开实施方案
2014/03/18 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
岳庙导游词
2015/02/04 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python
mysql的Buffer Pool存储及原理
2022/04/02 MySQL