CDN(翻译)
http://dojotoolkit.org/documentation/tutorials/1.10/cdn/index.html
从CDN上加载dojo模块时非常有用的。从CDN上加载Dojo并同时加载本地的模块看起来似乎不可能的,但在本教程中,我们将学习怎么达到本目的。
介绍
曾几何时,从CDN上加载dojo模块是很有用的。例如创建你一个简单的测试方案并且可以随时运行,或者提供易于分发和运行的代码。但直接从CDN上加载dojo,基于路径配置的本地自定义模型就不容易加载使用了。为了能够让CDN和本地自定义模型一起运行,需要在dojo上设置一些配置信息。
通过研究对比发现,使用CDN比使用本地托管的dojo库的性能表现差。特别是运用本地托管时,能够明显的减少HTTP请求次数。如果你是为了使用CDN来提高性能,那么你就要仔细衡量了。
加载我们的模块
使用cdn加载dojo模块,创建一个简单的页面,代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
</head>
<body>
<script data-dojo-config="async: 1"
src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
</body>
</html>
该代码设置了AMD(异步模块定义)机制打开,并可以加载dojo模块了。
在1.7版本之前,如果要跨域的话,需要加载dojo.xd.js。由于AMD的原生态支持跨域加载,所以这个就不在需要了。注意在脚本URL地址中有没有http:;this means that the same protocol will be used to load from the CDN as is used for the current page (i.e. if the current page loads over HTTPS, so will the code from the CDN).
下面我们要确认dojo是否可以访问本地的dojo/resources/blank.html文件,我们使用加载模块的方法测试是否能够访问该模块。代码如下。
<script data-dojo-config="async: 1, dojoBlankHtmlUrl: '/path/to/blank.html'"
src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
下面我们需要定义本地包的路径。
<script data-dojo-config="async: 1, dojoBlankHtmlUrl: '/blank.html',
packages: [ {
name: 'custom',
location: location.pathname.replace(/\/[^/]+$/, '') + '/js/custom'
} ]"
src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
Note that the local package location is using a little JavaScript trickery to create an absolute path that is derived from the path of the current HTML file.
注意,我们用了一小段javascript的欺骗性的代码,创建了一个可以连接到html文件的相对路径。在dojo1.10中,使用相对路径加载模块时一个非常正确的选择。这在dojoBlankHtmlUrl上也适用。如何可以,我们就可以定于本地的包,并加载模块。我们就可以像加载普通模块一样加载我们自己定义的模块了。
require([ 'custom/thinger' ], function(thinger){ … });
注意事项
Unlike the old Dojo loader, nothing different needs to be done when using built modules from CDN. However, there is an issue that you may run into when using Dojo loaded from CDN:
- Attempting to load unbuilt, remote AMD modules that use the
dojo/textplugin will fail due to cross-origin security restrictions. (Built versions of AMD modules are unaffected because the calls todojo/textare eliminated by the build system.)
不同于以前的dojo加载器,在使用CDN上的dojo库时和使用本地的库没有什么区别。然后一般在cdn上调用dojo的时候,也会碰到一些常见的问题。
结论
CDN-based versions of Dojo can be useful in some circumstances. By making a few simple configuration changes, it is possible to use custom local modules while loading Dojo from a CDN, thanks to the new AMD-based module system.
链接
- Dojo configuration reference guide
- More information on the library CDNs that Dojo uses: Google CDN and Yandex CDN.
CDN(翻译)的更多相关文章
- 【翻译】浅析为何使用融合CDN是大趋势
使用传统CDN的用户遇到的新问题 随着云计算时代的快速发展,尤其是流媒体大视频时代的到来,用户在是使用过往CDN节点资源调配将面临很多问题: 问题1: 流媒体时代不局限于静态内容分发,直播点播等视频服 ...
- MVC学习系列14--Bundling And Minification【捆绑和压缩】--翻译国外大牛的文章
这个系列是,基础学习系列的最后一部分,这里,我打算翻译一篇国外的技术文章结束这个基础部分的学习:后面打算继续写深入学习MVC系列的文章,之所以要写博客,我个人觉得,做技术的,首先得要懂得分享,说不定你 ...
- 网页3D引擎“Babylon.JS”入门教程翻译总结
使用三个月的业余时间把官方教程的入门部分译为中文并上传到github,在下一步编程前做一个总结. 历程: 最早接触游戏编程是在大三下学期,用汇编语言和实验室里的单片机.触摸屏.电机(提供声效)编的打地 ...
- CDN——到底用还是不用?
最近在学bootstrap,在知乎上搜索bootstrap看到有人问bootstrap基础包体积较大,对性能影响会不会很大,看到两种方法来减少对性能的影响: 有选择地部分加载,bootstrap带有L ...
- 利用javascript和WebGL绘制地球 【翻译】
利用javascript和WebGL绘制地球 [翻译] 原翻译:利用javascript和WebGL绘制地球 [翻译] 在我们所有已知的HTML5API中,WebGL可能是最有意思的一个,利用这个AP ...
- 分布式还是混合式? 谈CDN架构对服务质量的影响
传统分布式模型 通 常,内容分发网络(CDN)採用分布式模型.在这样的模型里, 用户的文件存放在一个源server上.而且由大量边缘server负责分发这些文件.这些边缘server的磁盘空间比較小. ...
- 【技术干货】听阿里云CDN安防技术专家金九讲SystemTap使用技巧
1.简介 SystemTap是一个Linux非常有用的调试(跟踪/探测)工具,常用于Linux 内核或者应用程序的信息采集,比如:获取一个函数里面运行时的变 量.调用堆栈,甚至可以直接修改变量的值, ...
- 【翻译】基于web创建逼真的3D图形 | CSS技巧
个人翻译小站:http://www.zcfy.cc/article/creating-photorealistic-3d-graphics-on-the-web-css-tricks-4039.htm ...
- Livepeer中文白皮书(翻译)
Livepeer Whitepaper 分布式视频流媒体传输协议及经济激励 Doug Petkanics doug@livepeer.org Eric Tang eric@livepeer.org 翻 ...
随机推荐
- [Java coding] leetcode notes
1, 如何不排序而找到最大,次大或者最小值? var int max1, max2, min1; iterate array once: update max1, max2, min1, for ex ...
- 软件测试第二次作业——Fault,Failure,Error辨析与设计测试用例
Fault 静态错误 ,Failure 外部错误 ,Error 内部错误 问题答案 第一题 1.1 当数组x内的元素≥2时,该循环不会检测到x[0]这个元素. 1.2 test: x=[2, 3, 2 ...
- android view : window
既然是view,为什么要说window,实际上着是一个很有用的东西,在展现view和设计界面上很有用,就比如说悬浮窗 但是这时候又要分清楚一个概念,window到底是什么?在activity中说过了我 ...
- JavaScript闭包模型
JavaScript闭包模型 ----- [原创翻译]2016-09-01 09:32:22 < 一> 闭包并不神秘 本文利用JavaScript代码来阐述闭包,目的是为了使普通 ...
- MySql数据库忘记root密码
以windows为例: 1. 关闭正在运行的MySQL服务.(services.msc运行停止服务) 2. 打开DOS窗口,转到mysql\bin目录.(输入cd..返回到c盘根目录下,一般MySQL ...
- MCMC: The Metropolis Sampler
本文主要译自 MCMC: The Metropolis Sampler 正如之前的文章讨论的,我们可以用一个马尔可夫链来对目标分布 \(p(x)\) 进行采样,通常情况下对于很多分布 \(p(x)\) ...
- mysql 内存相关文章
简单计算:http://www.mysqlcalculator.com/ 相关文档:http://mingxinglai.com/cn/2016/04/mysql-memory-usage-formu ...
- LintCode StrStr
1. 讨论目标字符串若为空, 则返回-1: 资源字符串若为空, 则返回-1. 2.讨论目标字符串个数为零, 则返回0: 资源字符串个数为零, 则返回-1. 3. 插入旗帜来使第二循环的结束为有条件地返 ...
- 动态生成元素动作绑定,jquery 1.9如何实现
1.7后增加了 live()1.9后被移除了 网上说可以用 on() 代替 可以实际在动态生成元素上绑定动作,没效果,求解绝方法(用低版本的jQuery这种方法,求别说..) 答: 之前有老兄回答过类 ...
- 集合框架(JCF/Java Collection Framework)
集合的特点:1.数据的类型可以不同2.集合长度可变3.空间不固定集合也是对象,用于检索,存储以及传输对象集合框架的组成Collection接口和Map接口 Collection是Set接口和List接 ...