js模块加载方式浅析

发布时间 - 2026-01-11 02:45:43    点击率:

简介: 前端模块化开发日渐鼎盛,如何将零散的插件或者是普通的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']
          ], //模块数组
 });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # 模块  # 加载  # Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模  # Node.js模块加载详解  # AngularJs动态加载模块和依赖注入详解  # node.js使用require()函数加载模块  # 深入探寻seajs的模块化与加载方式  # 利用Dojo和JSON建立无限级AJAX动态加载的功能模块树  # seaJs的模块定义和模块加载浅析  # Windows下使用apache模块实现合并多个js、css提高网页加载速度  # in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案  # 根据配置文件加载js依赖模块  # 或者是  # 自己的  # 也会  # 感兴趣  # 人是  # 如何将  # 大家多多  # 装好  # 就可以  # 不匹配  # 主目录  # protocol  # origin  # host  # location  # docker  # prototype  # _origin  # _moduleArr 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网页设计与网站制作内容,怎样注册网站?  Python制作简易注册登录系统  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  桂林网站制作公司有哪些,桂林马拉松怎么报名?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  javascript读取文本节点方法小结  如何在阿里云通过域名搭建网站?  如何为不同团队 ID 动态生成多个独立按钮  高防服务器如何保障网站安全无虞?  Laravel distinct去重查询_Laravel Eloquent去重方法  如何在橙子建站中快速调整背景颜色?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  香港服务器网站卡顿?如何解决网络延迟与负载问题?  5种Android数据存储方式汇总  如何快速上传自定义模板至建站之星?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  北京网站制作的公司有哪些,北京白云观官方网站?  LinuxShell函数封装方法_脚本复用设计思路【教程】  JavaScript如何操作视频_媒体API怎么控制播放  Android Socket接口实现即时通讯实例代码  Laravel如何生成URL和重定向?(路由助手函数)  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  高端企业智能建站程序:SEO优化与响应式模板定制开发  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel如何使用Vite进行前端资源打包?(配置示例)  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  敲碗10年!Mac系列传将迎来「触控与联网」双革新  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  微信h5制作网站有哪些,免费微信H5页面制作工具?  Thinkphp 中 distinct 的用法解析  Swift中switch语句区间和元组模式匹配  Laravel中的withCount方法怎么高效统计关联模型数量  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  zabbix利用python脚本发送报警邮件的方法  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  如何用搬瓦工VPS快速搭建个人网站?  深入理解Android中的xmlns:tools属性  如何快速生成专业多端适配建站电话?