博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈js模块加载方式(初级)
阅读量:4485 次
发布时间:2019-06-08

本文共 2741 字,大约阅读时间需要 9 分钟。

 1.简介:  前端模块化开发日渐鼎盛,如何将零散的插件或者是普通的js脚本文件统一管理及引用,是众多开发者共同的目标。本人是从事.net开发的,最近对前端的一些东西特别的感兴趣,也会尝试的夹杂一点自己的想法,写一些小东西。东西不牛逼,但是感觉用起来还是方便那么一点的。下面就展示一下简短的小代码。

 2.中心思想:通过外部调用事先封装好的模块加载方法,传入参数(包括主目录及模块js或者css的目录 ),在程序运行的同时,会动态的将相应的css或者是js代码追加引用到head标签内,这样,就可以使用被引用的文件的样式或者方法啦。

1 (function(req) { 2     window._Req= req; 3 })((function($) { 4     var _factory = function() {}; //模块工厂 5     //docker 6     _factory.prototype = { 7         _origin: location.origin || location.protocol + "//" + location.host,//域名地址 8         _aim: null, 9         _config: function(param) {10             var _default = { //默认参数11                     _coreDir: "",12                     _moduleArr: [13                         ['', '']14                     ], //模块数组15                 },16                 _opt = {};17             $.extend(_opt, _default);18             if (typeof param === 'object')19                 $.extend(_opt, param);20             this._aim = _opt;21             this._load();   //加载模块22         },23         _load: function() {24             try {25                 var _modules = this._aim._moduleArr,26                     _core = this._aim._coreDir;27                 _modules.forEach(function(_element) {28                     _element.forEach(function(_ele) {29                         var _index = _ele.lastIndexOf('.'), 30                             _moduleType = _ele.substring(_index + 1), 31                             _moduleDir = _core + '/' + _ele, 32                             _module = null;33                         switch (_moduleType) {34                             case 'js':35                                 _module = document.createElement('script');36                                 _module.src = _moduleDir;37                                 break;38                             case 'css':39                                 _module = document.createElement('link');40                                 _module.href = _moduleDir;41                                 _module.rel = 'stylesheet';42                                 break;43                             default:44                                 console.error("对不起模块类型不匹配");45                                 break;46                         }47                         document.head.appendChild(_module); 48                     });49                 }, this);50             } catch (ex) {51                 throw ex;52             }53         }54     };55     return new _factory(); //返回工厂56 })(jQuery))
源文件
1  _Req._config({2        _coreDir: "../jq-package",3                     _moduleArr: [4                         ['js/ui-dialog.js', 'css/dialog.css']5                     ], //模块数组6   });
调用

 

转载于:https://www.cnblogs.com/diligent-lsh/p/7349653.html

你可能感兴趣的文章
ajax 设置Access-Control-Allow-Origin实现跨域访问
查看>>
去掉ExpandableListView的箭头图标
查看>>
[LeetCode]Binary Tree Level Order Traversal II
查看>>
跨页面传值自动刷新 操作文本与文件夹
查看>>
最完美的毁尸灭迹:皮箱连环弃尸案始末
查看>>
002
查看>>
WCF服务“*”有零个应用程序(非基础结构)终结点。这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务名称匹配的服务元素,或者服务元素中未定义终结点。...
查看>>
cocos2d 读书随笔《cocos2d-x游戏开发技术精讲》
查看>>
Asterisk 代码架构概述
查看>>
中兴电信光纤猫F450获取管理员密码方法
查看>>
申请TexturePacker 或 PhysicsEditor free licenses
查看>>
kafka启动报错&问题解决
查看>>
nginx反向代理下没有获取到正确的clientIP问题发散
查看>>
python周报第一周
查看>>
IBM MQ 创建以及常见问题集锦
查看>>
Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(1)
查看>>
SQL Server 服务器磁盘测试之SQLIO篇(一)
查看>>
sun.misc.Unsafe 详解
查看>>
食堂排队问题的一个实现
查看>>
Git 回滚代码的正确姿势
查看>>