使用 Require.js 引用第三方框架时遇到的一些情况
使用 Require.js 引用第三方框架时遇到的一些情况
在使用Require.js解析依赖的时候,会出现以下几种情况:
程序中的依赖关系 当前程序 依赖于 B包, B包 依赖于 A包
A包与B包两者都支持AMD,此时不需要任何操作:
//B.js
define(['A'],function(a){
//code in module B
})
A包与B包两者都不支持AMD,此时,有以下两种解决方案:
修改库,使之支持AMD(这也是Sea.js中让人深恶痛绝的一点)
使用Shim的deps和exports,此时全局变量依然可用,这样可以防止出现奇怪的依赖问题
//main.js
require.config({
//other configurations
shim{
'B':{
deps:['A'],
exports:'B'
},
'A':{
exports:'A'
}
}
}); //B.js
var B = new function(){
var a = new A();
//code for B
} //A.js
var A = new function(){
//code for A
}
A包不支持AMD,而B包支持AMD,此时只需要用shim把A包导入到require环境中,不需要任何其他操作。
A支持AMD,而B包不支持AMD,这个时候,由于在引用的时候监测到为AMD的环境,
所以有的框架就不会创建全局变量了,而B包并不支持AMD,它还是使用的全局变量,
这个时候,就会出现无法引用的情况了。解决方案也很简单。就是在B包的shim配置中,
加上init方法,并在init里将A包的变量设置成全局的://main.js
require.config({
//other configurations
shim{
'B':{
deps:['A'],
exports:'B',
init:function(A){
window.A = A;
}
}
}
});
在引用angular.js的时候,需要在对应的html页面中把ng-app去掉,而在声明完angular模块的时候,
使用angular.bootstrap手动启动angular才行,否则会报错,特别是在与其他模块同时使用的时候。
//myapp.js
require(['angular','jquery'],function(angular,$){
var app = angular.module('MyApp', []);
//your code in module
angular.bootstrap(document,['MyApp']);
});
以上就是我初次使用requirejs管理包的时候出现的一些问题。
使用 Require.js 引用第三方框架时遇到的一些情况的更多相关文章
- 引用第三方框架 不支持ARC
我们会常常遇到一个问题就是引用第三方框架之后发现不支持内存的自己主动处理(ARC) 我们须要这样来操作: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdT ...
- iOS开发中遇到的错误整理 - 集成第三方框架时,编译后XXX头文件找不到
iOS编译报错-XXX头文件找不到 错误出现的情况: 自己在继承第三方的SDK的时候,明明导入了头文件,但是系统报错,提示头文件找不到 解决方法 既然系统找不到,给他个具体路径,继续找去! 路径就填写 ...
- js操作iframe框架时应该屡清楚的一些概念
1.获取iframe的window对象 存在跨域访问限制. iframeElement.contentWindow 兼容 2.获取iframe的document对象 存在跨域访问限制. chrome: ...
- html-jquery/js引用外部图片时遇到看不了或出现403情况解决方法
<script type="text/javascript"> function showImg(url) { var frameid = 'frameimg' + M ...
- require.js 入门笔记
网站越来越庞大,JS也是越写越多. 当所有的JS 都集中在 HTML的 head 部分时,网页加载变得很慢,很多的 JS代码也并不是全都适用在当前的页面,造成了代码的冗余度非常高. 而且长长的JS代码 ...
- React-Native 之 GD (一)目录结构与第三方框架使用与主题框架搭建
1.APP效果图 2.工程环境配置 IOS: 将压缩包内的 Images.xcassets 文件夹直接替换掉我们iOS工程中的 Images.xcassets 文件夹. 这时候我们可以看到所有图片资源 ...
- VS中引用第三方库的方法(配置sqlite数据库)
我们在编写程序时,,不可避免的会使用第三方的库文件,很少使用源文件(.cpp),大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll),比如我们写程序用的iostream这个库, ...
- require.js初试(with angular & optimization)
如果你只是想找一款称手的js加载器,可以参考这篇js loader benchmarks(http://artzstudio.com/files/Boot/test/benchmarks/script ...
- r.js合并实践 --项目中用到require.js做生产时模块开发 r.js build.js配置详解
本文所用源代码已上传,需要的朋友自行下载:点我下载 第一步: 全局安装 npm install -g requirejs 第二步: 1.以下例子主要实现功能, 1)引用jq库获取dom中元素文本, ...
随机推荐
- 关于百度鹰眼中 xcode 7 编译报错问题
请把 这个地方改为 YES 否则demo 不能运行
- SignalR2.0开发实例之——群发消息
一.前言 ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相 ...
- C# 扩展方法克隆实体类
using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Ru ...
- Win7中,取消共享文件夹后有个小锁
用过windows7的朋友都知道,Windows 7 中设置某一个文件夹属性为共享后,文件夹的图标上就增加一个小锁图案.起到了一个标记作用,挺好的.但是即使你将该文件夹的共享功能取消后,该小锁图案还是 ...
- VBoxManage.exe: error: Resize hard disk operation for this format is not implemented yet!
VirtualBox虚拟磁盘空间不够了,默认10G.想扩大,图形界面下没有找到可操作菜单.Google了一下用 Vbox自带的命令工具VBoxManage即可解决. C:\Program Files\ ...
- Linux iostat监测IO状态(转)
Linux iostat监测IO状态 2010-03-1 | 13:13分类:Linux,技术细节 | 标签:Linux | 53,945 views Linux系统出现了性能问题,一般我 ...
- 关于Fragment与Activity的想法
View,Fragment,Activity,ListView等都会涉及到Layout文件 不要从Layout来考虑,而是从Activity,Fragment,来考虑,Layout只是他们的一个属性 ...
- 试用mysql的infobright引擎
海量数据分析处理,向来比较头疼费劲,特别是项目资金不允许的情况下,都是优先考虑开源软件,2007使用mysql,2009年尝试greenplum(公司最终选用oracle),20 ...
- bzoj2243-染色(动态树lct)
解析:增加三个变量lc(最左边的颜色),rc(最右边的颜色),sum(连续相同颜色区间段数).然后就是区间合并的搞法.我就不详细解释了,估计你已经想到 如何做了. 代码 #include<cst ...
- 你了解JS执行过程吗?
正如我们了解的一样,当我们书写了JS程序之后,打开浏览器,我们的代码就可以开始运行了(当然保证你的代码没有问题,才能按照你的预期进行执行).刚才说的是JS执行的一个大的环境,今天我们学习一下, ...