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


相关推荐: Java遍历集合的三种方式  轻松掌握MySQL函数中的last_insert_id()  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  用v-html解决Vue.js渲染中html标签不被解析的问题  动图在线制作网站有哪些,滑动动图图集怎么做?  Java类加载基本过程详细介绍  Linux系统运维自动化项目教程_Ansible批量管理实战  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel如何使用Eloquent进行子查询  Laravel如何处理表单验证?(Requests代码示例)  海南网站制作公司有哪些,海口网是哪家的?  JavaScript Ajax实现异步通信  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  java中使用zxing批量生成二维码立牌  利用 Google AI 进行 YouTube 视频 SEO 描述优化  网站制作报价单模板图片,小松挖机官方网站报价?  如何快速搭建高效简练网站?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Laravel如何使用Blade模板引擎?(完整语法和示例)  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  javascript中的try catch异常捕获机制用法分析  企业网站制作这些问题要关注  如何在阿里云高效完成企业建站全流程?  JavaScript如何实现错误处理_try...catch如何捕获异常?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  个人网站制作流程图片大全,个人网站如何注销?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  如何选择PHP开源工具快速搭建网站?  音响网站制作视频教程,隆霸音响官方网站?  如何彻底卸载建站之星软件?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  JavaScript常见的五种数组去重的方式  利用vue写todolist单页应用  Laravel怎么上传文件_Laravel图片上传及存储配置  如何快速配置高效服务器建站软件?  如何在建站之星网店版论坛获取技术支持?  如何在腾讯云服务器快速搭建个人网站?  香港服务器如何优化才能显著提升网站加载速度?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel如何创建自定义Facades?(详细步骤)  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?