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 相关文章推荐
使用Modello编写JavaScript类
Dec 22 Javascript
jQuery简单实现banner图片切换
Jan 02 Javascript
EasyUI中combobox默认值注意事项
Mar 01 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
Mar 18 Javascript
jQuery Validate表单验证入门学习
Dec 18 Javascript
Bootstrap select实现下拉框多选效果
Dec 23 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
Apr 22 Javascript
微信小程序图片宽100%显示并且不变形
Jun 21 Javascript
js实现1,2,3,5数字按照概率生成
Sep 12 Javascript
Vue-Router2.X多种路由实现方式总结
Feb 09 Javascript
微信小程序实现即时通信聊天功能的实例代码
Aug 17 Javascript
详解vue如何使用rules对表单字段进行校验
Oct 17 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函数
2010/01/11 PHP
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
jQuery实现的类flash菜单效果代码
2010/05/17 Javascript
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
详解jquery和vue对比
2019/04/16 jQuery
python实现提取百度搜索结果的方法
2015/05/19 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
汽车检测与维修专业求职信
2013/10/30 职场文书
青年教师典范事迹材料
2014/01/31 职场文书
可贵的沉默教学反思
2014/02/06 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
525心理健康活动总结
2015/05/08 职场文书
禁毒主题班会教案
2015/08/14 职场文书
话题作文之关于呼唤
2019/11/29 职场文书