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 相关文章推荐
JavaScript 验证浏览器是否支持javascript的方法小结
May 17 Javascript
Extjs在exlipse中设置自动提示的方法
Apr 07 Javascript
jQuery对表单元素的取值和赋值操作代码
May 19 Javascript
javascript五图轮播切换实用版
Aug 17 Javascript
使用js的replace()方法查找字符示例代码
Oct 28 Javascript
JavaScript使用RegExp进行正则匹配的方法
Jul 11 Javascript
Es6 写的文件import 起来解决方案详解
Dec 13 Javascript
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
JavaScript继承的特性与实践应用深入详解
Dec 30 Javascript
vue插槽slot的理解和使用方法
Apr 03 Javascript
vue 微信扫码登录(自定义样式)
Jan 06 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
Mar 03 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 身份验证方面的函数
2009/10/11 PHP
浅析php header 跳转
2013/06/17 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
使用pandas read_table读取csv文件的方法
2018/07/04 Python
Django教程笔记之中间件middleware详解
2018/08/01 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
大整数数相乘的问题
2012/07/22 面试题
实习生自荐信范文分享
2013/11/27 职场文书
怎样写演讲稿
2014/01/04 职场文书
面试后感谢信怎么写
2014/02/01 职场文书
会计助理岗位职责
2014/02/17 职场文书
环保建议书200字
2014/05/14 职场文书
老干部工作先进事迹
2014/08/17 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书