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 相关文章推荐
非主流的textarea自增长实现js代码
Dec 20 Javascript
Javascript中Event属性搜集整理
Sep 17 Javascript
Bootstrap插件全集
Jul 18 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
Dec 27 Javascript
Vue2.0 实现移动端图片上传功能
May 30 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
Apr 10 Javascript
前端天气插件tpwidget使用方法详解
Jun 24 Javascript
vue-cli 为项目设置别名的方法
Oct 15 Javascript
VUE实现图片验证码功能
Nov 18 Javascript
js实现图片上传到服务器和回显
Jan 19 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
Jan 21 Javascript
jQuery ajax - getScript() 方法和getJSON方法
May 14 jQuery
浅谈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
制作美丽的拉花
2021/03/03 冲泡冲煮
php读取html并截取字符串的简单代码
2009/11/30 PHP
php一个找二层目录的小东东
2012/08/02 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
laravel入门知识点整理
2020/09/15 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
Python PO设计模式的具体使用
2019/08/16 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
几个SQL的面试题
2014/03/08 面试题
社会实践自我鉴定
2013/11/07 职场文书
升国旗仪式主持词
2014/03/19 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
买房子个人收入证明
2014/10/12 职场文书
经理助理岗位职责
2015/02/02 职场文书
个人借条范本
2015/05/25 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python