requirejs(shim)处理加载非AMD规范的js库

  使用requirejs加载模块,模块的定义得遵守AMD规范,也即定义模块的时候使用如下函数定义模块:

1 define(function(){
2     var private = function(){
3           console.log(‘私有方法...‘);
4     };
5     return {
6         public:function(){private();}
7     };
8 });

  即使用define包括模块代码,如果想在requirejs中嵌入自己以前的某些代码,但是这些代码没有遵守AMD规范,该怎么办呢?骚年不用担心,require的config中的shim能帮你解决痛苦!例如本人的文件目录结构如下:

我想要在quikTip.js文件中使用framewokr.js提供的对象,但是framework.js是不遵守AMD规范的,在quikTip.js文件中require  framework模块之前必须先处理下framework.js使其符合AMD规范,代码如下:

 1 require.config({
 2         baseUrl:‘js/utily‘,//指定js文件的基路径
 3         shim:{
 4             ‘framework‘:{//这个键名为要载入的目标文件的文件名,不能随便命名否则加载framework.js文件后是拿不到改文件对外提供的接口的。因为这个坑了哥一下午!!!
 5                 exports:‘PXJSFrame‘//exports的值为framework.js提供的 对外接口的名称
 6             }
 7         }
 8     });
 9 require([‘framework‘],function(frame){
10     var PXJSFrame = frame;
11      console.log(frame);//此处就会打印framework.js中对外提供的接口对象啦哈啊哈
12 }
时间: 2025-01-09 08:28:38

requirejs(shim)处理加载非AMD规范的js库的相关文章

使用requireJS加载不符合AMD规范的js文件:shim的使用方式和实现原理

我们知道在javascript中定义全局变量有2种方式,本质上是等价的,都是向window对象注入属性或者方法. // global.js var g_name = "aty"; window.g_age = 25; 当global.js加载的时候,浏览器的全局对象window就会多出2个属性:g_name和g_age. 我们编写一个js工具类或者是js框架,通常有2种方式: 方式1:dateUtil.js (function(window) { var DateUtils = {};

JavaScript模块化:使用requireJS按需加载

模块加载器的概念可能稍微接触过前端开发的童鞋都不会陌生,通过模块加载器可以有效的解决这些问题: JS文件的依赖关系. 通过异步加载优化script标签引起的阻塞问题 可以简单的以文件为单位将功能模块化并实现复用 主流的JS模块加载器有requireJS,SeaJS等,加载器之间可能会因为遵循的规范不同有微妙的差别,从纯用户的角度出发,之所以选requireJS而不是SeaJS主要是因为: 功能实现上两者相差无几,没有明显的性能差异或重大问题. 文档丰富程度上,requireJS远远好于SeaJS

requireJs的模块加载和依赖机制的分析和简单实现。

requireJs的文件加载和依赖管理确实非常好用,相信大家都有这个体会.在此之前,我们的html文件头部总是要有一长串的script标签来引入js文件,并且还必须非常注意script标签的先后顺序. 这篇文章对requireJs的核心功能做了简单实现,希望能帮助大家更好理解requireJs. 下面的思路是我参考了requireJs 0.0.7版本实现的.之前有尝试理解当前版本的requireJs的源码,不过最后发现,这特么不是短时间能搞的定的. 无奈之下找了github上先前较早的版本,那时

Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新

Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新 摘自: https://blog.csdn.net/johnson_moon/article/details/78874499 2017年12月22日 16:20:29 阅读数:868 标签: javalogback日志配置文件logback-xm 更多 个人分类: Java日志 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/johnson_moon/article/d

两种方法实现在HTML页面加载完毕后运行某个js

两种方法实现在HTML页面加载完毕后运行某个js 这篇文章主要介绍了通过两种方法实现在HTML页面加载完毕后运行某个js,需要的朋友可以参考下 js方法: 复制代码 代码如下: <script type="text/javascript"> window.onload=function(){ var userName="xiaoming"; alert(userName); } </script> 以下为jQuery方法,需要引用jQuery

EasyUI的window加载的页面不执行js问题说明

http://364434006.iteye.com/blog/1671907 —————————————————————————————————————————————————————————————————————— 解决方案:将被加载页面中的body标签删掉. 说明:window.dialog.tab都是panel,加载内容的方式都有硬编码和通过url来加载外部html片段,这里html片段就是body标签里面的代码. 详细参见: http://easyui.btboys.com/post

此编译单元不包含在frame元数据中指定的factoryClass,无法加载配置的运行时共享库

警告:此编译单元不包含在frame元数据中指定的factoryClass,无法加载配置的运行时共享库.要在没有运行时共享库的情况下进行编译,请将 -static-link-runtime-shared-libraries  选项设置为true, 或删除 -runtime-shared-libraries 选项. 通过修改FlashBuilder4\Adobe Flash Builder 4\sdks\4.0.0\frameworks  下的flex-config.xml,将 <static-li

关于AMD(异步加载模块)和CMD(同步加载模块),require.js

1.CommonJS,有一个全局性方法require(),用于加载模块.假定有一个数学模块math.js,就可以像下面这样加载. var math = require('math'); 然后,就可以调用模块提供的方法: var math = require('math'); math.add(2,3); // 5 第二行math.add(2, 3),在第一行require('math')之后运行,因此必须等math.js加载完成.也就是说,如果加载时间很长,整个应用就会停在那里等. 这对服务器端

如何解决requireJs的模块加载超时

requireJs的加载是一种异步机制,它加载js的时候有个默认的超时机制,因为网络原因或者资源找不到等原因引起的 可以修改配置参数waitSeconds (默认为7秒,可以设置为0表示永远不超时,或者大一点的数字) require.config({ paths: { "jquery": "jquery-1.9.min" }, waitSeconds: 15 });