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 相关文章推荐
阻止子元素继承父元素事件具体思路及实现
May 02 Javascript
JQuery中使用ajax传输超大数据的解决方法
Jul 14 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
详解Bootstrap插件
Apr 25 Javascript
js实现精确到秒的倒计时效果
May 29 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
AngularJS基础 ng-src 指令简单示例
Aug 03 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
Mar 13 Javascript
详解webpack分离css单独打包
Jun 21 Javascript
详解利用jsx写vue组件的方法示例
Jul 17 Javascript
BootStrap模态框不垂直居中的解决方法
Oct 19 Javascript
Angular4学习教程之HTML属性绑定的方法
Jan 04 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/08/24 PHP
php数组的一些常见操作汇总
2011/07/17 PHP
php 定义404页面的实现代码
2012/11/19 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
推荐dojo学习笔记
2007/03/24 Javascript
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
浅析BootStrap栅格系统
2016/06/07 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
Python过滤列表用法实例分析
2016/04/29 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
Python中six模块基础用法
2019/12/08 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
python 读取串口数据的示例
2020/11/09 Python
python 实用工具状态机transitions
2020/11/21 Python
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
学生出入校管理制度
2014/01/16 职场文书
接待员岗位责任制
2014/02/10 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
小学班主任事迹材料
2014/12/17 职场文书
项目建议书
2015/02/04 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书